【发布时间】:2018-11-08 08:02:19
【问题描述】:
如果我理解正确,scipy.stats 离散分布的 cdf 应该返回不超过给定参数的值的概率总和。
因此,scipy.stats.binom(7000000000, 0.5).cdf(6999999999) 应该返回几乎正好为 1 的值,因为在 70 亿次试验中,有 50/50 的机会,在 70 亿次试验中获得成功的概率减去 1 或更少是非常确定的。相反,我得到np.nan。事实上,对于提供给.cdf 的任何价值,除了 70 亿本身(或更多),我会回复np.nan。
这里发生了什么? scipy.stats 发行版可以处理的数量是否存在文档中没有的限制?
【问题讨论】:
-
有趣。底层函数是
scipy.special.bdtr。对于n=2**31-1,bdtr(n-1, n, 0.5)返回 0.9999999999999999。对于n=2**31,它返回nan。 -
我怀疑这是 scipy 中的一个错误。
-
我在 github 上创建了一个问题:github.com/scipy/scipy/issues/9454。结果可能是重复的;
scipy.stats.binom、scipy.special.bdtr和scipy.special.betainc有几个相关问题。