Rozważ mały parametr kształtu pobliżu 0, taki jak . W zakresie między 0 i , około , a więc jest w przybliżeniu gamma PDF . Można to zintegrować z przybliżonym CDF, . Odwracając go, widzimy potęgę : ogromny wykładnik. Dla powoduje to pewną szansę na niedopełnienie (wartość podwójnej precyzji mniejsza niż , więcej lub mniej). Oto wykres szansy na niedomiar w zależności od logarytmu dziesięciu podstawα = 1 / 100 α e - α 1 x α - 1 d x / Γ ( α ) F a ( x ) = x ααα=1/100αe−α1xα−1dx/Γ(α) 1/αα=1/10010-300αFα(x)=xααΓ(α)1/αα=1/10010−300α :
Jednym z rozwiązań jest wykorzystanie tego przybliżenia do generowania zmiennych log (Gamma): w efekcie spróbuj wygenerować zmienną Gamma, a jeśli jest ona zbyt mała, wygeneruj jej logarytm z przybliżonego rozkładu mocy (jak pokazano poniżej). (Wykonuj tę czynność wielokrotnie, aż dziennik znajdzie się w zakresie niedomiaru, aby był to prawidłowy zamiennik oryginalnej wariacji niedomiaru.) W obliczeniach Dirichleta odejmij maksimum wszystkich logarytmów od każdej wartości logu: domyślnie przeskaluje się wszystkie Gamma zmienia się, więc nie wpłynie to na wartości Dirichleta. Traktuj każdy wynikowy dziennik, który jest zbyt mały (powiedzmy, mniejszy niż -100), jako dziennik prawdziwego zera. Potęguj inne dzienniki. Teraz możesz kontynuować bez niedomiaru.
To potrwa jeszcze dłużej niż wcześniej, ale przynajmniej zadziała!
Aby wygenerować przybliżony log Gamma, należy zmienić za pomocą parametru kształtu , obliczenie wstępne . Jest to łatwe, ponieważ istnieją algorytmy do obliczania wartości log Gamma bezpośrednio . Wygeneruj jednolity losowy zmiennoprzecinkowy od 0 do 1, weź jego logarytm, podziel przez i dodaj do niegoC = log ( Γ ( α ) ) + log ( α ) α CαC=log(Γ(α))+log(α)αC
Ponieważ parametr skali jedynie przeskalowuje zmienną, nie ma problemu z dostosowaniem jej w tych procedurach. Nie potrzebujesz go nawet, jeśli wszystkie parametry skali są takie same.
Edytować
W innej odpowiedzi OP opisuje metodę, w której moc wariantu jednolitego (zmienna ) jest mnożona przez . Działa to, ponieważ pdf wspólnej dystrybucji tych dwóch wariantów jest równy . Aby znaleźć pdf , podstawiamy , dzielimy przez jakobian i integrujemy . Całka musi zawierać się w przedziale od do ponieważ , skąd1/αB(α)Γ(α+1)(αxα−1)(yαe−ydy/Γ(α+1))z=xyy→z/xxxz∞0≤y≤1
pdf(z)=αΓ(α+1)∫∞z(xα/x)e−x(z/x)α−1dxdz=1Γ(α)zα−1e−zdz,
który jest pdf dystrybucji .Γ(α)
Chodzi o to, że gdy , wartość narysowana z jest mało prawdopodobna, a sumując log i razy log niezależnego munduru zmieniamy będzie miał zmienną . Dziennik będzie prawdopodobnie bardzo negatywny, ale ominiemy konstrukcję jego antilogu, który spadnie w reprezentacji zmiennoprzecinkowej.0<α<1Γ(α+1)1/αΓ(α)