1.什么是概率分布
概率分布三问:
1.什么是随机变量?随机变量是量化随机事件的函数。随机变量将随机事件量化并将随机事件可能发生的结果映射为数字
2.什么是概率函数?概率函数是计算随机变量结果发生可能性的函数
3.什么是概率分布?概率分布是随机变量结果发生概率的图形化展示,即概率函数的可视化图形
2. 离散概率分布
离散概率分布指的是离散随机变量的概率分布,离散随机变量一般是计数得到的数值
2.1 伯努利分布:
伯努利分布是只有两种结果并且只做一次的随机事件的概率分布
用python实现伯努利分布
#导入科学计算包统计模块、数组包、可视化包pyplot模块
import scipy.stats as stats
import numpy as np
import matplotlib.pyplot as plt
#生成代表随机事件的等差数列随机变量
'''要点1:等差数据列arange函数生成的的数组范围包含下限数字却不包含上限,即参数1<=X
X=np.arange(0,2,1)
X
array([0, 1])
#求伯努利分布的概率:
'''要点1.:p为随机变量值为1,即硬币正面朝上的概率要点2.stats.bernoulli.pmf(X,p)为伯努利分布的概率函数,返回一个列表,列表中为随机变量各个值的发生概率'''
p=0.5
pList=stats.bernoulli.pmf(X,p)
pList
array([ 0.5, 0.5])
#绘制伯努利分布图
'''要点:linestyle表示线条的类型,这里是绘制离散的点,所以用None来表示'''
plt.plot(X,pList,marker='o',linestyle='None')
'''vlines用于绘制竖直线(vertical lines)vlines语法:vlines(参数1,参数2,参数3),参数1是X的坐标值,参数二表示y的最小值,参数3表示y的最大值'''
plt.vlines(X,0,pList)
plt.xlabel('随机变量:抛硬币一次')
plt.ylabel('概率')
'''%.2f表示格式化的数值,'.2f'的意思是小数点后面保留2位小数,数据类型是浮点型'''
plt.title('伯努利分布:p=%.2f' % p)
plt.show()
2.2 二项分布
将只有两种结果的随机事件做固定次数n次,计算n次中成功k次的事件的概率分布
判断标准: 1.将独立事件做了n次,n是固定的
2.每次事件发生都有两个结果且结果发生的概率不变
3.想知道进行n次事件中成功k次的概率为多少
期望和方差
期望和方差:如果一个随机事件符合某种概率分布,那么我们可以预期得到所期望结果的成功次数就是期望,而可能出现的波动次数就是方差
二项分布的期望和方差
期望E=np
方差=np(1-p)
用python实现二项分布
#定义随机变量来表示事件:抛硬币5次,正面朝上的次数
n=5 #做某件只有2种结果的随机事件的总次数
p=0.3 #做某件事件成功的概率
X=np.arange(0,n+1,1)
'''要点:这里的随机事件X数组中,0代表0次朝上的结果,1代表1次超上的结果对随机事件的数字描述,主要是对结果的描述'''
X
array([0, 1, 2, 3, 4, 5])
#求二项分布的概率
Plist=stats.binom.pmf(X,n,p)
Plist
array([ 0.16807, 0.36015, 0.3087 , 0.1323 , 0.02835, 0.00243])
#对随机事件结果概率进行绘图
plt.plot(X,Plist,marker='o',linestyle='None')
plt.vlines(X,0,Plist)
plt.xlabel('随机变量:抛硬币正面朝上次数')
plt.ylabel('概率')
plt.title('二项分布:n=%i,p=%.2f'% (n,p))
plt.show()
2.3 几何分布
将只有两种结果的随机事件做固定次数n次,第k才能取得第一次成功的概率,符合几何分布
1.某独立事件有两个结果,且每个结果发生的概率是固定不变的
2.想知道第k次做该独立事件取得首次成功的概率是多少 期望和方差
期望E=1/p
方差=(1-p)/p*p
Python实现几何分布
#定义随机事件,向同一个对象表白,第k次取得首次成功
k=5 #设定k=5,即第5次表白才获得第一次成功
X=np.arange(1,k+1,1)
X
array([1, 2, 3, 4, 5])
#计算变量对应的概率
p=0.6 #每次表白成功的概率为60%
pList1=stats.geom.pmf(X,p)
pList1
array([ 0.6 , 0.24 , 0.096 , 0.0384 , 0.01536])
# 绘制概率分布图
plt.plot(X,pList1,linestyle='None',marker='o')
plt.vlines(X,0,pList1)
plt.xlabel('随机变量:表白k次才取得第一次成功')
plt.ylabel('概率')
plt.title('几何分布 k=%s,p=%.2f' % (k,p))
plt.show()
2.4 泊松分布
泊松分布反应了在一定时间范围内某独立事件发生k次的概率是多少
判断条件:
1.某件事是独立事件,且在任何时间范围内发生的概率相同
2.想知道某个时间范围内发生这件事k次的概率
期望和方差:
期望E=u,即某给定时间内发生这件事情的平均次数
方差=u=期望
Python实现泊松分布
#定义随机变量:已知某路口发生事故的比例是2次/天,在此处一天内发生k次事故
mu=2
k=4
X=np.arange(0,k+1,1)
X
array([0, 1, 2, 3, 4])
#计算概率
plist=stats.poisson.pmf(X,mu)
plist
array([ 0.13533528, 0.27067057, 0.27067057, 0.18044704, 0.09022352,
0.03608941])
#绘制图形
plt.plot(X,plist,marker='o',linestyle='None')
plt.vlines(X,0,plist)
plt.xlabel('随机变量:在给定时间内发生事故的次数')
plt.ylabel('概率')
plt.title('泊松分布 mu=%i,k=%s' % (2,4))
plt.show()
3. 连续概率分布:
3.1 正态分布连续随机变量的数据一般是由测量产生的;
如果一件事情受多种因素影响且没有哪个因素起决定性作用,那么这件事符合正态分布;
连续概率分布的概率计算的是面积,即一个范围。通过计算标准分和Z表查询来确定概率
正态分布的概率计算:
统计一个微信公众号的日点赞数量,设点赞数量为k,求k<1.03的概率分布
第一步:明确要求的概率的范围,即分布图上哪一部分的面积
第二步:计算k=1.03时对应的标准分Z。Z=k-平均值/标准差,表示数据距离平均值的距离是 几个标准差
第三步: 在标准分-概率对应表中查找标准分对应的概率,这个概率就是k<1.03对应的概率
3.2 幂率分布**
程尖刀型分布,显示社会中的财富分配符合幂率分布,互联网经济财富分配更是幂率分布
当一件种商业模式的边际成本不为0时,则符合正态分布,相反则符合幂率分布
4. 深入浅出统计学的扩展练习:
1.査德滑雪(几何分布)
p=0.2
p1=0.2,p2=(1-0.2)* 0.2=0.16
试滑1次或者2次就成功的概率=p1+p2=0.36
#定义随机变量
'''随机变量:查德第10次试滑取得第一次成功的概率'''
k=10
p=0.2
X=np.arange(1,k+1,1)
X
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
#计算概率
PList=stats.geom.pmf(X,p)
PList
array([ 0.2 , 0.16 , 0.128 , 0.1024 , 0.08192 ,
0.065536 , 0.0524288 , 0.04194304, 0.03355443, 0.02684355])
#绘制分布图
plt.plot(X,PList,linestyle='None',marker='o')
plt.vlines(X,0,PList)
plt.xlabel('随机变量:査德尝试%i次滑雪取得第一次成功' % 8 )
plt.ylabel('概率')
plt.title('几何分布 k=%s,p=%.2f' % (10,0.2))
plt.show()
注意:任何几何分布的众数都为1,因为X=1时成功概率最大
2.转椅赢赢赢(二项分布)
#定义变量:n道题随机选择做对r道题
n=5 #总共有5道题目
p=0.25 #每道题目有4个选项,蒙对的可能性为25%
r=3 #做对3道即可得到最终大奖
X=np.arange(0,n+1,1)
X
array([0, 1, 2, 3, 4, 5])
#计算概率
PList1=stats.binom.pmf(X,n,p)
PList1
array([ 0.23730469, 0.39550781, 0.26367187, 0.08789062, 0.01464844,
0.00097656])
#绘制分布图
plt.plot(X,PList1,marker='o',linestyle='None')
plt.vlines(X,0,PList1)
plt.xlabel('随机变量:%s道题随机选择做对%s道题' % (5,3))
plt.ylabel('概率')
plt.title('二项分布 n=%s,p=%.2f' % (5,0.25))
plt.show()
3.一周内电影院爆米花机和饮料机都不出现故障的概率(泊松分布)
#定义变量:一周内电影院爆米花机和饮料机各自出现故障次数
um1=3.4 #一周内爆米花机出现故障的次数是3.4次
um2=2.3 #一周内爆米花机出现故障的次数是2.3次
'''爆米花机和饮料机都不出现故障,相当于二者故障次数都为0'''
r1=0
r2=0
#定义随机变量X1,X2
X1=np.arange(0,5,1)
X2=np.arange(0,4,1)
X1,X2
(array([0, 1, 2, 3, 4]), array([0, 1, 2, 3]))
#计算概率
PLIst1=stats.poisson.pmf(X1,um1)
PLIst2=stats.poisson.pmf(X2,um2)
PLIst1,PLIst2
#两者都不出问题的概率为
PLIst1[0]*PLIst2[0]
0.0033459654574712733
注意:如果X1,X2是独立随机变量符合泊松分布,则X+Y也符合泊松分布
上例也可以用um=um1+um2=5.7来作为都不发生故障这一事件的平均值计算泊松分布概率
4.泊松分布近似替代二项分布的应用
泊松分布的概率计算公式比二项分布要简单很多
当n很大,且p很小时,可以用um=np的泊松分布来近似替代的二项分布计算概率
一般来讲,n>=50且p<=0.1作为这种近似替代的典型应用场景界限