python 二项分布

python 二项分布,第1张

一、定义 1.1 0-1分布
  • 也称伯努力分布
    若随机变量X只有两个可能的取值0和1,其概率分布为
    P ( X = x i ) = p x i ( 1 − p ) 1 − x i , x i = 0 , 1 P(X=x_{i}) = p^{x_{i}}(1-p)^{1-x_{i}} \qquad,x_{i}=0,1 P(X=xi)=pxi(1p)1xi,xi=0,1
1.2 二项分布
  • 二项分布是指在只有两个结果的n次独立的伯努利试验中,所期望的结果出现次数的概率,记
    B ( n , k , p ) = C n k p k ( 1 − p ) n − k B (n,k,p)= C_{n}^{k} p^{k} (1-p)^{n-k} B(n,k,p)=Cnkpk(1p)nk
    其中,n表示试验次数,k表示出现某个结果的次数, C n k = n ( n − 1 ) . . ( n − k + 1 ) k ( k − 1 ) . . . 1 = n ! ( n − k ) ! k ! C_{n}^{k}=\frac{n(n-1)..(n-k+1)}{k(k-1)...1} = \frac{n!}{(n-k)!k!} Cnk=k(k1)...1n(n1)..(nk+1)=(nk)!k!n!
二、案例

     在很多工厂里,通常都会跟零件供应商约定供货合格率,并对每批供货进行抽检,就是所谓的IQC。设约定的合格品率为97%(p),如果每批随机抽10件(n),那么抽出1件(k)不合格时,整批的零件的合格率是不是达不到97%?
     根据题意,p=0.97,n=10,k=9,据此算出10个样品中有9个合格品的概率是
B ( 10 , 9 , 0.97 ) = C 10 9 p 9 ( 1 − 0.97 ) 10 − 9 = 0.228 B (10,9,0.97)= C_{10}^{9} p^{9} (1-0.97)^{10-9} = 0.228 B(10,9,0.97)=C109p9(10.97)109=0.228
     反过来,如果考虑不合格品率,p=0.03,n=10,k= 1,据此计算出10个样品中有1个不合格品的概率是
B ( 10 , 1 , 0.03 ) = C 10 1 p 1 ( 1 − 0.03 ) 10 − 1 = 0.228 B (10,1,0.03)= C_{10}^{1} p^{1} (1-0.03)^{10-1} = 0.228 B(10,1,0.03)=C101p1(10.03)101=0.228
     结果是一样的。由此可见,10个样品中有1个不合格品的概率还是很大的,因此不能说这批零件不合格。

那抽出2个不合格的呢? B ( 10 , 8 , 0.97 ) = C 10 8 p 8 ( 1 − 0.97 ) 10 − 8 = 0.0317 B (10,8,0.97)= C_{10}^{8} p^{8} (1-0.97)^{10-8} = 0.0317 B(10,8,0.97)=C108p8(10.97)108=0.0317
     因此如果10个样品中有2个或以上的不合格品,则整批的零件合格率肯定达不到97%,可以整批退货。
     如果约定的合格率是99.5%,则出现0个、1个、2个不合格品的概率分别为0.951、0.0478、0.001,如此10个只要抽出1个不合格品就可以整批退货了。

三、python 实现
  • 代码中的情况对应上文案例
from scipy.special import comb

def GetBinomial(n,k,p):
    '''
        功能:计算给定参数的二项分布值
        传入:n(实验总次数)、k(事件出现的次数)、p(事件出现的概率)
        输出:二项分布值
    '''
    C = comb(n,k) # 计算所有组合数量
    B = C * p**k * (1-p)**(n-k)
    
    return B

b1 = GetBinomial(10,9,0.97)   # 情况1
b2 = GetBinomial(10,1,0.03)   # 情况2
b3 = GetBinomial(10,10,0.995) # 情况3
b4 = GetBinomial(10,9,0.995)  # 情况4
b5 = GetBinomial(10,8,0.995)  # 情况5
b6 = GetBinomial(10,7,0.995)  # 情况6

print("情况1:",b1)
print("情况2:",b2)
print("情况3:",b3)
print("情况4:",b4)
print("情况5:",b5)
print("情况6:",b6)

参考:统计基础篇之十:怎么理解二项分布

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/732589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存