如何在Python中应用Poisson-Gamma分布(负二项分布)?
用负二项分布实现Poisson-Gamma混合分布的概率计算
核心结论
Poisson-Gamma混合分布(即Poisson参数λ服从Gamma分布的边缘分布)本质就是负二项分布(Negative Binomial Distribution),不需要自定义复杂的混合分布逻辑,直接用SciPy内置的nbinom类就能完成计算。
参数对应关系
Poisson-Gamma混合需要两个关键参数:
- Gamma分布的形状参数
α(决定分布的离散程度) - Gamma分布的均值
μ_λ(即原Poisson分布参数λ的期望,对应你原来的mu_X=1.7)
转换为SciPy中nbinom的参数(注意SciPy的nbinom定义是成功n次前出现k次失败的概率):
n=α(Gamma的形状参数)p=α / (α + μ_λ)(由负二项分布均值公式μ = n*(1-p)/p推导而来,确保混合后的分布均值等于μ_λ)
代码实现
假设你指定Gamma的形状参数α=2(可根据实际场景调整),代码如下:
from scipy.stats import nbinom # Gamma分布参数:形状α、均值μ_λ(对应原Poisson的mu_X) alpha = 2 mu_lambda = 1.7 # 转换为SciPy nbinom的参数 nbinom_n = alpha nbinom_p = alpha / (alpha + mu_lambda) # 计算X=1、2、3的概率并求和 one = nbinom.pmf(1, nbinom_n, nbinom_p) two = nbinom.pmf(2, nbinom_n, nbinom_p) three = nbinom.pmf(3, nbinom_n, nbinom_p) from_1_to_3 = one + two + three print(from_1_to_3)
关于负二项分布的参数定义疑问
- 无需额外考虑“成败次数”的逻辑:SciPy的
nbinom已经封装了负二项分布的概率计算,只要参数对应正确,就能直接得到Poisson-Gamma混合分布的结果。 - 若对参数定义有混淆:只需记住我们的目标是让混合分布的均值等于原Poisson的期望
μ_λ,按照上面的参数转换公式设置n和p即可,不必纠结不同定义的差异。
内容的提问来源于stack exchange,提问作者Drankenkin
相关产品推荐
相关产品推荐

