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

新手上路,请多包涵

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

原文由 14wml 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

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

因此,尝试:

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

原文由 Scratch‘N’Purr 发布,翻译遵循 CC BY-SA 3.0 许可协议

正如@Hielke 回复的那样,就 scipy.stats 1.4.1 文档 中的解释而言,标量参数似乎等于 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 = betaloc 是一个 offset

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

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

原文由 eidal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题