【问题标题】:Gamma distribution in pythonpython中的伽马分布
【发布时间】:2018-12-20 04:57:01
【问题描述】:

我们在 R 中有 qgamma,在 excel 中有 gamm.inv,我无法在 python 中使用 invgamma 函数获得相同的结果。例如在excel中 GAMMA.INV(0.99,35,0.08)=4.01,我可以使用 qgammaprobability=0.99, alpha(scale)=35.0, shape=0.08 从 R 获得相同的值。

但是当我使用invgamma.pdf(0.99,35,0.8) 时,它会返回1.61787636512e-15

正确的做法是什么?我用pdfppfcdf 尝试了gammainvgamma,但没有什么与我从R 中的qgamma 或excel 中的GAMMA.INV 获得的值相匹配

【问题讨论】:

标签: python r excel gamma-distribution


【解决方案1】:

qgammaGAMMA.INV 给出 inverse cumulative distribution functiongamma distribution

invgamma 代表inverse gamma distribution,这是完全不同的东西。解释差异超出了本网站的范围,因为这是一个统计问题,而不是编程问题,但在继续之前,您应该真正理解它。

伽马分布的SciPy分布对象是scipy.stats.gamma,逆累积分布函数的方法是ppf,是“百分点函数”的简称(逆CDF的别称)。因此,您应该使用scipy.stats.gamma.ppf。确保传递正确的参数。

【讨论】:

  • 感谢您对 invgamma 的澄清,但是当我使用 scipy.stats.gamma.ppf(0.99,35,0.08)=50.29 时,它与 excel gammainv(0.99,35,0.08)=4.01 不匹配
  • @SKD: gamma.ppf 不采用与gammainv 相同的参数。您传递的是 loc 而不是 scale。一般来说,您似乎也在混淆比例和形状; alpha 是形状参数,而不是比例。
  • 是的,我确定我做错了什么,你能指导我获得与 excel 相同的值的参数应该是什么
  • 好的,它的参数是正确的,它是 gamma.ppf(0.99,35,0,0.08)。我必须在形状和比例之间将 loc 作为 0 传递。非常感谢 user2357112
最近更新 更多