概率中常见的分布
概率论中的分布有两种类型
- 离散概率分布:伯努利分布,二项分布,几何分布,泊松分布
- 连续概率分布: 均匀分布,指数分布,正态分布
离散分布
伯努利分布
伯努利分布又叫两点分布,伯努利试验:伯努利试验是在同样的条件下重复地、各次之间相互独立地进行的一种试验。即只先进行一次伯努利试验,该事件发生的概率为p,不发生的概率为1-p。这是一个最简单的分布,任何一个只有两种结果的随机现象都服从0-1分布。
import scipy.stats as stats
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
X = np.arange(0, 2, 1) #随机变量
p = 0.5
pList = stats.bernoulli.pmf(X,p)
pList
#绘图
plt.plot(X,pList, marker='o',linestyle='None')
plt.vlines(X,0,pList) #x坐标,y坐标下限,y坐标上限
plt.xlabel('随机变量:抛硬币一次')
plt.ylabel('概率')
plt.title('伯努利分布:p=%.2f' % p)
plt.show()
二项分布
n重伯努利试验,比如抛硬币10次,其中5次为正面的次数
概率函数:
f
(
x
)
=
C
n
x
p
x
(
1
−
p
)
n
−
x
f(x) = C^{x}_{n}p^{x}(1-p)^{n-x}
f(x)=Cnxpx(1−p)n−x
x为成功的次数,p为每次成功的概率
二项分布的期望 E ( x ) = n p E(x) = np E(x)=np
方差 V a r ( x ) = n p ( 1 − p ) Var(x)=np(1-p) Var(x)=np(1−p)
#定义随机变量,抛5次,正面朝上得概率
n = 5
p = 0.5
X = np.arange(0,n+1, 1)
#求对应分布的概率:概率质量函数PMF
#返回一个列表,列表中每个元素表示随机变量中对应值的概率
pList = stats.binom.pmf(X,n,p)
pList
#绘图
plt.plot(X,pList,marker='o',linestyle='None') #m默认是折线图,我们只画点图
plt.vlines(X,0,pList)
plt.xlabel('随机变量:抛硬币正面朝上的次数')
plt.ylabel('概率')
plt.title('二项分布:n=%i,p=%.2f' % (n,p))
几何分布
1.做某件事的次数是固定的,次数用n表示
n次某件事是相互独立的
2.每一件事都有两个可能的结果(成功,或者失败)
3.每一次成功的概率都相等,成功的概率用p表示
4.想知道第k次做某件事情,才取到第一次成功的概率事多少
#定义随机变量
k = 5 #第k做某件事才取得成功的概率
p =0.6 #做某件事成功的概率
X = np.arange(1, k+1, 1)
pList = stats.geom.pmf(X,p)
pList
#绘图
plt.plot(X,pList,marker='o',linestyle='None')
plt.vlines(X,0,pList)
plt.xlabel('随机变量:做某事第K次才成功')
plt.ylabel('概率')
plt.title('几何分布:p=%.2f' %p)
plt.show()
泊松分布
1.事件是独立性的
2.在任意相同的时间范围内,事件发生的概率
3.你想知道某个时间范围内,发生某件事情k次的概率有多大
比如说,你在等车,15分钟平均有10辆车达到,那么你想知道15分钟内有5辆车到达的概率
p
{
X
=
m
}
=
λ
m
m
!
e
−
λ
p\begin{Bmatrix} X = m \end{Bmatrix} = \frac{\lambda^{m}}{m!}e^{-\lambda}
p{X=m}=m!λme−λ
'''
定义随机变量:
已知某路口发生事故的比率是每天2次,
那么再此处一天内发生k次事故的概率是多少
'''
λ=2 # 平均值:每天发生两次事故
k=4 #次数,现在想知道每天发生4次事故的概率
X = np.arange(0,k+1,1)
pList = stats.poisson.pmf(X,λ)
pList
#绘图
plt.plot(X,pList,marker='o',linestyle='None')
plt.vlines(X,0,pList)
plt.xlabel('随机变量:某路口发生k次事故')
plt.ylabel('概率')
plt.title('泊松分布:平均值λ=%i' %λ)
plt.show()
连续分布
正态分布
在np≥5和n(1-p)≥5的情况下,正态分布是对二项分布的近似
概率密度函数:
f
(
x
)
=
1
σ
2
π
e
−
1
2
σ
2
(
x
−
μ
)
2
f(x) = \frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{1}{2\sigma^{2}}(x-\mu)^{2}}
f(x)=σ2π1e−2σ21(x−μ)2
mu = 0 # 均值
sigma = 1 # 方差
X = np.arange(-5, 5, 0.1)
p_list = stats.norm.pdf(X,mu, sigma)
plt.plot(X, p_list)
plt.xlabel('Random Variable: X, X(Experimental Result) = The height of human')
plt.ylabel('Probability')
plt.title('norm, mu:{}; sigma:{}'.format(mu, sigma))
指数分布
指数分布和泊松分布的关系
泊松分布是一段时间内某件事发生的次数,描述的是每一区间中事件发生的次数
指数分布描述了事件发生的事件间隔长度
比如:装载一辆卡车的平均时间为15分钟,6分钟装载成功的概率是多少?
概率密度函数:
f
(
x
)
=
1
μ
e
−
x
/
μ
f(x) = \frac{1}{\mu}e^{-x/\mu}
f(x)=μ1e−x/μ
u = 15 #装载一辆车的平均时间为15分钟
offset = 0 # 偏移量,从offset开始o
X = np.arange(0, 20, 0.01)
p_list = stats.expon.pdf(X,0,u)
plt.plot(X, p_list)
plt.xlabel('Random Variable: X, X(Experimental Result) = the interval between two happen things')
plt.ylabel('Probability')
plt.title('norm, u:{}'.format(u))
卡方( χ 2 \chi^{2} χ2)分布
n个独立同分布,服从N(0,1)的随机变量的平方和服从自由度为n的
χ
2
\chi^{2}
χ2分布
χ
2
=
X
1
2
+
X
2
2
+
.
.
.
.
+
X
n
2
∼
χ
2
(
n
)
\chi^{2} = X^{2}_{1} + X^{2}_{2} + ....+X^{2}_{n}\sim\chi^{2}(n)
χ2=X12+X22+....+Xn2∼χ2(n)
t分布
X~N(0,1),Y~
χ
2
(
n
)
\chi^{2}(n)
χ2(n)则
t
=
X
Y
/
n
t = \frac{X}{\sqrt{Y/n}}
t=Y/nX
服从自由度为n的t分布,记为t~t(n)
F分布
设X和Y是相互独立的服从
χ
2
\chi^{2}
χ2分布的随机变量,自由度分布为
n
1
n_{1}
n1和
n
2
n_{2}
n2,则称随机变量:
F
=
X
/
n
1
Y
/
n
2
∼
F
(
n
1
,
n
2
)
F = \frac{X/n_{1}}{Y/n_{2}}\sim F(n_{1},n_{2})
F=Y/n2X/n1∼F(n1,n2)
F称为第一自由度为
n
1
n_{1}
n1,第二自由度为
n
2
n_{2}
n2的F分布
抽样分布
抽样分布几个概念
参数:总体的数字特征
中心极限定理:当样本很大时,可以用正态分布近似抽样的均值的分布
#实现一个γ分布,从中抽取100个样本,求其均值
np.random.seed(42)
data=np.random.gamma(1,100,30000)
plt.hist(data)
#每次抽取100个样本,抽取10000次
means_distribution = []
for _ in range(10000):
sample = np.random.choice(data,100)
means_distribution.append(sample.mean())
means_distribution = np.array(means_distribution)
plt.hist(means_distribution)