Scipy.nbinom与负二项分布公式:计算结果不符问题排查
负二项分布在SciPy中的参数理解误区
核心问题:两种负二项分布的定义差异
你手动计算用的是**"第n次试验恰好获得第k次成功"**的负二项分布定义,公式为:P(n, k, p) = C(n-1, k-1) * p^k * (1-p)^(n-k)
代入n=6, k=4, p=0.8得到的0.16384是正确的。
但SciPy的scipy.stats.nbinom采用的是另一种常见定义:**"直到获得r次成功为止,所经历的失败次数X"**的分布。对应到你的场景:
- 成功次数
r = 4(即你要的第4次成功) - 失败次数
x = 总试验次数 - 成功次数 = 6 - 4 = 2 - 单次成功概率
p = 0.8
正确的SciPy调用方式
你需要传入的参数是失败次数、成功次数、成功概率:
from scipy.stats import nbinom # k=失败次数,n=成功次数,p=单次成功概率 result = nbinom.pmf(k=2, n=4, p=0.8) print(result) # 输出约0.16384
常见参数错误点
- 误将总试验次数
n=6作为nbinom.pmf的第一个参数(第一个参数是失败次数,不是总试验次数) - 混淆了SciPy中
n参数的含义:它代表的是需要达成的成功次数,而非总试验次数 - 颠倒了成功概率和失败概率的传入(比如传入
1-p代替p)
内容的提问来源于stack exchange,提问作者beautysleep
相关产品推荐
相关产品推荐

