概念理解
在介绍经典分布之前,先来认识几个名词。
什么是‘统计’,即对过去数据的汇总,分析,总结。
什么是‘概率’,是一个数值,表示某件事发生的可能性大小。(一般概率是在过去经验的总结基础上,对未发生事件的预测)
什么是‘随机事件’,在一定条件下,可能发生,也可能不发生的事件。
什么是‘随机变量’,将随机事件结果映射到一个数字化的函数上,通常用大写字母X 表示。包括两种类型:
- 离散型随机变量
- 连续性随机变量
什么是‘概率分布’,多次随机事件,得到多个结果,这些结果呈现一定的规律分布,据此可以得到随机实验所有可能的结果以及结果对应的概率。所以概率分布就是随机事件所有的实验结果的概率。具体有这几个经典的概率分布:
如何计算概率:
- 离散随机变量→概率质量函数PMF(probability mass function)
- 连续随机变量→概率密度函数PDF(probability density function)
怎么学习概率分布
遵循以下流程:
用途→如何检验→计算概率→python实现
离散型概率分布
· 伯努利分布
(1)定义:这是一个简单的实验,假设一个事件只有发生或者不发生两种可能,那么假设发生的概率为P,不发生的概率就是1-P,这就是伯努利分布。
生活中很多事件都符合伯努利分布,比如抛硬币是正面还是反面,生孩子是男孩还是女孩。当然也可以把很多事情转化为伯努利事件,不如是否换癌症(不管哪种癌症)。
(2)如何检验
// 每次的事件都有两个可能的结果(成功或者失败)
// 每次成功的概率都相等,用P 表示
//想知道其中一个结果的概率
(3)代码实现
# 第一步:定义随机事件变量X
X = np.arange(0,2)
# 求对应的概率
nlist = stats.bernoulli.pmf(X,0.5)
# 绘图
plt.plot(X,nlist,marker='o',
linestyle='')
plt.vlines(X,[0,0],nlist)
plt.xlabel('随机变量:抛一次硬币', fontsize=13)
plt.ylabel('概率')
plt.title('伯努利分布,p=0.50')
plt.show()
· 二项分布
(1)定义:简单理解就是多个相互独立的伯努利事件的概率分布
用抛硬币举例,每一次抛硬币是相互独立的(就是说我第一次和第三次抛硬币的结果是没有影响的),假设硬币朝上的概率为P,则朝下的概率为1-P。抛n次硬币,其中k次朝上的概率结果就是二项分布。
(2)如何检验
// 做某件事的次数是固定的,用n表示
// 每次的事件都有两个可能的结果(成功或者失败)
// 每次成功的概率都相等,用P 表示
// 想知道第k次成功的概率是多少
(3)python代码实现
n=5 #构建事件次数
p=0.5 #事件成功的概率
X = np.arange(0,n+1) # 构造事件X
# 计算每个事件发生的概率
nlist = stats.binom.pmf(X,5,p)
array([ 0.03125, 0.15625, 0.3125 , 0.3125 , 0.15625, 0.03125])
# 绘图
plt.plot(nlist,marker='o',linestyle='')
plt.vlines(X,0,nlist)
plt.xlabel('随机变量 :抛硬币正面朝上的次数', fontsize=12)
plt.ylabel('概率')
plt.title('二项式分布,n=5,p=0.50')
plt.show()
· 几何分布
(1)定义:在n次伯努利试验中,试验k次才得到第一次成功的机率。详细地说,是:前k-1次皆失败,第k次成功的概率。
(2)如何检验:
// 做某件事的次数是固定的,用n表示,n个事件相互独立
// 每个事件都有两个可能的结果(成功或失败)
// 每一次事件成功的概率不变,用p表示
// 想知道第k次成功做某件事的概率
(3)怎么计算
前(k-1)次失败,第k次成功
(4)python实现
k =5 # 构建事件次数
p =0.6 # 事件成功的概率
X = np.arange(1,k+1)
nlist = stats.geom.pmf(X,p)
# 绘图
plt.plot(X,nlist,marker='o',
linestyle='')
plt.vlines(X,0,nlist)
plt.xlabel('随机变量 :表白k次首次成功', fontsize=12)
plt.ylabel('概率')
plt.title('几何分布,p=0.60')
plt.show()
· 泊松分布
(1)定义:适合于描述单位时间(或空间)内随机事件发生的次数
(2)如何检验:
// 事件相互独立
// 在任意相同的时间内,事件发生的概率相同
// 你想知道某个时间内发生某件事k次的概率
(3)如何计算:
给出时间范围内,某件事发生的平均次数事
求这段时间内,发生k次事的概率:
(4)python 实现
mu =2 # 定义给定时间内发生事件的次数
k =4 # 求给定时间内事件发生4次的概率
# 包含了发生0次,1次,2次,3次,4次
X = np.arange(0,5)
plist = stats.poisson.pmf(X,mu)
# 绘图
plt.plot(X,plist,marker='o',
linestyle='')
plt.vlines(X,0,plist,color='tomato',linewidth=3)
plt.xlabel('给定时间内发生k次事',fontsize=12)
plt.ylabel('概率',fontsize=12)
plt.title('泊松分布',fontsize=17)
plt.show()
连续型概率分布
· 正态分布
(1)定义:概率分布满足中间高、两边低的“钟形曲线”的就是正态分布,形如下图:
曲线越高,也就代表着这个区别的概率越密集,这里面积相当于概率。
下图中的三条曲线f (x),就是概率密度函数,各种形式的概率就是相对应的曲线下面积。
(2)平均值和标准差
一谈到正态分布,我们自然就想到两个参数:平均值和标准差
从此图可以看出,1)概率密度曲线在均值处达到最大,并且对称;2)均数的大小决定了曲线的位置,标准差的大小决定了曲线的胖瘦,标准差越小,意味着大多数变量值离均数的距离越短,因此大多数值都紧密地聚集在均数周围。3)绝大多数数据处于3个标准差以内,所以如果某个数据超出了3个标准差,可以判定为异常值,在数据清洗环节清除。
(3)查正态表求概率
接下来,我们通过一个例子来看如何通过查表法计算正态分布变量在某个区间的概率。
举例:某微信公众号的点赞数满足正态分布,已知点赞数的均值为μ,标准差为σ,求点赞数低于1.5的概率?
step1:确定概率范围 P(k < 1.5)
step2:求标准分
这里要讲一下为什么要求标准分z。因为我们的标准正态分布表是满足均值为0,标准差为1的正态分布的概率分布。所以其他类型的正态分布要经过标准化。这个过程并不会改变形状胖瘦,只是位置发生了变化。
step3:查正态分布表得到概率。标准正态分布https://www.shuxuele.com/data/standard-normal-distribution-table.html
如果是求取其他范围的概率,可以进行思维转换,具体见下图:
· 幂律分布
为什么有了正态分布,还有出现幂律分布呢?是因为有些事件理论上是正态分布,真实却都遵循着幂律分布。
例如财富分布,极少部分人占据了绝大部分的社会财富,幂律分布其实更加贴近现实。
由于数据分析领域,常见的还是正态分布,这里就不过多展开讨论幂律分布。
学习各种概率分布,掌握统计概率思维,能够帮助我们在工作,生活中做出更加明智的决策。