Рассмотрим небольшой параметр формы около 0, такой как . В диапазоне между 0 и , приблизительно , так что гамма PDF приблизительно . Это может быть интегрировано в приблизительный CDF, . Обращая его, мы видим степень : огромный показатель. Для это вызывает некоторую вероятность недостаточного значения (значение двойной точности меньше , более или менее). Вот график вероятности недосыпания в зависимости от логарифма по основанию-десяти& alpha ; = 1 / 100 & alpha ; е - & alpha ; 1 х & alpha ; - 1 г х / Γ ( & alpha ; ) F & alpha ; ( х ) = х & alpha ;αα=1/100αe−α1xα−1dx/Γ(α) 1/& alpha& alpha=1/10010-300& alphaFα(x)=xααΓ(α)1/αα=1/10010−300α :
Одно из решений состоит в том, чтобы использовать это приближение для генерации логарифмических (гамма-вариаций): по сути, попробуйте сгенерировать гамма-вариацию и, если она слишком мала, сгенерировать ее логарифм из этого приблизительного распределения мощности (как показано ниже). (Повторяйте это до тех пор, пока журнал не окажется в пределах диапазона недостаточного заполнения, чтобы он являлся допустимой заменой исходной переменной пониженного значения.) Для вычисления Дирихле вычтите максимум всех логарифмов из каждого значения журнала: это неявно изменяет масштаб всех гамма изменяется, поэтому она не влияет на значения Дирихле. Обрабатывайте любой получающийся журнал, который слишком мал (скажем, меньше -100), как журнал с истинным нулем. Экспонировать другие журналы. Теперь вы можете продолжить без потери.
Это займет еще больше времени, чем раньше, но по крайней мере это сработает!
Чтобы сгенерировать приблизительный журнал Gamma варьировать с параметром формы , предварительно вычислите . Это легко, потому что существуют алгоритмы для непосредственного вычисления значений log Gamma . Создайте случайное число с плавающей точкой между 0 и 1, возьмите его логарифм, разделите на и добавьте к немуαC=log(Γ(α))+log(α)αC
Поскольку параметр масштаба просто изменяет масштаб переменной, нет проблем с его размещением в этих процедурах. Вам даже не нужно, если все параметры шкалы одинаковы.
редактировать
В другом ответе OP описывает метод, в котором степень равномерной переменной (переменная ) умножается на переменную . Это работает, потому что 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 дистрибутива .Γ(α)
Все дело в том, что когда , значение, полученное из , вряд ли будет недооценено, и, суммируя его log и раз логарифм независимой равномерной переменной, мы будет иметь журнал изменений . Журнал, скорее всего, будет очень отрицательным, но мы обойдем конструкцию его антилога, который будет потерян в представлении с плавающей запятой.0<α<1Γ(α+1)1/αΓ(α)