目录
- 二项分布
-
- 性质
- 负二项分布
-
- 性质
- 示例
-
- scipy 实现及可视化
- 期望与方差
二项分布容易理解,负二项分布的描述不同模型稍有区别,记录一下。
二项分布
离散分布的一种,固定次数的独立试验时使用,每一次试验结果分为成功和失败两类,关心的是成功或失败的次数。
二项分布概率密度为:
P ( X = k ) = C n k p k q n − k \large\displaystyle P(X=k)=C_n^k p^kq^{n-k} P(X=k)=Cnkpkqn−k
其中:
- p为单次试验成功的概率,q为失败的概率;
- n为试验次数;
-
k表示成功k次,
C n k = n ! k ! ( n − k ) ! \displaystyle C_n^k=\frac{n!}{k!(n-k)!} Cnk=k!(n−k)!n!。
性质
期望: E ( x ) = n p \displaystyle E(x)=np E(x)=np
方差: V a r ( x ) = n p q \displaystyle Var(x)=npq Var(x)=npq
负二项分布
负二项分布有不同的描述,核心是放回抽取或者掷色子试验中,固定 成功(失败)的次数,描述 抽取/投掷 失败 (成功) 的次数概率分布。
scipy.stats描述的模型:
nbinom takes n and p as shape parameters where n is the number of successes, p is the probability of a single success, and (1-p) is the probability of a single failure.
负二项分布将n和p作为形状参数,其中n是成功的次数,p 是单个成功的概率,1-p 是单个失败的概率。
scipy中:
抽取试验,单次成功的概率为 p p p,直到抽取 n n n次成功结束,这种情况下,失败次数 k k k符合负二项分布,其概率密度为:
P ( X = k ) = C n + k − 1 n − 1 p n ( 1 − p ) k \displaystyle P(X=k)=C_{n+k-1}^{n-1}p^n(1-p)^k P(X=k)=Cn+k−1n−1pn(1−p)k
陈希孺老师教材中:
抽取试验,单次成功的概率为 p p p,抽取试验直到抽取 k k k次失败结束,这种情况下,成功次数 n n n符合负二项分布,
P ( X = n ) = C n + k − 1 k − 1 p n ( 1 − p ) k \displaystyle P(X=n)=C_{n+k-1}^{k-1}p^n(1-p)^k P(X=n)=Cn+k−1k−1pn(1−p)k
性质
以scipy.stats模型为例,
期望: E ( X ) = n p − n = n ( 1 − p ) p \displaystyle E(X) =\frac{n}{p}-n = \frac{n(1-p)}{p} E(X)=pn−n=pn(1−p)
方差: V a r ( X ) = n ( 1 − p ) p 2 \displaystyle Var(X)=\frac{n(1-p)}{p^2} Var(X)=p2n(1−p)
示例
掷色子,掷出1点为胜利:
- 构造投掷18次筛子,投出1点的次数符合二项分布;
- 现在考虑掷出3次胜利,问需要掷出多少次色子,比如结果是掷出了 k+3次色子,则k的分布符合 负二项分布
scipy 实现及可视化
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
fig, axs = plt.subplots(1,2,figsize=(10,4),dpi=100)
fig.subplots_adjust(wspace=0.3)
# 单次试验成功率
p = 1./6
# 二项分布考虑掷色子18次,成功次数符合二项分布
N = 18
# 负二项分布考虑掷出成功n次,失败次数符合二项分布
n = 3
# 二项分布B(N,p)
P_B= stats.binom(N,p)
## 成功次数0~18的概率分布
x=np.arange(N)
PF_B = P_B.pmf(x)
# 负二项分布NB(n,p)
P_NB = stats.nbinom(n,p)
# 成功3次,失败次数 k 的概率分布
k=np.arange(N)
PF_NB = P_NB.pmf(k)
axs[0].stem(x, PF_B, 'bo', label='固定总次数,成功次数: 二项分布')
axs[0].set_xticks(range(0,20,1));
axs[0].legend(loc='upper left')
axs[0].set_ylim(0,0.3)
ax2=axs[0].twinx()
ax2.plot(x,P_B.cdf(x),'r',label='累积概率')
ax2.legend(loc='center right')
ax2.grid()
ax2.set_ylim(0,1.2)
axs[1].stem(k, PF_NB, 'bo', label='固定成功次数,失败次数: 负二项分布')
axs[1].set_ylim(0,0.06)
axs[1].set_xticks(range(0,20,1));
axs[1].legend(loc='upper left')
ax2=axs[1].twinx()
ax2.plot(x,P_NB.cdf(x),'r',label='累积概率')
ax2.legend(loc=[0.02,0.8])
ax2.grid()

期望与方差
期望
print(f'二项分布的期望: {stats.binom(18,1./6).expect():.1f}, \n
负二项分布的期望{stats.nbinom(3,1./6).expect():.1f}')
输出为
二项分布的期望: 3.0,
负二项分布的期望15.0
验算:
二项分布 binom(18,1./6) 的期望 E ( X ) = n p = 18 ∗ 1 / 6 = 3 \displaystyle E(X) =np=18*1/6=3 E(X)=np=18∗1/6=3
负二项分布**nbinom(3,1./6)**的期望 E ( X ) = n p − n = 3 ∗ 6 − 3 = 15 \displaystyle E(X) =\frac{n}{p}-n = 3*6-3=15 E(X)=pn−n=3∗6−3=15 ,
方差
二项分布**binom(18,1./6)的方差: 2.5,
负二项分布nbinom(3,1./6)**的方差90.0
验算
二项分布 binom(18,1./6) 的方差 E ( X ) = n p q = 18 ∗ 1 / 6 ∗ 5 / 6 = 2.5 \displaystyle E(X) =npq=18*1/6*5/6=2.5 E(X)=npq=18∗1/6∗5/6=2.5
负二项分布**nbinom(3,1./6)**的方差 E ( X ) = n ( 1 − p ) p 2 = 3 ∗ 5 / 6 ∗ 6 ∗ 6 = 90 \displaystyle E(X) =\frac{n(1-p)}{p^2}=3*5/6*6*6=90 E(X)=p2n(1−p)=3∗5/6∗6∗6=90