Dessin de la distribution Dirichlet


25

Disons que nous avons une distribution de Dirichlet avec le paramètre de vecteur dimension . Comment puis-je tirer un échantillon (un vecteur dimensionnel) de cette distribution? J'ai besoin d'une explication (éventuellement) simple.α = [ α 1 , α 2 , . . . , α K ]Kα=[α1,α2,...,αK]K

Réponses:


25

Tout d'abord, tirez échantillons aléatoires indépendants y 1 , , y K à partir de distributions gamma chacune avec une densitéKy1,,yK

Gamma(αje,1)=yjeαje-1e-yjeΓ(αje),

puis définissez

Xje=yjej=1Kyj.

X1,...,XK

La page Wikipedia sur la distribution Dirichlet vous indique exactement comment échantillonner à partir de la distribution Dirichlet.

De plus, dans la Rbibliothèque, MCMCpackil existe une fonction d'échantillonnage des variables aléatoires de la distribution de Dirichlet.


2
La mise en œuvre de la fonction de génération aléatoire à partir de Dirichlet peut également être financée
Tim

2

Une méthode simple (bien qu'imprécise) consiste à utiliser le fait que dessiner une distribution de Dirichlet est équivalent à l'expérience de l'urne de Polya. (Dessiner à partir d'un ensemble de boules colorées et chaque fois que vous dessinez une balle, vous la remettez dans l'urne avec une deuxième balle de la même couleur)

αje

Ensuite :

répéter N fois

αje

αje

répéter la fin

α

Si je ne me trompe pas, cette méthode est asymptotiquement exacte. Mais puisque N est fini, vous ne dessinerez JAMAIS des distributions avec de très faibles probabilités a priori (alors que vous devriez les dessiner avec une très petite fréquence). Je suppose que cela pourrait être satisfaisant dans la plupart des cas avec N = K.10.


Je soupçonne que c'est la façon dont np.random.dirichletest implémentée, car elle génère des zéros exacts dans les vecteurs de probabilité échantillonnés, bien que ces vecteurs n'appartiennent à aucun support Dirichlet. C'est ce qui m'a amené ici.
Eli Korvigo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.