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作为这种近似替代的典型应用场景界限