gpt4 book ai didi

python - 计算大数的二项式概率

转载 作者:太空狗 更新时间:2023-10-29 20:38:01 24 4
gpt4 key购买 nike

我想在 python 上计算二项式概率。我尝试应用公式:

probability = scipy.misc.comb(n,k)*(p**k)*((1-p)**(n-k))

我得到的一些概率是无限的。我检查了一些 p=inf 的值。对于其中一个,n=450,000,k=17。该值必须大于 1e302,这是 float 处理的最大值。

然后我尝试使用 sum(np.random.binomial(n,p,numberOfTrials)==valueOfInterest)/numberOfTrials

这会抽取 numberOfTrials 个样本并计算抽取值 valueOfInterest 的平均次数。

这不会增加任何无限值。但是,这是继续进行的有效方法吗?为什么这种方式不会产生任何无穷大的值,而计算概率却可以?

最佳答案

因为您使用的是 scipy,所以我想我会提到 scipy 已经实现了统计分布。另请注意,当 n 如此大时,二项式分布非常接近正态分布(如果 p 非常小,则为泊松分布)。

n = 450000
p = .5
k = np.array([17., 225000, 226000])

b = scipy.stats.binom(n, p)
print b.pmf(k)
# array([ 0.00000000e+00, 1.18941527e-03, 1.39679862e-05])
n = scipy.stats.norm(n*p, np.sqrt(n*p*(1-p)))
print n.pdf(k)
# array([ 0.00000000e+00, 1.18941608e-03, 1.39680605e-05])

print b.pmf(k) - n.pdf(k)
# array([ 0.00000000e+00, -8.10313274e-10, -7.43085142e-11])

关于python - 计算大数的二项式概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com