【转载自:知乎--爱神的飞刀】
离散、连续概率分布小结+python中的应用
本文为梳理离散、连续分布的导读类笔记,大神请绕道,谢谢;
本文阅读大约需要15分钟左右;
若您发现文中有错误之处,欢迎留言指正,谢谢。
前言
随机变量:量化随机事件的函数,将每个可能的随机事件结果赋予一个数字;
概率分布:分布是指数据在统计图中的形状,则概率分布是指将随机变量的概率在统计图中的表现形式;
四种离散分布:伯努利分布、二项分布、几何分布、泊松分布等;
四种连续分布:正态分布、幂律分布、指数分布、 eta 分布等。
一,离散分布
1.1 伯努利分布
# 准备要用到的包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.stats as stats
# 生成一个0,1的数组
X=np.arange(0,2,1)
X
array([0, 1])
# 用bernoulli分布计算0和1时的概率分别是多少
p=0.5
y=stats.bernoulli.pmf(X,p)
y
array([ 0.5, 0.5])
plt.style.use('ggplot')
f,ax=plt.subplots(figsize=(8,5))
plt.scatter(X,y,marker='o',color='r')
plt.vlines(X,0,y,color='y')
# 设置图像
plt.title('伯努利分布',fontsize=22)
plt.xlabel('随机变量',fontsize=15)
plt.ylabel('概率',fontsize=15)
plt.show()
关于竖线vline
vline(x坐标值, y坐标最小值, y坐标值最大值)
plt.vlines(X,0,y),其中X,y都是数组,且是一一对应关系。如上是,两天竖线
1.2 二项分布(Binomial Distribution)
如何检验一个分布是不是二项分布?
做某件事的次数n是一定的;
n次事件是相互独立的,而且每次的概率是一样的,例如每次抛硬币正面朝上的概率;
每次实验有且只有两个结果,p+q=1;
想知道n次中,某一种情况p或q出现k次的概率。
二项分布是离散分布,其概率用概率质量函数pmf计算
期望为np,方差为np(1-q)
以上就是二项分布的特征,如符合则该分布是二项分布。
二项分布概率质量函数PMF为:
P(k)=C^k_n p^k (1-p)^{n-k}
期望和方差:
- 期望:np , n次独立事件预计成功多少次;
- 方差:np(1-p) , 用于估计数据的波动。
# 计算概率
n=5;p=0.5
x=np.arange(0,n+1,1)#准备随机变量,抛5次关于正面朝上有6种可能
ylist=stats.binom.pmf(x,n,p)#计算出现各种可能的概率
ylist
array([ 0.03125, 0.15625, 0.3125 , 0.3125 , 0.15625, 0.03125])
# 绘图
plt.style.use('ggplot')
f,ax=plt.subplots(figsize=(8,5))
plt.plot(x,ylist,marker='o',linestyle='',color='r')
plt.vlines(x,0,ylist,color='y')#绘制竖线
# 设置
#千万注意%的使用:%d表示替换为整数,%0.2f替换为保留2为的浮点型数字,%s替换为字符串
plt.title('二项分布:n=%d,p=%0.2f'%(n,p),fontsize=22)
plt.xticks(fontsize=12)
plt.xlabel('正面朝上的次数',fontsize=15)
plt.yticks(fontsize=12)
plt.ylabel('概率',fontsize=15)
# plt.text:第3个参数一定是文本,若其中有动态数字,一定要用格式化字符串%
for i in x:
plt.text(i,ylist[i]+0.006,'%0.5f' % ylist[i],ha='center', va= 'bottom',fontsize=11)
# ha='center':水平居中;va= 'bottom':垂直方向在底部
plt.show()
1.3 几何分布(Geometric Distribution)
如何检验一个分布是几何分布?
做某件事的次数n是一定的;
n次事件是相互独立的,而且每次的概率是一样的,例如每次抛硬币正面朝上的概率;
每次实验有且只有两个结果,p+q=1;
求的是第k次做某件事采取的第1次成功的概率
注意与二项分布的区别是:
二项分布:n次中共出现k次的概率
几何分布:知道第k次才第1次成功的概率
几何分布概率质量函数PMF及期望、方差:
P(k)=(1-p)^{k-1} p
期望:1/p , 用于估计多少次后取得第1次成功
方差: (1-p)/p^2 , 用于估计数据波动大小
# 定义随机变量:计算n=5时,各个k对应的几何分布概率
x=np.arange(1,6,1)
p=0.6
y_geo=stats.geom.pmf(x,p)
y_geo
array([ 0.6 , 0.24 , 0.096 , 0.0384 , 0.01536])
# 绘图
f,ax=plt.subplots(figsize=(8,6))
plt.plot(x,y_geo,marker='o',linestyle='',color='r')
plt.vlines(x,0,y_geo,color='y')
# 设置
plt.title('几何分布:k=[1~5],p=%.2f'% p,fontsize=22)
plt.xlabel('实验次数',fontsize=15)
plt.ylabel('概率',fontsize=15)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
# 设置数据点标签,注意x从1开始,而y_geo索引从0开始
for i in x:
plt.text(i,y_geo[i-1]+0.006,'%.4f'% y_geo[i-1],
ha='center', va= 'bottom',fontsize=12)
plt.show()
1.4 泊松分布(Poisson Distribution)
如何验证是泊松分布?
事件是独立事件;
任意相同的时间范围内,事件发生的概率相等;
求:某个时间范围内事件发生k次的概率。
概率质量函数PMF和参数
k:事件发生的次数;
mu :给定时间范围内事件发生的平均数
PMF: p(k)=u^k e^{-u}/k!
期望和方差都是: mu
# 定义随机变量
mu=2# 已知某路口每天平均发生2次交通事故
k=4# 求该路口1天发生4次交通事故的概率
y=stats.poisson.pmf(k,mu)
y
0.090223522157741778
# 定义随机变量列表:0至4次
x=np.arange(0,k+1,1)
y_poiss=stats.poisson.pmf(x,mu)
y_poiss
array([ 0.13533528, 0.27067057, 0.27067057, 0.18044704, 0.09022352])
# 绘图展示
f,ax=plt.subplots(figsize=(10,5))
plt.plot(x,y_poiss,marker='o',linestyle='')
plt.vlines(x,0,y_poiss,color='y')
plt.title('泊松分布:发生0至4次事故的概率分布,均值为:2',fontsize=22)
for i in x:
plt.text(i,y_poiss[i]+0.006,'%.5f'%y_poiss[i],
ha='center',va='bottom')
二,连续分布
几种重要连续概率分布
正态分布
幂律分布
指数分布
eta 分布
接下来重点介绍正态分布,其余分布在大量数据情况下也趋于正态分布。
因此,理解了正态分布是极其重要的。
正态分布
求正态分布的3个步骤
确定概率范围:如x<3,明确了范围
计算标准分:标准分=(x-平均值)/标准差
查表看概率值:根据这个标准分查表
两种情况下的概率
p(x>3)=1-p(x<3)
p(2<x<5)=p(x<5)-p(x<2)
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
plt.style.use('ggplot')
#定义随机变量
mu=0
sigma=1
x=np.arange(-5,5,0.1)
x
array([ -5.00000000e+00, -4.90000000e+00, -4.80000000e+00,
-4.70000000e+00, -4.60000000e+00, -4.50000000e+00,
-4.40000000e+00, -4.30000000e+00, -4.20000000e+00,
-4.10000000e+00, -4.00000000e+00, -3.90000000e+00,
-3.80000000e+00, -3.70000000e+00, -3.60000000e+00,
-3.50000000e+00, -3.40000000e+00, -3.30000000e+00,
-3.20000000e+00, -3.10000000e+00, -3.00000000e+00,
-2.90000000e+00, -2.80000000e+00, -2.70000000e+00,
-2.60000000e+00, -2.50000000e+00, -2.40000000e+00,
-2.30000000e+00, -2.20000000e+00, -2.10000000e+00,
-2.00000000e+00, -1.90000000e+00, -1.80000000e+00,
-1.70000000e+00, -1.60000000e+00, -1.50000000e+00,
-1.40000000e+00, -1.30000000e+00, -1.20000000e+00,
-1.10000000e+00, -1.00000000e+00, -9.00000000e-01,
-8.00000000e-01, -7.00000000e-01, -6.00000000e-01,
-5.00000000e-01, -4.00000000e-01, -3.00000000e-01,
-2.00000000e-01, -1.00000000e-01, -1.77635684e-14,
1.00000000e-01, 2.00000000e-01, 3.00000000e-01,
4.00000000e-01, 5.00000000e-01, 6.00000000e-01,
7.00000000e-01, 8.00000000e-01, 9.00000000e-01,
1.00000000e+00, 1.10000000e+00, 1.20000000e+00,
1.30000000e+00, 1.40000000e+00, 1.50000000e+00,
1.60000000e+00, 1.70000000e+00, 1.80000000e+00,
1.90000000e+00, 2.00000000e+00, 2.10000000e+00,
2.20000000e+00, 2.30000000e+00, 2.40000000e+00,
2.50000000e+00, 2.60000000e+00, 2.70000000e+00,
2.80000000e+00, 2.90000000e+00, 3.00000000e+00,
3.10000000e+00, 3.20000000e+00, 3.30000000e+00,
3.40000000e+00, 3.50000000e+00, 3.60000000e+00,
3.70000000e+00, 3.80000000e+00, 3.90000000e+00,
4.00000000e+00, 4.10000000e+00, 4.20000000e+00,
4.30000000e+00, 4.40000000e+00, 4.50000000e+00,
4.60000000e+00, 4.70000000e+00, 4.80000000e+00,
4.90000000e+00])
# 定义概率密度函数PDF
y=stats.norm.pdf(x,mu,sigma)
# 求一个试试看:y(x<0)的概率密度函数值
y_0=stats.norm.pdf(0,mu,sigma)
print(y_0)
0.398942280401
plt.style.use('ggplot')
# 画出概率密度函数y
f,ax=plt.subplots(figsize=(10,5))
plt.plot(x,y)
plt.vlines(0,0,y_0,linestyle='--',color='y')
plt.title('正态分布:$mu$=%.1f,$sigma$=%.1f'%(mu,sigma),fontsize=22)
plt.xlabel('随机变量:x',fontsize=15)
plt.ylabel('概率:y',fontsize=15)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.show()
亲自动手求 6sigma 的区间
之前总听说服从正太分布的数据,落在 6sigma 之间的占到99.74%,那么99.74%究竟是怎么来的?该如何得出这个比例?
正太分布的概率,完全取决于 mu $和 sigma ,现以标准正太分布为例:
6sigma :即是求P(-3 )
根据求正太分布概率的步骤,先求出标准分,即3
查表可知,x=3时概率为0.9987
带入第1步计算可知,2*0.9987-1=0.9974,即99.74%
三,小结
注意区分四种离散概率分布的适用情况、概率计算;
四种连续的概率分布,由于时间的关系,只来得及整理正态分布,后面几个将在日后整理更新到本文中。
理解为上。在理解的基础上,在python中实现将大大加深记忆。
以上就是本文的全部,谢谢你查看
人气稀薄 ,急需关爱 。
如果您竟然看到了这里还没走开,请帮忙多多点赞、收藏哈,谢谢啦朋友们~~