深入浅出统计学第七章 几何分布,二项分布,柏松分布

几何分布

几何分布(Geometric distribution)是离散型概率分布。其中一种定义为:在n次伯努利试验中,试验k次才得到第一次成功的机率。详细地说,是:前k-1次皆失败,第k次成功的概率。几何分布是帕斯卡分布当r=1时的特例。
在伯努利试验中,成功的概率为p,若ξ表示出现首次成功时的试验次数,则ξ是离散型随机变量,它只取正整数,且有P(ξ=k)=(1-p)的(k-1)次方乘以p ( k=1,2,…,0< p <1 ),此时称随机变量ξ服从几何分布。它的期望为1/p,方差为(1-p)/(p的平方)。

定义

在伯努利试验中,记每次试验中事件A发生的概率为p,试验进行到事件A出现时停止,此时所进行的试验次数为X,其分布列为:
几何分布公式
此分布列是几何数列的一般项,因此称X服从几何分布,记为X ~ GE(p) 。

代码实现

scipy几何分布原文地址
下面是原书《 深入浅出统计学 》中一些重要公式的代码实现,此处我们直接调用scipy的类库,不再自己编写。首先假设几何分布的单次成功概率为:0.2,也就是百分之二十,与我们书中例题是一致的。

from scipy.stats import geom
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
p = 0.2
# P(X > r) = q ** r
print(geom.sf(2,p)) # pmf(r,p),当成功概率为p时,第一次成功需要r次以上的概率
# P(X <= r) = 1 - q ** r
print(geom.cdf(2,p)) # cdf(r,p),当成功概率为p时,r次及以内成功的概率
# P(X = 4) = p * q ** (r-1)
print(geom.pmf(4,p)) # pmf(r,p),当成功概率为p时,第r次成功的概率
# 额外的
print(geom.ppf(0.99, p)) # ppf(q,p),当成功概率为p时,想要获取q的概率,需要尝试的次数
0.64 0.36 0.10240000000000003 21.0
print(geom.var(p)) # 方差 Var(X) = q/(p ** 2)
print(geom.mean(p)) # 均值,也就是期望E(X) = 1/p
print(geom.std(p)) # 标准差
20.0 5.0 4.47213595499958 ### 例题 绘制P280的表格与图表如下,P282的表格与图标只需简单修改以下代码,此处不再冗余操作:
x = np.arange(1,9)
import pandas as pd
df_Gemo_Table = pd.DataFrame({
    "P(X=x)":geom.pmf(x,p),
    "xP(X=x)":x * geom.pmf(x,p),
    "xP(X<=x)":(x * geom.pmf(x,p)).cumsum()})

df_Gemo_Table
P(X=x) xP(X<=x) xP(X=x)
0 0.200000 0.200000 0.200000
1 0.160000 0.520000 0.320000
2 0.128000 0.904000 0.384000
3 0.102400 1.313600 0.409600
4 0.081920 1.723200 0.409600
5 0.065536 2.116416 0.393216
6 0.052429 2.483418 0.367002
7 0.041943 2.818962 0.335544
df_Gemo_Table['xP(X=x)'].plot()
plt.show()

二次分布中的累计概率

二项分布

二项分布就是重复n次独立的伯努利试验。在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,并且相互独立,与其它各次试验结果无关,事件发生与否的概率在每一次独立试验中都保持不变,则这一系列试验总称为n重伯努利实验,当试验次数为1时,二项分布服从0-1分布。

统计学定义

在概率论和统计学中,二项分布是n个独立的是/非试验中成功的次数的离散概率分布,其中每次试验的成功概率为p。这样的单次成功/失败试验又称为伯努利试验。实际上,当 n = 1时,二项分布就是伯努利分布,二项分布是显著性差异的二项试验的基础 。在二项分布中P称为成功概率。记作ξ~B(n,p),期望:E(ξ)=np;方差:D(ξ)=npq;其中q=1-p

代码实现

Scipy二次分布参考地址

二次分布的语法与几何分布是类似的,如下:

from scipy.stats import binom
print("假设四道四个选项的单项选择题,随便蒙,那么此时")
print("四道问题中答对零道的概率为",binom.pmf(0,4,0.25))
print("四道问题中答对一道的概率为",binom.pmf(1,4,0.25))
print("四道问题中答对两道的概率为",binom.pmf(2,4,0.25))
print("四道问题中答对三道的概率为",binom.pmf(3,4,0.25))
print("四道问题中答对四道的概率为",binom.pmf(4,4,0.25))
假设四道四个选项的单项选择题,随便蒙,那么此时
四道问题中答对零道的概率为 0.31640625000000006
四道问题中答对一道的概率为 0.4218750000000001
四道问题中答对两道的概率为 0.21093750000000006
四道问题中答对三道的概率为 0.046875000000000035
四道问题中答对四道的概率为 0.003906250000000001

然后是累积概率,换句话说就是答对至少N道题的概率:

print("四道问题中至少一道的概率为",binom.cdf(1,4,0.25))
四道问题中至少一道的概率为 0.73828125
四道问题中至少一道的概率为 4.0

期望与方差的语法与几何分布保持一致:

print(binom.var(4,0.25)) # 方差 Var(X) = npq
print(binom.mean(4,0.25)) # 均值,也就是期望E(X) = n * p
print(binom.std(4,0.25)) # 标准差
print(binom.expect(args=(4,0.25))) # 期望
0.75
1.0
0.8660254037844386
1.0000000000000004

例题

下面我们利用scipy的类库计算原书P303的例题:

print("最后一轮有五道题,每一道题的答对概率为0.25。")
print("那么答对两道题的概率为:{0:.3f}".format(binom.pmf(2,5,0.25)))
print("那么答对三道题的概率为:{0:.3f}".format(binom.pmf(3,5,0.25)))
print("那么答对两或三道题的概率为:{0:.3f}".format(binom.pmf(2,5,0.25) + binom.pmf(3,5,0.25)))
print("一道题都没答对的的概率为:{0:.3f}".format(binom.pmf(0,5,0.25)))
print("期望为:{0:.3f},方差为:{1:.3f}".format(binom.mean(5,0.25),(binom.var(4,0.25))) )
最后一轮有五道题每一道题的答对概率为0.25。
那么答对两道题的概率为:0.264
那么答对三道题的概率为:0.088
那么答对两或三道题的概率为:0.352
一道题都没答对的的概率为:0.237
期望为:1.250,方差为:0.750

泊松分布

泊松分布的概率函数为:
泊松分布公式
泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生率。 泊松分布适合于描述单位时间内随机事件发生的次数。
泊松分布的期望和方差均为 λ 特征函数为 泊松分布特征函数

泊松分布与二项分布

当二项分布的n很大而p很小时,泊松分布可作为二项分布的近似,其中λ为np。通常当n≧20,p≦0.05时,就可以用泊松公式近似得计算。
事实上,泊松分布正是由二项分布推导而来的,具体推导过程可参见百度百科泊松分布词条相关部分。

代码实现与例题

泊松分布在第七章中主要有两个用处(同上):
1. 本身的用处,一种是根据一定时间内或一定区间内的平均次数,计算其他概率
2. 在n很大,p很小的情况下利用泊松分布代替二次分布进行计算

因为三中概率分布的语法十分相近的,所以此处我们直接使用泊松分布计算书中的例题,原文档请参考Scipy泊松分布

from scipy.stats import poisson
mu = 3.4
print("P309 爆米花机问题,一周内爆米花机平均发生故障:{0}".format(mu))
print("下一周爆米花机不发生故障的概率为:{0:.3f}".format(poisson.pmf(0, mu)))
print("下一周爆米花机发生三次故障的概率为:{0:.3f}".format(poisson.pmf(3, mu)))
print("其期望为:{0:.3f},方差为:{1:.3f}".format(poisson.mean(mu),(poisson.var(mu))) )
P309 爆米花机问题,一周内爆米花机平均发生故障:3.4
下一周爆米花机不发生故障的概率为:0.033
下一周爆米花机发生三次故障的概率为:0.558
其期望为:3.400,方差为:3.400
mu_test = 0.05 * 50
print("P317 考试问题,每一道题的答对概率为:{0},我们用泊松分布来代替二次分布".format(mu_test))
print("答对五题的概率为:{0:.3f}".format(poisson.pmf(5, mu_test)))
print("额外的:答对最多三题的的概率为:{0:.3f}".format(poisson.cdf(3, mu_test)))
P317 考试问题,每一道题的答对概率为:2.5,我们用泊松分布来代替二次分布
答对五题的概率为:0.067
额外的:答对最多三题的的概率为:0.758

参考资料

  1. Scipy二次分布参考地址
  2. scipy几何分布原文地址
  3. Scipy泊松分布
  4. 深入浅出统计学原书
  5. 百度百科-几何分布
  6. 百度百科-二项分布
  7. 百度百科-泊松分布

猜你喜欢

转载自blog.csdn.net/FontThrone/article/details/81013823