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.
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.
Yanıtlar:
İlk olarak, her biri yoğunluklu Gamma dağılımlarından bağımsız rasgele örnekler .
ve sonra ayarlayın
Şimdi, bir Dirichlet dağılımını takip edecek
Dirichlet dağılımına Vikipedi sayfası tam olarak nasıl Dirichlet dağıtımından örnek anlatır.
Ayrıca, R
kütüphanede MCMCpack
rastgele değişkenlerin Dirichlet dağılımından örneklenmesi için bir işlev vardır.
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 .
Sonra :
N kere tekrar et
-> multinomial dağılımını kullanarak bir i çizin
-> 1'e
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.
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.