各种分布总结

作者: pdnbplus | 发布时间: 2024/07/13 | 阅读量: 169

# 各种分布总结 -- 潘登同学的数理统计笔记

离散型随机变量分布

0-1分布、伯努利分布

一次抛硬币
EX=pDX=p(1p)EX= p \\ DX=p(1-p)

  • 概率密度函数
    f(xp)={px(1p)x,x=0,10,x0,1f(x|p) = \begin{cases} p^x(1-p)^x, x=0,1\\ 0, x\neq0,1\\ \end{cases}

二项分布(n重伯努利)

n次扔硬币
XB(n,p)X\sim B(n,p)


P{X=k}=nkpk(1p)nkEX=npD(X)=nP(1p)P\{X=k\} = \complement_n^k p^k (1-p)^{n-k}\\ \quad\\ EX = np\\ \quad\\ D(X) = nP(1-p)\\

  • 两个二项分布的和也服从二项分布

如果XB(n,p),YB(n,p)X\sim B(n,p),Y\sim B(n,p)且X与Y相互独立,那么X+Y也服从二项分布:
X+YB(n+m,p)X+Y\sim B(n+m,p)

  • 泊松近似

当试验的次数趋于无穷大,而乘积np固定时,二项分布收敛于泊松分布。因此参数为λ=np的泊松分布可以作为二项分布B(n,p)的近似,近似成立的前提要求n足够大,而p足够小,np不是很小。

  • 正态近似

如果n足够大,那么分布的偏度就比较小。在这种情况下,如果使用适当的连续性校正,那么B(n,p)的一个很好的近似是正态分布:
N(np,np(1p))N(np, np(1-p))
常用的规则是np和n(1 −p)都必须大于 5

超几何分布

从有限N个物件(其中包含M个指定种类的物件)中抽出n个物件,成功抽出该指定种类的物件的次数(不放回)。
XH(n,M,N)X\sim H(n,M,N)


P(X=k)=MkNMnkNnE(X)=nMND(X)=nMN(1MN)NnN1P(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}\\

  • 超几何分布和二项分布的联系
    • NN\to \infty时, MNp\frac{M}{N} \to p
    • NN\to \infty时, 超几何分布的数学期望:
      EX=nMNnp=EXEX=\frac{nM}{N}\to np=EX
    • NN\to \infty时, 超几何分布的方差:
      DX=np(1p)DX=np(1-p)
    • NN\to \infty时, 超几何分布近似为二项分布

几何分布

在n次伯努利试验中,试验k次才得到第一次成功的机率。详细地说,是:前k-1次皆失败,第k次成功的概率。几何分布是帕斯卡分布当r=1时的特例。

XGE(p)X \sim GE(p)


P(X=k)=(1p)k1pEX=1ppVar(x)=1pp2P(X=k) = (1-p)^{k-1}p\\ \quad\\ EX = \frac{1-p}{p}\\ \quad\\ Var(x) = \frac{1-p}{p^2}

泊松分布

泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生次数。 泊松分布适合于描述单位时间内随机事件发生的次数。
XP0(λ)X\sim P_0(\lambda)


P(X=k)=λkk!eλEX=λVar(X)=λP(X=k) = \frac{\lambda^k}{k!}e^{-\lambda}\\ \quad\\ EX = \lambda \\ \quad\\ Var(X) = \lambda

  • λ\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()
  • 两个泊松变量的组合也是泊松分布
    XP(λ),YP(λ),XYX\sim P(\lambda), Y\sim P(\lambda), 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)

连续型随机变量分布

均匀分布

在相同长度间隔的分布概率是等可能的
UabU(a,b)


EX=a+b2Var(X)=(ba)212EX = \frac{a+b}{2}\\ Var(X) = \frac{(b-a)^2}{12}\\

  • 概率密度函数
    f(x)={1ba,a<x<b0,elsef(x) = \begin{cases} \frac{1}{b-a}, a<x<b\\ 0, else\\ \end{cases}

  • 分布函数
    F(x)={0,x<axaba,axb1,b<xF(x) = \begin{cases} 0, x<a\\ \frac{x-a}{b-a}, a\leq x\leq b\\ 1, b < x \end{cases}

均匀分布

#%%均匀分布
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)称为标准均匀分布;

如果U1U_1具有标准均匀分布, 那么1U11-U_1也是标准均匀分布。

指数分布

指数分布(也称为负指数分布)是描述泊松过程中的事件之间的时间的概率分布,即事件以恒定平均速率连续且独立地发生的过程。
XE(λ)X\sim E(\lambda)


EX=1λVar(X)=1λ2EX = \frac{1}{\lambda}\\ Var(X) = \frac{1}{\lambda^2}

  • 概率密度函数
    f(x)={λeλx,x>00,x0f(x) = \begin{cases} \lambda e^{-\lambda x}, x>0\\ 0, x\leq0\\ \end{cases}

  • 分布函数
    F(x)={0,x<01eλx,x0F(x) = \begin{cases} 0, x<0\\ 1-e^{-\lambda x}, x\geq 0\\ \end{cases}

指数分布

#%%指数分布
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,t0s,t\geq 0时有
P(T>s+tT>t)=P(T>s)P(T>s+t|T>t) = P(T>s)

即,如果T是某一元件的寿命,已知元件使用了t小时,它总共使用至少小时的条件概率,与从开始使用时算起它使用至少s小时的概率相等。

正态分布

XN(μ,σ2)X\sim N(\mu, \sigma^2)


EX=μVar(X)=σ2EX = \mu\\ Var(X) = \sigma^2

  • 概率密度函数
    f(x)=12πσ2e(xμ)22σ2f(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^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)
  • 正态分布的线性性

XN(μx,σx2)X\sim N(\mu_x, \sigma_x^2), a、b是实数

aX+bN(aμ+b,(aσ)2)aX + b \sim N(a\mu+b, (a\sigma)^2)

  • 两个正态分布的组合也是正态分布

XN(μx,σx2),YN(μy,σy2)互相独立X\sim N(\mu_x, \sigma_x^2), Y\sim N(\mu_y, \sigma_y^2)互相独立

则他们的和也满足正态分布, U=X+YN(μx+μy,σx2+σy2)U=X+Y\sim N(\mu_x+\mu_y, \sigma_x^2+\sigma_y^2)

则他们的差也满足正态分布, U=XYN(μxμy,σx2+σy2)U=X-Y\sim N(\mu_x-\mu_y, \sigma_x^2+\sigma_y^2)

卡方分布

若n个相互独立的随机变量ζ1,ζ2,,ζn\zeta_1, \zeta_2,\ldots,\zeta_n,均服从标准正态分布(也称独立同分布于标准正态分布),则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量,其分布规律称为卡方分布(chi-square distribution)。
χ2=i=1nXi2Γ(n2,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)


EX=nVar(X)=2nEX = n\\ \quad\\ Var(X) = 2n

  • 概率密度函数
    f(y)={12n/2Γ(n2)yn21ey2,x>00,x0f(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}

  • 那显然也是积不出分布函数的

卡方分布

卡方分布2

#%%卡方分布
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)
  • 渐进正态性

随着nn\to \infty, χ2\chi^2分布趋于正态分布

  • 不同的自由度决定不同的卡方分布

自由度越小,分布越偏斜.

  • 卡方分布的组合也是卡方分布

χ2(n1),χ2(n2)\chi^2(n_1),\chi^2(n_2)互相独立,他们的和服从自由度为n1+n2n_1+n_2的卡方分布

χ2(n1)+χ2(n2)χ2(n1+n2)\chi^2(n_1) + \chi^2(n_2) \sim \chi^2(n_1+n_2)

t分布

假设XN(0,1)X\sim N(0,1)Yχ2(n)Y\sim \chi^2(n)且X、Y相互独立,则称随机变量
t=XYnt = \frac{X}{\sqrt{\frac{Y}{n}}}
服从自由度为n的t分布,记为:
tt(n)t \sim t(n)


EX=0Var(X)=nn2EX = 0\\ \quad\\ Var(X) = \frac{n}{n-2}

  • 概率密度函数
    h(t)=Γ[n+12]πnΓ(n2)(1+t2n)n+12h(t) = \frac{\Gamma[\frac{n+1}{2}]}{\sqrt{\pi n}\Gamma(\frac{n}{2})}(1+\frac{t^2}{n})^{-\frac{n+1}{2}}

  • 分布函数

还是积不出来 0_0

t分布

#%%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(n1)U\sim \chi^2(n_1)Vχ2(n2)V\sim \chi^2(n_2)且U、V相互独立,则称随机变量
F=Un1Vn2F = \frac{\frac{U}{n_1}}{\frac{V}{n_2}}
服从自由度为(n1,n2)(n_1, n_2)的F分布,记为:
FF(n1,n2)F \sim F(n_1, n_2)


EX=nn2Var(X)=2n22(n1+n22)n1(n22)2(n24)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)}\\

  • 概率密度函数
    f(y)={Γ(n1+n22)Γ(n12)Γ(n22)(n1n2)n12yn121(1+n1yn2)n1+n22,y>00,y0f(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}

  • 分布函数

更积不出来了 0_0

F分布1

F分布2

#%%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分布
    1FF(n2,n1)\frac{1}{F} \sim F(n_2, n_1)

  • t分布的平方时F分布

Xt(n),X2F(1,n)设X\sim t(n), 则X^2 \sim F(1, n)

  • 渐进正态性

n1,n2>4n_1 \to \infty, n_2 >4时近似服从正态分布

F分布3