如何在python中使用alpha和beta参数绘制gamma分布

时间:2017-02-10 03:24:48

标签: python numpy matplotlib scipy gamma-distribution

我想绘制一个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()

3 个答案:

答案 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)