计算二项分布的概率

问题描述

“100 道题,每道题有 4 个可能的答案。如果随机选择每道题的答案,通过考试的概率是多少(获得 40% 或更多)”

x = ?
n = 100
p = 0.25

计算 40% 或更少就像只为 x 的值输入 40 一样简单,但我如何将其转换为 40% 或更多?我试过 -40、60、-60,但显然这是错误的。

代码

import scipy.stats as stats

cum_binomalpha = stats.binom.pmf(40,n=100,p=0.25)
print(round(cum_binomalpha,6))

编辑 - 可爱的多维解决方

import scipy.stats as stats

cumm_binomalpha = stats.binom.cdf(39,p=0.25)
print (round(1-cumm_binomalpha,6))

解决方法

您可以使用 sympy 获得准确答案:

from sympy import S
from sympy.stats import Binomial,P

b = Binomial('b',100,S(1) / 4)
print(P(b >= 40).evalf(),P(b >= 40))

结果:

0.000686592207962991
68956946241719424989885392307281546441260036992065207027/100433627766186892221372630771322662657637687111424552206336

使用 scipy,您可以尝试以下操作:

import scipy.stats as stats
import numpy as np

print(stats.binom.pmf(np.arange(40,101),n=100,p=0.25).sum())
print(1 - stats.binom.cdf(39,p=0.25))