Dirichlet dağılımından çizim


25

Diyelim ki -boyutlu vektör parametresi ile bir Dirichlet dağılımımız var . Bu dağılımdan bir numuneyi ( boyutlu bir vektörü) nasıl çizebilirim ? Basit bir açıklamaya ihtiyacım var.Kα=[α1,α2,...,αK]K

Yanıtlar:


25

İlk olarak, her biri yoğunluklu Gamma dağılımlarından bağımsız rasgele örnekler .Ky1,,yK

Gamma(αi,1)=yiαi1eyiΓ(αi),

ve sonra ayarlayın

xi=yij=1Kyj.

Şimdi, bir Dirichlet dağılımını takip edecekx1,...,xK

Dirichlet dağılımına Vikipedi sayfası tam olarak nasıl Dirichlet dağıtımından örnek anlatır.

Ayrıca, Rkütüphanede MCMCpackrastgele değişkenlerin Dirichlet dağılımından örneklenmesi için bir işlev vardır.


2
Dirichlet'ten rastgele üretme işlevinin uygulanması, cran.r-project.org/web/packages/extraDistr
Tim

2

Basit bir yöntem (kesin olmasa da), bir Dirichlet dağılımı çizmenin Polya'nın urn deneyine eşdeğer olduğu gerçeğinin kullanılmasıdır. (Bir dizi renkli toptan çizim yapın ve bir top çizdiğinizde, aynı renkte ikinci bir top ile semire geri koyun)

Dirichlet parametrelerinizi i üzerinde normal olmayan bir dağıtım olarak düşünün .αi

Sonra :

N kere tekrar et

-> multinomial dağılımını kullanarak bir i çizinαi

-> 1'eαi

tekrarı bitir

Dağıtımınızı almak için normalize etα

Yanılmıyorsam, bu yöntem asimptotik olarak kesindir. Ancak N sonlu olduğu için, ASLA çok küçük olasılıkları olan bazı dağıtımlar yapmazsınız (bununla birlikte çok küçük bir frekansla çizmelisiniz). N = K.10 olan çoğu durumda tatmin edici olabileceğini düşünüyorum.


Bunun np.random.dirichlet, uygulanan olasılık olduğundan şüpheleniyorum , çünkü örneklenmiş olasılık vektörlerinde kesin sıfır üretiyor, ancak bu tür vektörler herhangi bir Dirichlet desteğine ait değil. Beni burda yapan bu işte.
Eli Korvigo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.