Как построить гамма-распределение с параметрами альфа и бета в питоне

Я хочу построить гамма-распределение с альфа = 29 (масштаб) и бета = 3 (размер). Другими словами, я хочу построить PDF для Gamma(29,3). Как это сделать, если согласно документации гамма-функция python имеет только параметры a и x, а параметр size не существует?

я думал loc была бета, но я думаю, что это на самом деле смещение, поэтому код ниже неправильный...

import numpy as np
import scipy.stats as stats 
from matplotlib import pyplot as plt

x = np.linspace (0, 100, 200) 
y1 = stats.gamma.pdf(x, a=29, loc=3) #a is alpha, loc is beta???
plt.plot(x, y1, "y-", label=(r'$\alpha=29, \beta=3$')) 


plt.ylim([0,0.08])
plt.xlim([0,150])
plt.show()

1 ответ

Решение

Согласно документации, вы хотите использовать параметр масштаба (тета), но так как вы определяете бета, которая является обратной к тета, вы передаете шкалу со значением 1/ бета, которое в вашем примере будет 1/3 или 0,33333.

Поэтому попробуйте:

y1 = stats.gamma.pdf(x, a=29, scale=0.33333)

Как ответил @Hielke, насколько объяснено в документации scipy.stats 1.4.1, кажется, что скалярный параметр равен бета. Действительно, изначально разработанная функция:

gamma.pdf(x, a) = x^(a-1) * exp(-x) / gamma(a)

Если заменить x комбинацией двух необязательных параметров loc и scale, как:

x = (y - loc) / scale

Надо иметь:

gamma.pdf(x, a) = (y - loc)^(a-1) * exp( -(y - loc)/scale ) / (scale^(a-1) * gamma(a))

Если вы возьмете loc = 0, то вы узнали выражение гамма-распределения, как обычно определено. Вы умножаете на обратную шкалу, и вы можете заключить, что scale = beta в этой функции, а loc - смещение.

На самом деле я попытался подробно описать объяснение документации:

В частности, gamma.pdf(x, a, loc, scale) идентично gamma.pdf(y, a) / scale с y = (x - loc) / scale.

Это не строго ответ на вопрос, но он возникает при поиске эквивалента для R qgammaс параметрами альфа и бета в Python. Так что просто примечание:

R:
qgamma(0.025, 5, 41.3)

Python:
from scipy.stats import gamma
gamma.ppf(0.025, 5, scale=1/41.3)
Другие вопросы по тегам