如何在 python 中绘制带有 alpha 和 beta 参数的伽马分布

How to plot gamma distribution with alpha and beta parameters in python

我想绘制 alpha = 29(比例)和 beta = 3(大小)的伽马分布。换句话说,我想绘制 Gamma(29,3) 的 pdf。如果根据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()

根据文档,您想使用比例参数 (theta),但由于您定义的是 beta,它是 theta 的倒数,因此您传递的比例值为 1/beta,在您的例如 1/3 或 0.33333.

因此,尝试:

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

正如@Hielke 所回答的那样,根据 scipy.stats 1.4.1 documentation 中的解释,标量参数似乎等于 beta。确实,原来开发的功能是:

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

如果用两个可选参数 locscale 的组合替换 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 是一个 offset

其实我已经尽力详细说明文档了:

Specifically, gamma.pdf(x, a, loc, scale) is identically equivalent to gamma.pdf(y, a) / scale with y = (x - loc) / scale.

这不是问题的严格答案,但在 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)