各种分布总结 – 潘登同学的数理统计笔记
文章目录
离散型随机变量分布
0-1分布、伯努利分布
一次抛硬币
E
X
=
p
D
X
=
p
(
1
−
p
)
EX= p \\ DX=p(1-p)
EX=pDX=p(1−p)
- 概率密度函数
f ( x ∣ p ) = { p x ( 1 − p ) x , x = 0 , 1 0 , x ≠ 0 , 1 f(x|p) = \begin{cases} p^x(1-p)^x, x=0,1\\ 0, x\neq0,1\\ \end{cases} f(x∣p)={px(1−p)x,x=0,10,x=0,1
二项分布(n重伯努利)
n次扔硬币
X
∼
B
(
n
,
p
)
X\sim B(n,p)
X∼B(n,p)
P { X = k } = ∁ n k p k ( 1 − p ) n − k E X = n p D ( X ) = n P ( 1 − p ) P\{X=k\} = \complement_n^k p^k (1-p)^{n-k}\\ \quad\\ EX = np\\ \quad\\ D(X) = nP(1-p)\\ P{X=k}=∁nkpk(1−p)n−kEX=npD(X)=nP(1−p)
- 两个二项分布的和也服从二项分布
如果 X ∼ B ( n , p ) , Y ∼ B ( n , p ) X\sim B(n,p),Y\sim B(n,p) X∼B(n,p),Y∼B(n,p)且X与Y相互独立,那么X+Y也服从二项分布:
X + Y ∼ B ( n + m , p ) X+Y\sim B(n+m,p) X+Y∼B(n+m,p)
- 泊松近似
当试验的次数趋于无穷大,而乘积np固定时,二项分布收敛于泊松分布。因此参数为λ=np的泊松分布可以作为二项分布B(n,p)的近似,近似成立的前提要求n足够大,而p足够小,np不是很小。
- 正态近似
如果n足够大,那么分布的偏度就比较小。在这种情况下,如果使用适当的连续性校正,那么B(n,p)的一个很好的近似是正态分布:
N ( n p , n p ( 1 − p ) ) N(np, np(1-p)) N(np,np(1−p))
常用的规则是np和n(1 −p)都必须大于 5
超几何分布
从有限N个物件(其中包含M个指定种类的物件)中抽出n个物件,成功抽出该指定种类的物件的次数(不放回)。
X
∼
H
(
n
,
M
,
N
)
X\sim H(n,M,N)
X∼H(n,M,N)
P ( X = k ) = ∁ M k ∁ N − M n − k ∁ N n E ( X ) = n M N D ( X ) = n M N ( 1 − M N ) N − n N − 1 P(X=k) = \frac{\complement_M^k\complement_{N-M}^{n-k}}{\complement_{N}^n}\\ \quad\\ E(X) = \frac{nM}{N}\\ \quad\\ D(X) = \frac{nM}{N}(1-\frac{M}{N})\frac{N-n}{N-1}\\ P(X=k)=∁Nn∁Mk∁N−Mn−kE(X)=NnMD(X)=NnM(1−NM)N−1N−n
- 超几何分布和二项分布的联系
- 当 N → ∞ N\to \infty N→∞时, M N → p \frac{M}{N} \to p NM→p
- 当
N
→
∞
N\to \infty
N→∞时, 超几何分布的数学期望:
E X = n M N → n p = E X EX=\frac{nM}{N}\to np=EX EX=NnM→np=EX - 当
N
→
∞
N\to \infty
N→∞时, 超几何分布的方差:
D X = n p ( 1 − p ) DX=np(1-p) DX=np(1−p) - 当 N → ∞ N\to \infty N→∞时, 超几何分布近似为二项分布
几何分布
在n次伯努利试验中,试验k次才得到第一次成功的机率。详细地说,是:前k-1次皆失败,第k次成功的概率。几何分布是帕斯卡分布当r=1时的特例。
X ∼ G E ( p ) X \sim GE(p) X∼GE(p)
P ( X = k ) = ( 1 − p ) k − 1 p E X = 1 − p p V a r ( x ) = 1 − p p 2 P(X=k) = (1-p)^{k-1}p\\ \quad\\ EX = \frac{1-p}{p}\\ \quad\\ Var(x) = \frac{1-p}{p^2} P(X=k)=(1−p)k−1pEX=p1−pVar(x)=p21−p
泊松分布
泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生次数。 泊松分布适合于描述单位时间内随机事件发生的次数。
X
∼
P
0
(
λ
)
X\sim P_0(\lambda)
X∼P0(λ)
P ( X = k ) = λ k k ! e − λ E X = λ V a r ( X ) = λ P(X=k) = \frac{\lambda^k}{k!}e^{-\lambda}\\ \quad\\ EX = \lambda \\ \quad\\ Var(X) = \lambda P(X=k)=k!λke−λEX=λVar(X)=λ
- λ \lambda λ不同时的泊松分布的概率
#%%泊松分布
import math
import matplotlib.pyplot as plt
def p_possion(k, m):
'''
Parameters
----------
k : int
一段时间内发生事件的次数.
m : int
一段时间平均发生事件的次数(就是λ).
Returns
-------
pk : float
一段时间内发生k次的概率.
'''
kjie = 1 #k!
for i in range(1, k+1):
kjie*=i
pk = math.pow(m, k)/kjie*math.e**(-m)
return pk
if __name__=='__main__':
x = list(range(1,21))
p1 = []
p2 = []
p3 = []
p4 = []
for i in x:
p1.append(p_possion(i, 1))
p2.append(p_possion(i, 3))
p3.append(p_possion(i, 5))
p4.append(p_possion(i, 10))
plt.subplot(221)
plt.bar(x, p1, color='red')
plt.title('λ=1')
plt.subplot(222)
plt.bar(x, p2, color='red')
plt.title('λ=2')
plt.subplot(223)
plt.bar(x, p3, color='red')
plt.title('λ=3')
plt.subplot(224)
plt.bar(x, p4, color='red')
plt.title('λ=4')
plt.show()
- 两个泊松变量的组合也是泊松分布
若 X ∼ P ( λ ) , Y ∼ P ( λ ) , X 与 Y X\sim P(\lambda), Y\sim P(\lambda), X与Y X∼P(λ),Y∼P(λ),X与Y相互独立:
记X发生X次, Y发生Y次;
P
(
X
+
Y
)
=
P
(
X
)
+
P
(
Y
)
E
(
X
+
Y
)
=
E
(
X
)
+
E
(
Y
)
P(X+Y) = P(X) + P(Y)\\ \quad\\ E(X+Y) = E(X) + E(Y)
P(X+Y)=P(X)+P(Y)E(X+Y)=E(X)+E(Y)
连续型随机变量分布
均匀分布
在相同长度间隔的分布概率是等可能的
U
(
a
,
b
)
U(a,b)
U(a,b)
E X = a + b 2 V a r ( X ) = ( b − a ) 2 12 EX = \frac{a+b}{2}\\ Var(X) = \frac{(b-a)^2}{12}\\ EX=2a+bVar(X)=12(b−a)2
-
概率密度函数
f ( x ) = { 1 b − a , a < x < b 0 , e l s e f(x) = \begin{cases} \frac{1}{b-a}, a<x<b\\ 0, else\\ \end{cases} f(x)={b−a1,a<x<b0,else -
分布函数
F ( x ) = { 0 , x < a x − a b − a , a ≤ x ≤ b 1 , b < x F(x) = \begin{cases} 0, x<a\\ \frac{x-a}{b-a}, a\leq x\leq b\\ 1, b < x \end{cases} F(x)=⎩⎪⎨⎪⎧0,x<ab−ax−a,a≤x≤b1,b<x
#%%均匀分布
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def p_uniform(k, a, b):
'''
Parameters
----------
k : float
P(X<k)的k
a : float
区间左端点.
b : float
区间右端点.
Returns
-------
pk : float
累计概率.
plt : figure
概率密度函数与分布函数
'''
x = np.linspace(a,b, int((b-a)*100))
p = 1/(b-a)
plt.figure(figsize=(8,4))
plt.subplot(121)
plt.plot(x, [p]*len(x), 'red')
plt.xlim([a-1, b+1])
plt.ylim([0, 1])
plt.title('区间[%d, %d]上的均匀分布概率密度函数'%(a,b))
plt.subplot(122)
y = (x-a)/(b-a)
plt.plot(x, y, 'b')
plt.xlim([a-1, b+1])
plt.ylim([0, 1])
plt.title('区间[%d, %d]上的均匀分布分布函数'%(a,b))
plt.show()
if k < a:
pk = 0
elif k<=b:
pk = (k-a)/(b-a)
else:
pk = 1
return pk
if __name__=='__main__':
p_uniform(2, 1, 3)
- 标准均匀分布
若a = 0并且b = 1,所得分布U(0,1)称为标准均匀分布;
如果 U 1 U_1 U1具有标准均匀分布, 那么 1 − U 1 1-U_1 1−U1也是标准均匀分布。
指数分布
指数分布(也称为负指数分布)是描述泊松过程中的事件之间的时间的概率分布,即事件以恒定平均速率连续且独立地发生的过程。
X
∼
E
(
λ
)
X\sim E(\lambda)
X∼E(λ)
E X = 1 λ V a r ( X ) = 1 λ 2 EX = \frac{1}{\lambda}\\ Var(X) = \frac{1}{\lambda^2} EX=λ1Var(X)=λ21
-
概率密度函数
f ( x ) = { λ e − λ x , x > 0 0 , x ≤ 0 f(x) = \begin{cases} \lambda e^{-\lambda x}, x>0\\ 0, x\leq0\\ \end{cases} f(x)={λe−λx,x>00,x≤0 -
分布函数
F ( x ) = { 0 , x < 0 1 − e − λ x , x ≥ 0 F(x) = \begin{cases} 0, x<0\\ 1-e^{-\lambda x}, x\geq 0\\ \end{cases} F(x)={0,x<01−e−λx,x≥0
#%%指数分布
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def p_Exponential(k, m):
'''
Parameters
----------
k : float
P(X<k)的k
m : int
两个事件发生的平均时间间隔(就是λ).
Returns
-------
pk : float
累计概率.
plt : figure
概率密度函数与分布函数
'''
x = np.linspace(0,5, 1000)
p = m * np.e ** (-m*x)
plt.figure(figsize=(8,4))
plt.subplot(121)
plt.plot(x, p, 'red')
plt.title('λ=%d时指数分布概率密度函数'%m)
plt.subplot(122)
y = 1 - np.e ** (-m * x)
plt.plot(x, y, 'b')
plt.title('λ=%d时指数分布分布函数'%m)
plt.show()
if k < 0:
pk = 0
else:
pk = 1 - np.e ** (-m * k)
return pk
if __name__=='__main__':
p_Exponential(2, 1)
- 指数分布的无记忆性
这表示如果一个随机变量呈指数分布, 当时有
s
,
t
≥
0
s,t\geq 0
s,t≥0时有
P
(
T
>
s
+
t
∣
T
>
t
)
=
P
(
T
>
s
)
P(T>s+t|T>t) = P(T>s)
P(T>s+t∣T>t)=P(T>s)
即,如果T是某一元件的寿命,已知元件使用了t小时,它总共使用至少小时的条件概率,与从开始使用时算起它使用至少s小时的概率相等。
正态分布
X ∼ N ( μ , σ 2 ) X\sim N(\mu, \sigma^2) X∼N(μ,σ2)
E X = μ V a r ( X ) = σ 2 EX = \mu\\ Var(X) = \sigma^2 EX=μVar(X)=σ2
-
概率密度函数
f ( x ) = 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=2πσ21e−2σ2(x−μ)2 -
分布函数
积不出来 0_0 但是可以用蒙特卡洛计算
#%%正态分布
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def p_Gaussian(k, mu, sigma):
'''
Parameters
----------
k : float
P(X<k)的k
mu : float
正态分布的μ.
sigma : float
正态分布的σ.
Returns
-------
pk : float
累计概率.
plt : figure
概率密度函数与分布函数
'''
x = np.linspace(mu-3*sigma,mu+3*sigma, 1000)
p = 1/np.sqrt(2*np.pi*sigma**2) * np.e ** -((x-mu)**2/2*sigma**2)
plt.figure(figsize=(10,5))
plt.subplot(121)
plt.plot(x, p, 'red')
plt.title('μ=%d,σ=%d时正态分布概率密度函数'%(mu, sigma))
plt.subplot(122)
# 蒙特卡洛求解概率分布函数
y = np.linspace(0, p[500], 1000)
S = 6*sigma * p[500] # 矩形框的总面积
result = [[], []]
for i in range(int(1e4)):
a = np.random.choice(np.linspace(0, 999, 1000))
b = np.random.choice(y)
if x[int(a)] < k and b < p[int(a)]:
result[0].append(x[int(a)])
result[1].append(b)
pk = S * len(result[0]) / 1e4
plt.plot(x, p, 'red')
plt.scatter(result[0], result[1], s=1, c='red')
plt.title('μ=%d,σ=%d,x=%f时正态分布概率密度函数'%(mu, sigma, k))
return print(pk)
if __name__=='__main__':
p_Gaussian(0.5,0,1)
- 正态分布的线性性
X ∼ N ( μ x , σ x 2 ) X\sim N(\mu_x, \sigma_x^2) X∼N(μx,σx2), a、b是实数
a X + b ∼ N ( a μ + b , ( a σ ) 2 ) aX + b \sim N(a\mu+b, (a\sigma)^2) aX+b∼N(aμ+b,(aσ)2)
- 两个正态分布的组合也是正态分布
X ∼ N ( μ x , σ x 2 ) , Y ∼ N ( μ y , σ y 2 ) 互 相 独 立 X\sim N(\mu_x, \sigma_x^2), Y\sim N(\mu_y, \sigma_y^2)互相独立 X∼N(μx,σx2),Y∼N(μy,σy2)互相独立
则他们的和也满足正态分布, U = X + Y ∼ N ( μ x + μ y , σ x 2 + σ y 2 ) U=X+Y\sim N(\mu_x+\mu_y, \sigma_x^2+\sigma_y^2) U=X+Y∼N(μx+μy,σx2+σy2)
则他们的差也满足正态分布, U = X − Y ∼ N ( μ x − μ y , σ x 2 + σ y 2 ) U=X-Y\sim N(\mu_x-\mu_y, \sigma_x^2+\sigma_y^2) U=X−Y∼N(μx−μy,σx2+σy2)
卡方分布
若n个相互独立的随机变量
ζ
1
,
ζ
2
,
…
,
ζ
n
\zeta_1, \zeta_2,\ldots,\zeta_n
ζ1,ζ2,…,ζn,均服从标准正态分布(也称独立同分布于标准正态分布),则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量,其分布规律称为卡方分布(chi-square distribution)。
χ
2
=
∑
i
=
1
n
X
i
2
∼
Γ
(
n
2
,
2
)
Q
∼
χ
2
(
n
)
\chi^2 = \sum_{i=1}^{n}\Chi_i^2 \sim \Gamma(\frac{n}{2}, 2)\\ \quad\\ Q\sim \chi^2(n)
χ2=i=1∑nXi2∼Γ(2n,2)Q∼χ2(n)
E X = n V a r ( X ) = 2 n EX = n\\ \quad\\ Var(X) = 2n EX=nVar(X)=2n
-
概率密度函数
f ( y ) = { 1 2 n / 2 Γ ( n 2 ) y n 2 − 1 e − y 2 , x > 0 0 , x ≤ 0 f(y) = \begin{cases} \frac{1}{2^{n/2}\Gamma(\frac{n}{2})}y^{\frac{n}{2}-1}e^{\frac{-y}{2}}, x>0\\ 0, x\leq0\\ \end{cases} f(y)={2n/2Γ(2n)1y2n−1e2−y,x>00,x≤0 -
那显然也是积不出分布函数的
#%%卡方分布
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as st
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def p_chi_square(k, n):
'''
Parameters
----------
k : float
P(Y<k)的k
n : df自由度
Returns
-------
pk : float
累计概率.
plt : figure
概率密度函数与分布函数
'''
y = np.linspace(0, 15, 1000)
p = st.chi2.pdf(y, df=n)
plt.figure(figsize=(10,5))
plt.subplot(121)
plt.plot(y, p, 'red')
plt.title('df=%d时卡方分布概率密度函数'%(n))
plt.subplot(122) # 用微积分的方法来积
delta_y = y[1]-y[0]
result = []
for i,j in enumerate(p):
if i == 0:
result.append(j*delta_y)
else:
result.append(result[i-1] + j*delta_y)
plt.plot(y, result, 'red')
plt.title('df=%d时卡方分布分布函数'%(n))
pk = st.chi2.cdf(k, df=n)
return print(pk)
if __name__=='__main__':
p_chi_square(1,2)
p_chi_square(1,8)
- 渐进正态性
随着 n → ∞ n\to \infty n→∞, χ 2 \chi^2 χ2分布趋于正态分布
- 不同的自由度决定不同的卡方分布
自由度越小,分布越偏斜.
- 卡方分布的组合也是卡方分布
χ 2 ( n 1 ) , χ 2 ( n 2 ) \chi^2(n_1),\chi^2(n_2) χ2(n1),χ2(n2)互相独立,他们的和服从自由度为 n 1 + n 2 n_1+n_2 n1+n2的卡方分布
χ 2 ( n 1 ) + χ 2 ( n 2 ) ∼ χ 2 ( n 1 + n 2 ) \chi^2(n_1) + \chi^2(n_2) \sim \chi^2(n_1+n_2) χ2(n1)+χ2(n2)∼χ2(n1+n2)
t分布
假设
X
∼
N
(
0
,
1
)
X\sim N(0,1)
X∼N(0,1),
Y
∼
χ
2
(
n
)
Y\sim \chi^2(n)
Y∼χ2(n)且X、Y相互独立,则称随机变量
t
=
X
Y
n
t = \frac{X}{\sqrt{\frac{Y}{n}}}
t=nYX
服从自由度为n的t分布,记为:
t
∼
t
(
n
)
t \sim t(n)
t∼t(n)
E X = 0 V a r ( X ) = n n − 2 EX = 0\\ \quad\\ Var(X) = \frac{n}{n-2} EX=0Var(X)=n−2n
-
概率密度函数
h ( t ) = Γ [ n + 1 2 ] π n Γ ( n 2 ) ( 1 + t 2 n ) − n + 1 2 h(t) = \frac{\Gamma[\frac{n+1}{2}]}{\sqrt{\pi n}\Gamma(\frac{n}{2})}(1+\frac{t^2}{n})^{-\frac{n+1}{2}} h(t)=πnΓ(2n)Γ[2n+1](1+nt2)−2n+1 -
分布函数
还是积不出来 0_0
#%%t分布
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as st
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def p_t(k, n):
'''
Parameters
----------
k : float
P(Y<k)的k.
n : int
df自由度.
Returns
-------
pk : float
累计概率.
plt : figure
概率密度函数与分布函数.
'''
t = np.linspace(-5, 5, 1000)
p = st.t.pdf(t, df=n)
plt.figure(figsize=(10,5))
plt.subplot(121)
plt.plot(t, p, 'red')
plt.title('df=%d时t分布概率密度函数'%(n))
plt.subplot(122) # 用微积分的方法来积
delta_t = t[1]-t[0]
result = []
for i,j in enumerate(p):
if i == 0:
result.append(j*delta_t)
else:
result.append(result[i-1] + j*delta_t)
plt.plot(t, result, 'red')
plt.title('df=%d时t分布分布函数'%(n))
pk = st.t.cdf(k, df=n)
return print(pk)
if __name__=='__main__':
p_t(0,3)
- 渐进正态性
随着自由度逐渐增大,t分布逐渐接近标准正态分布。
- 不同的自由度决定不同的t分布
自由度df越小,t分布曲线越低平;自由度df越大,t分布曲线越接近标准正态分布曲线。
F分布
假设
U
∼
χ
2
(
n
1
)
U\sim \chi^2(n_1)
U∼χ2(n1),
V
∼
χ
2
(
n
2
)
V\sim \chi^2(n_2)
V∼χ2(n2)且U、V相互独立,则称随机变量
F
=
U
n
1
V
n
2
F = \frac{\frac{U}{n_1}}{\frac{V}{n_2}}
F=n2Vn1U
服从自由度为
(
n
1
,
n
2
)
(n_1, n_2)
(n1,n2)的F分布,记为:
F
∼
F
(
n
1
,
n
2
)
F \sim F(n_1, n_2)
F∼F(n1,n2)
E X = n n − 2 V a r ( X ) = 2 ∗ n 2 2 ( n 1 + n 2 − 2 ) n 1 ( n 2 − 2 ) 2 ( n 2 − 4 ) EX = \frac{n}{n-2}\\ \quad\\ Var(X) = \frac{2*n_2^2(n_1 + n_2 - 2)}{n_1(n_2-2)^2(n_2-4)}\\ EX=n−2nVar(X)=n1(n2−2)2(n2−4)2∗n22(n1+n2−2)
-
概率密度函数
f ( y ) = { Γ ( n 1 + n 2 2 ) Γ ( n 1 2 ) Γ ( n 2 2 ) ( n 1 n 2 ) n 1 2 y n 1 2 − 1 ( 1 + n 1 y n 2 ) − n 1 + n 2 2 , y > 0 0 , y ≤ 0 f(y) = \begin{cases} \frac{\Gamma(\frac{n_1+n_2}{2})}{\Gamma(\frac{n_1}{2})\Gamma(\frac{n_2}{2})}(\frac{n_1}{n_2})^{\frac{n_1}{2}}y^{\frac{n_1}{2}-1}(1+\frac{n_1y}{n_2})^{-\frac{n_1+n_2}{2}}, y>0\\ 0, y\leq0\\ \end{cases} f(y)={Γ(2n1)Γ(2n2)Γ(2n1+n2)(n2n1)2n1y2n1−1(1+n2n1y)−2n1+n2,y>00,y≤0 -
分布函数
更积不出来了 0_0
#%%F分布
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as st
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def p_F(k, n1, n2):
'''
Parameters
----------
k : float
P(Y<k)的k.
n1 : int
df自由度1.
n2 : int
df自由度2.
Returns
-------
pk : float
累计概率.
plt : figure
概率密度函数与分布函数.
'''
F = np.linspace(0, 5, 1000)
p = st.f.pdf(F, dfn=n1, dfd=n2)
plt.figure(figsize=(10,5))
plt.subplot(121)
plt.plot(F, p, 'red')
plt.title('df=(%d, %d)时t分布概率密度函数'%(n1, n2))
plt.subplot(122) # 用微积分的方法来积
delta_F = F[1]-F[0]
result = []
for i,j in enumerate(p):
if i == 0:
result.append(j*delta_F)
else:
result.append(result[i-1] + j*delta_F)
plt.plot(F, result, 'red')
plt.title('df=(%d, %d)时t分布分布函数'%(n1, n2))
pk = st.f.cdf(k, dfn=n1, dfd=n2)
return print(pk)
if __name__=='__main__':
p_F(3,10,40)
p_F(3,11,3)
-
F分布的倒数也是F分布
1 F ∼ F ( n 2 , n 1 ) \frac{1}{F} \sim F(n_2, n_1) F1∼F(n2,n1) -
t分布的平方时F分布
设 X ∼ t ( n ) , 则 X 2 ∼ F ( 1 , n ) 设X\sim t(n), 则X^2 \sim F(1, n) 设X∼t(n),则X2∼F(1,n)
- 渐进正态性
当 n 1 → ∞ , n 2 > 4 n_1 \to \infty, n_2 >4 n1→∞,n2>4时近似服从正态分布