20

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

3 回答 3

24

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

因此,尝试:

y1 = stats.gamma.pdf(x, a=29, scale=0.33333)
于 2017-02-10T03:38:31.730 回答
3

正如@Hielke 回答的那样,就 scipy.stats 1.4.1文档中的解释而言,标量参数似乎等于 beta。事实上,最初开发的功能是:

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

如果将x替换为两个可选参数locscale的组合:

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

实际上,我已尝试详细说明文档说明:

具体来说, gamma.pdf(x, a, loc, scale) 等同于 gamma.pdf(y, a) / scale y = (x - loc) / scale。

于 2020-03-16T14:02:31.370 回答
0

这不是对问题的严格回答,但是当qgamma在 Python 中搜索具有 alpha 和 beta 参数的 R 等效项时会出现这种情况。所以只是一个注释:

R:
qgamma(0.025, 5, 41.3)

Python:
from scipy.stats import gamma
gamma.ppf(0.025, 5, scale=1/41.3)
于 2020-12-05T12:14:40.643 回答