과 같이 0 근처 의 작은 모양 매개 변수 고려하십시오 . 0에서 사이의 범위 에서 는 대략 이므로 감마 pdf는 대략 입니다. 이것은 대략적인 CDF, 있습니다. 그것을 뒤집 으면, power : 거대한 지수 가 보입니다 . 를 들어 (이하 이중 정밀도 값이 언더 플로우의 일부 기회의 원인 더 이하). 다음은 밑이 10 인 로그의 함수로 언더 플로가 발생할 가능성에 대한 그림입니다.α = 1 / 100 α E - α 1 X α - (1) (D) X / Γ ( α ) F α ( X ) = X ααα=1/100αe−α1xα−1dx/Γ(α) 1/αα=1/10010-300αFα(x)=xααΓ(α)1/αα=1/10010−300α :
한 가지 해결책은 log (Gamma) 변이를 생성하기 위해이 근사법을 이용하는 것입니다. 사실상, 감마 변이를 생성하려고 시도하고 너무 작 으면이 근사 전력 분포에서 로그를 생성하십시오 (아래 참조). 로그가 언더 플로 범위 내에있을 때까지이 작업을 반복해서 수행하면 원래 언더 플로 잉 변수를 대신 할 수 있습니다. Dirichlet 계산의 경우 각 로그 값에서 모든 로그의 최대 값을 뺍니다. 감마는 변하므로 Dirichlet 값에 영향을 미치지 않습니다. 너무 작은 결과 로그 (예 : -100 미만)는 모두 0의 로그로 취급하십시오. 다른 로그를 지수화하십시오. 이제 언더 플로없이 진행할 수 있습니다.
이것은 이전보다 훨씬 오래 걸릴 것이지만 최소한 작동합니다!
모양 매개 변수가 인 근사 로그 감마 변이를 생성하려면 사전 계산 입니다. log 감마의 값을 직접 계산 하는 알고리즘이 있기 때문에 이것은 쉽다 . 0과 1 사이의 균일 한 랜덤 유동을 생성하여 로그 분열을 및 추가 그것에.C = 로그 ( Γ ( α ) ) + 로그 ( α ) α CαC=log(Γ(α))+log(α)αC
척도 모수는 단지 변량의 척도를 재조정하기 때문에 이러한 절차에서 수용하는 데 아무런 문제가 없습니다. 모든 스케일 매개 변수가 동일한 경우에는 필요하지 않습니다.
편집하다
또 다른 대답에서 OP 는 균일 변량 ( 변량) 의 power에 변량을 곱하는 방법을 설명합니다 . 이 두 변수의 합동 분포의 pdf가 . PDF를 찾는 방법은 우리 대체 코빈 의해 제산 , 아웃 통합 . 이므로 적분은 에서 사이 여야합니다 .1/α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,
이것은 분포 의 pdf입니다 .Γ(α)
요점은 일 때 에서 가져온 값 은 언더 플로되지 않을 것이고 로그와 곱하기 독립적 인 균일 한 변이의 로그를 합하면 변수 의 로그를 갖습니다 . 로그는 매우 부정적 일 수 있지만 부동 소수점 표시에서 언더 플로 될 안티 로그의 구성을 무시했습니다.0<α<1Γ(α+1)1/αΓ(α)