Kérdés:
Dirichlet eloszlásból merítve
user1315305
2013-09-04 21:15:44 UTC
view on stackexchange narkive permalink

Tegyük fel, hogy van egy Dirichlet-eloszlásunk, amelynek $ K $ -dimenziós vektorparamétere $ \ vec \ alpha = [\ alpha_1, \ alpha_2, ..., \ alpha_K] $. Hogyan rajzolhatok mintát (egy $ K $ -dimenziós vektor) ebből az eloszlásból? Szükségem van egy (esetleg) egyszerű magyarázatra.

Kettő válaszokat:
user25658
2013-09-04 21:20:36 UTC
view on stackexchange narkive permalink

Először rajzolj $ K $ független véletlen mintát $ y_1, \ ldots, y_K $ a sűrűségű Gamma-eloszlásokból

$$ \ textrm {Gamma} (\ alpha_i, 1) = \ frac { y_i ^ {\ alpha_i-1} \; e ^ {- y_i}} {\ Gamma (\ alpha_i)}, $$

, majd állítsa be

$$ x_i = \ frac {y_i} {\ sum_ {j = 1} ^ K y_j}. $$

Most $ x_1, ..., x_K $ követni fogja a Dirichlet terjesztést.

A Wikipedia oldal a Dirichlet disztribúcióban pontosan megmondja, hogyan mintát venni a Dirichlet terjesztésből.

Az R könyvtárban MCMCpack is található egy funkció a véletlen változók mintavételezésére a Dirichlet terjesztésből.

A Dirichlet véletlenszerű generálásának függvényét a https://cran.r-project.org/web/packages/extraDistr/ oldalon is finanszírozhatjuk.
Arnaud Mégret
2018-08-30 18:10:29 UTC
view on stackexchange narkive permalink

Egy egyszerű módszer (bár nem pontos) abból áll, hogy a Dirichlet-eloszlás megrajzolása egyenértékű a Polya urnakísérletével.(Színes gömbkészletből rajzolva, és minden alkalommal, amikor golyót rajzol, visszateszi az urnába egy második azonos színű golyóval)

Tekintsük a $ \ alpha_i $ Dirichlet-paramétereit egy nem normalizált eloszlásnak az i felett.

Akkor:

ismételje meg N-szer

-> rajzoljon i-t a $ \ alpha_i $ multinomiális terjesztés

használatával

-> adjon 1-et a következőhöz: $ \ alpha_i $

ismétlés befejezése

Normalizálja a $ \ alpha $ -ot a terjesztés megszerzéséhez

Ha nem tévedek, ez a módszer aszimptotikusan pontos.De mivel N véges, SOHA nem rajzol meg néhány elosztást nagyon kis elõzõ valószínûséggel (miközben nagyon kis frekvenciával kell megrajzolnia).Gondolom, a legtöbb esetben kielégítő lehet N = K.10 esetén.

Gyanítom, hogy az `np.random.dirichlet` megvalósítása így történik, mert pontos nullákat generál a mintavételezett valószínűségi vektorokban, bár ezek a vektorok nem tartoznak egyetlen Dirichlet-támogatáshoz sem.Ez juttatott ide.


Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...