Załóżmy, że mamy rozkład Dirichleta z parametrem wektora wymiarowego . Jak narysować próbkę ( wektor wymiarowy) z tego rozkładu? Potrzebuję (możliwie) prostego wyjaśnienia.
Załóżmy, że mamy rozkład Dirichleta z parametrem wektora wymiarowego . Jak narysować próbkę ( wektor wymiarowy) z tego rozkładu? Potrzebuję (możliwie) prostego wyjaśnienia.
Odpowiedzi:
Najpierw narysuj niezależnych losowych próbek z rozkładów gamma, każda o gęstości
a następnie ustawić
Strona Wikipedii w dystrybucji Dirichleta dokładnie informuje, jak próbkować z dystrybucji Dirichleta.
Ponadto w R
bibliotece MCMCpack
znajduje się funkcja próbkowania losowych zmiennych z rozkładu Dirichleta.
Prosta metoda (choć nie jest dokładna) polega na tym, że narysowanie rozkładu Dirichleta jest równoważne eksperymentowi urny Poli. (Rysowanie z zestawu kolorowych kulek i za każdym razem, gdy losujesz piłkę, wkładasz ją z powrotem do urny drugą piłką tego samego koloru)
Następnie :
powtórz N razy
-> dodaj 1 do
koniec powtórz
Jeśli się nie mylę, metoda ta jest asymptotycznie dokładna. Ale ponieważ N jest skończone, NIGDY nie rysujesz niektórych rozkładów z bardzo małymi wcześniejszymi prawdopodobieństwami (podczas gdy powinieneś rysować je z bardzo małą częstotliwością). Myślę, że w większości przypadków może być satysfakcjonujące, gdy N = K.10.
np.random.dirichlet
implementacji, ponieważ generuje dokładne zera w próbkowanych wektorach prawdopodobieństwa, chociaż takie wektory nie należą do żadnego wsparcia Dirichleta. To mnie tu sprowadziło.