Как построить гамма-распределение с параметрами альфа и бета в питоне
Я хочу построить гамма-распределение с альфа = 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)