概率统计Python计算(11)离散型随机变量分布(binom & poisson)

1. binom分布(二项分布)

scipy.stats包中的binom类对象是表示二项分布的。常用的四个函数说明见下表。

函数名 参数 功能
rvs(n, p, size) n,p:分布参数,size:产生的随机数个数,缺省值为1 产生size个随机数
pmf(k, n, p) k:随机变量取值,n,p:与上同 概率质量函数(分布律) P ( X = k ) P(X=k) P(X=k)
cdf(k, n, p) k:分布函数自变量,n,p:与上同 累积概率函数(分布函数) F ( k ) F(k) F(k)
sf(k, n, p) k:分布函数自变量,n,p:与上同 残存函数 1 − F ( k ) 1-F(k) 1F(k)

例1 已知某种疾病的发病率为0.001,某单位共有5000人,问该单位患有这种疾病的人数不超过5人的概率。
:一个人得病的概率 p = 0.001 p=0.001 p=0.001,5000人接受检测,相当于做了5000次重复独立试验。于是,5000人中的得病人数 X X X服从参数为 n = 5000 n=5000 n=5000 p = 0.001 p=0.001 p=0.001的二项分布。即 X X X~ b ( 5000 , 0.001 ) b(5000, 0.001) b(5000,0.001)。5000人中患病人数不超过5人的概率
P ( X ≤ 5 ) = F ( 5 ) = ∑ k = 0 5 C 5000 k ⋅ 0.00 1 k ⋅ 0.99 9 5000 − k = 0.616. P(X\leq 5)=F(5)=\sum\limits_{k=0}^5C_{5000}^k\cdot0.001^k\cdot0.999^{5000-k}=0.616. P(X5)=F(5)=k=05C5000k0.001k0.9995000k=0.616.
下列代码验证这一计算结果。

from scipy.stats import binom           #导入binom
prob=binom.cdf(k=5, n=5000, p=0.001)    #计算P(X<=5)
print('P(X<=5)=F(5)=%.3f'%prob)         #输出P(X<=5)

第2行调用binom(第1行导入)的cdf函数,计算 P ( X ≤ 5 ) = F ( 5 ) P(X\leq5)=F(5) P(X5)=F(5)。运行程序,输出

P(X<=5)=F(5)=0.616

2. poisson分布(泊松分布)

scipy.stats包中的poisson类对象表示泊松分布。常用的四个函数说明见下表。

函数名 参数 功能
rvs(mu, size) mu:分布参数 λ \lambda λ,size:产生的随机数个数,缺省值为1 产生size个随机数
pmf(k, mu) k:随机变量取值,mu:与上同 概率质量函数(分布律) P ( X = k ) P(X=k) P(X=k)
cdf(k, mu) k:分布函数自变量,mu:与上同 累积概率函数(分布函数) F ( k ) F(k) F(k)
sf(k, mu) k:函数自变量,mu:与上同 残存函数 1 − F ( k ) 1-F(k) 1F(k)

例2 派出所在长度为 t t t的时间间隔(单位:小时)内收到紧急呼救的次数 X X X服从参数为 t / 2 t/2 t/2的泊松分布,而与事件间隔的起点无关。

  1. 求某一天中午12时至下午3时未收到紧急呼救的概率;
  2. 求某一天中午12时至下午5时至少收到1次紧急呼救的概率。

:(1)中午12时至下午3时的间隔 t = 3 t=3 t=3。按题意 λ = t / 2 = 1.5 \lambda=t/2=1.5 λ=t/2=1.5,在此期间收到紧急求救次数 X X X~ π ( 1.5 ) \pi(1.5) π(1.5)。未收到紧急呼救为 X = 0 X=0 X=0,故 P ( X = 0 ) = e − 1.5 = 0.2231 P(X=0)=e^{-1.5}=0.2231 P(X=0)=e1.5=0.2231
(2)中午12时至下午5时间隔 t = 5 t=5 t=5,此期间收到紧急求救次数 X X X~ π ( 2.5 ) \pi(2.5) π(2.5)。至少收到1次紧急求救的概率 P ( X ≥ 1 ) = 1 − P ( X ≤ 0 ) = 1 − F ( 0 ) = 1 − e − 2.5 = 1 − 0.0821 = 0.9179 P(X\geq1)=1-P(X\leq0)=1-F(0)=1-e^{-2.5}=1-0.0821=0.9179 P(X1)=1P(X0)=1F(0)=1e2.5=10.0821=0.9179
下列代码验算本例计算结果。

from scipy.stats import poisson #导入poisson
prob1=poisson.pmf(k=0, mu=1.5)  #计算参数为1.5时概率P(X=0)
prob2=poisson.sf(k=0, mu=2.5)   #计算参数为2.5时概率P(X>=1)
print('P(X=0)=%.4f'%prob1)
print('P(X>=1)=%.4f'%prob2)

程序的第2行调用poisson的概率质量函数pmf,计算分布参数 λ = 1.5 \lambda=1.5 λ=1.5时概率 P ( X = 0 ) P(X=0) P(X=0),注意传递给参数k和mu的值。第3行调用poisson的残存函数sf,计算分布参数 λ = 2.5 \lambda=2.5 λ=2.5时概率 P ( X ≥ 1 ) = 1 − P ( X ≤ 0 ) = 1 − F ( 0 ) P(X\geq1)=1-P(X\leq0)=1-F(0) P(X1)=1P(X0)=1F(0),注意传递给参数k和mu的值。运行程序,输出

P(X=0)=0.2231
P(X>=1)=0.9179

写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

你可能感兴趣的:(概率论)