二项分布容易理解,负二项分布的描述不同模型稍有区别,记录一下。
二项分布
离散分布的一种,固定次数的独立试验时使用,每一次试验结果分为成功和失败两类,关心的是成功或失败的次数。
二项分布概率密度为:
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 ,
方差
print(f'二项分布的方差: {stats.binom(18,1./6).var():.1f}, \n负二项分布的方差{stats.nbinom(3,1./6).var():.1f}')
二项分布**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