我想绘制一个alpha = 29(比例)和beta = 3(大小)的伽马分布。换句话说,我想为Gamma绘制pdf(29,3)。如果根据documentation,python gamma函数只有参数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()
答案 0 :(得分:11)
根据文档,你想使用scale参数(theta),但由于你定义了beta,这是theta的倒数,那么你传递的值为1 / beta,在你的例子中是1/3或0.33333。
因此,请尝试:
y1 = stats.gamma.pdf(x, a=29, scale=0.33333)
答案 1 :(得分:1)
正如@Hielke回答的那样,根据scipy.stats 1.4.1 documentation中的解释,标量参数似乎等于beta。确实,最初开发的功能是:
gamma.pdf(x, a) = x^(a-1) * exp(-x) / gamma(a)
如果用两个可选参数 loc 和 scale 的组合替换 x :
x = (y - loc) / scale
应该有一个:
gamma.pdf(x, a) = (y - loc)^(a-1) * exp( -(y - loc)/scale ) / (scale^(a-1) * gamma(a))
如果采用 loc = 0 ,则可以识别通常定义的Gamma分布表达式。乘以 scale 的倒数,可以得出结论,该函数中的 scale = beta 和 loc是偏移量。
实际上,我已尝试详细说明文档说明:
具体来说,gamma.pdf(x,a,loc,scale)等同于 gamma.pdf(y,a)/ y =(x-loc)/比例尺。
答案 2 :(得分:0)
这不是严格的问题答案,但是当在Python中搜索带有alpha和beta参数的R qgamma
等效项时会出现此问题。因此,请注意:
R:
qgamma(0.025, 5, 41.3)
Python:
from scipy.stats import gamma
gamma.ppf(0.025, 5, scale=1/41.3)