zoukankan      html  css  js  c++  java
  • 常用概率分布简介

    概要

    在统计分析中,经常会有假设参数服从某种分布,所以在此文中,参考《概率论与数理统计》(茆诗松著),简单罗列一下经常碰到的分布,做下简单介绍,并且结合 Python 中 Scipy.stats 模块进行模拟。将要介绍的分布目录如下:

      二项分布
      泊松分布
      正态分布
      多元正态分布
      均匀分布
      指数分布
      伽玛分布
      贝塔分布
      卡方分布
      (F) 分布
      (t) 分布

     


    二项分布

     

    描述

    可以简单理解为 (n) 重伯努利试验中成功(概率为 (p))的次数的分布,记为 (X),则 (X) 可能取值为 (0,1,cdots,n)。二项分布概率密度函数为:
    egin{align}
    P(X=k) = C_n^k p^k (1-p)^{n-k}, qquad k=0,1,2,cdots,n
    end{align}
    记为 (X sim b(n,p))。其期望、方差为:
    egin{align}
    E(X) &= np \
    Var(X) &= np(1-p)
    end{align}

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import binom
    
    fig = plt.figure()
    
    for i, item in enumerate([(10, 0.2), (10, 0.5), (10, 0.8)]):
        n, p = item
        # stats 函数返回均值、方差、偏度、峰值,可以根据 moments 参数设置返回哪些值,
        # 其值为均值、方差、偏度、峰值的首字母,可自己随意组合,比如 'mv','vsk' 等
        mean, var, skew, kurt = binom.stats(n, p, moments='mvsk') 
        
        # ppf: Percent point function
        x = np.arange(binom.ppf(0.01, n, p), binom.ppf(0.99, n, p))
        
        ax = fig.add_subplot(1, 3, i+1)
    
        ax.spines['top'].set_visible(False)  # 设置线框不可见
        ax.spines['right'].set_visible(False)
        
        # pmf: Probability mass function
        ax.plot(x, binom.pmf(x, n, p), 'bo', ms = 8)
        
        if i == 0:
            ax.text(2.5, 0.25, u'偏度 = '+str(skew)[:5])
            ax.text(2.5, 0.23, u'峰度 = '+str(kurt)[:5])
            ax.set_xlabel(r'$b(10, 0.2)$'+u'的线条图(右偏)')
        if i == 1:
            ax.text(1.5, 0.21, u'偏度 = '+str(skew)[:5])
            ax.text(1.5, 0.19, u'峰度 = '+str(kurt)[:5])
            ax.set_xlabel(r'$b(10, 0.5)$'+u'的线条图(对称)')
        if i == 2:
            ax.text(5, 0.25, u'偏度 = '+str(skew)[:6])
            ax.text(5, 0.23, u'峰度 = '+str(kurt)[:5])
            ax.set_xlabel(r'$b(10, 0.8)$'+u'的线条图(左偏)')
            
        ax.vlines(x, 0, binom.pmf(x, n, p), 'b', lw = 5, alpha=0.5)
    
    plt.show()
    
    # 可用 rvs 函数产生服从该分布的值
    # 其中 loc 为平移量,从原先的 0~n 转变为 loc~loc+n    
    # r = binom.rvs(n, p, loc = 0, size = 1, random_state = None )
    

    结果如下图:

    图1:二项分布 $b(n,p)$ 的线条图

    从上图可以看出:

    • 位于均值 (np) 附近概率较大
    • 随着 (p) 的增加,分布的峰逐渐右移

     


    泊松分布

     

    描述

    泊松分布的概率分布列是
    egin{align}
    P(X=k) = frac{lambda^k}{k!} mathrm{e}^{-lambda}, qquad k=0,1,2,cdots
    end{align}
    其中参数 (lambda >0),记为 (X sim P(lambda))。期望、方差为
    egin{align}
    E(X) &= lambda \
    Var(X) &= lambda
    end{align}
    也就是说,泊松分布 (P(lambda)) 中的参数 (lambda) 既是数学期望又是方差。

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import poisson
    
    fig = plt.figure()
    
    for i, mu in enumerate([0.8, 2.0, 4.0]):
        
        # stats 函数返回均值、方差、偏度、峰值,可以根据 moments 参数设置返回哪些值,
        # 其值为均值、方差、偏度、峰值的首字母,可自己随意组合,比如 'mv','vsk' 等
        mean, var, skew, kurt = poisson.stats(mu, moments='mvsk') 
        
        # ppf: Percent point function
        x = np.arange(poisson.ppf(0.01, mu), poisson.ppf(0.99, mu))
        
        ax = fig.add_subplot(1, 3, i+1)
    
        ax.spines['top'].set_visible(False)  # 设置线框不可见
        ax.spines['right'].set_visible(False)
        
        # pmf: Probability mass function
        ax.plot(x, poisson.pmf(x, mu), 'bo', ms = 8)
        
        if i == 0:
            ax.text(1.2, 0.3, u'偏度 = '+str(skew)[:5])
            ax.text(1.2, 0.27, u'峰度 = '+str(kurt)[:5])
            ax.set_xlabel(r'$P(0.8)$'+u'的线条图')
        if i == 1:
            ax.text(2.5, 0.22, u'偏度 = '+str(skew)[:5])
            ax.text(2.5, 0.20, u'峰度 = '+str(kurt)[:5])
            ax.set_xlabel(r'$P(2.0)$'+u'的线条图')
        if i == 2:
            ax.text(6, 0.14, u'偏度 = '+str(skew)[:6])
            ax.text(6, 0.13, u'峰度 = '+str(kurt)[:5])
            ax.set_xlabel(r'$P(4.0)$'+u'的线条图')
            
        ax.vlines(x, 0, poisson.pmf(x, mu), 'b', lw = 5, alpha=0.5)
    
    plt.show() 
       
    # 可用 rvs 函数产生服从该分布的值
    # 其中 loc 为平移量,从原先的 0~n 转变为 loc~loc+n   
    # r = poisson.rvs(mu, loc = 3, size=10)
    

    结果如下图:

    图2:泊松分布 $P(lambda)$ 的线条图

    从上图可以看出:

    • 位于均值 (lambda) 附近概率较大
    • 随着 (lambda) 的增加,分布逐渐趋于对称

     


    正态分布

     

    描述

    正态分布的概率密度函数为:
    egin{align}
    p(x) = frac{1}{sqrt{2pi} sigma} mathrm{e}^{-dfrac{(x-mu)^2}{2sigma^2}},qquad -infty < x< + infty
    end{align}
    记作 (X sim N(mu, sigma^2))。期望、方差分别为 (mu)(sigma^2)

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import norm
    
    rv1 = norm(0, 0.5)  # 这样可固定参数,方便在后边直接引用
    rv2 = norm(0, 1.0)
    rv3 = norm(0, 1.5)
    
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
        
    # stats 函数返回均值、方差、偏度、峰值,可以根据 moments 参数设置返回哪些值,
    # 其值为均值、方差、偏度、峰值的首字母,可自己随意组合,比如 'mv','vsk' 等
    # mean, var, skew, kurt = rv1.stats(moments='mvsk') 
    
    # ppf: Percent point function
    x = np.linspace(rv1.ppf(0.01), rv1.ppf(0.99), 100)
    
    ax.spines['top'].set_visible(False)  # 设置线框不可见
    ax.spines['right'].set_visible(False)
    
    ax.vlines(0, 0, rv1.pdf(0), lw = 5, alpha = 0.6)
    
    ax.set_ylim(0,1)
    ax.set_xticks([])
    
    # pdf: Probability density function
    ax.plot(x, rv1.pdf(x), 'r-', lw = 5, alpha = 0.6, label=r'$sigma^2$ = 0.5')
    ax.plot(x, rv2.pdf(x), 'g-', lw = 5, alpha = 0.6, label=r'$sigma^2$ = 1.0')
    ax.plot(x, rv3.pdf(x), 'b-', lw = 5, alpha = 0.6, label=r'$sigma^2$ = 1.5')
    plt.legend()
    ax.set_xlabel(r'$mu$'+u'固定,'+r'$sigma$ 值改变')
    
    plt.show() 
       
    # 可用 rvs 函数产生服从该分布的值
    # 其中 loc 为平移量,从原先的 0~n 转变为 loc~loc+n   
    # r = rv1.rvs(size=10)
    

    结果如下图:

    图3:正态密度函数

    从上图可以看出:

    • 如果固定 (mu),改变 (sigma) 的值,则 (sigma) 愈小,曲线呈高而瘦,(sigma) 愈大,曲线呈矮而胖,也就是说正态密度函数的尺度由参数 (sigma) 所确定,因此 (sigma) 称为尺度参数

     


    多元正态分布

     

    描述

    多元正态分布的概率密度函数为:
    egin{align}
    f(x) = frac{1}{sqrt{(2pi)^k mathrm{det} \, Sigma}} mathrm{exp} left( - dfrac{1}{2} (x-mu)^T Sigma^{-1} (x-mu) ight)
    end{align}
    称为 (k) 元随机变量 (X) 服从参数为 (mu)(Sigma) 的多元正态分布,记为 (X sim N_k(mu, Sigma)),称 (N_k(0, I))(k) 元标准正态分布。期望、协方差分别为 (mu)(Sigma)。其中有一个性质是 ((x-mu)^T Sigma^{-1} (x-mu) sim mathcal{X}^2_k)

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import multivariate_normal
    
    x, y = np.mgrid[-1:1:0.01, -1:1:0.01]
    pos = np.dstack((x, y))
    
    rv = multivariate_normal([0.5, -0.2], [[2.0, 0.3], [0.3, 0.5]])  # 均值和协方差
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    
    ax.spines['top'].set_visible(False)  # 设置线框不可见
    ax.spines['right'].set_visible(False)
    
    # pdf: Probability density function
    ax.contourf(x, y , rv.pdf(pos), 100, cmap = 'hot') # 100 控制等位线间距
    
    plt.show() 
    

    结果如下图:

    图 4:二元正态分布的等位图

     


    均匀分布

     

    描述

    若随机变量 (X) 的密度函数为
    egin{align}
    p(x) = egin{cases} dfrac{1}{b-a}, qquad a < x< b \ 0, qquad others end{cases}
    end{align}
    则称 (X) 服从区间 ((a,b)) 上的均匀分布,记作 (X sim U(a, b))。其期望、方差为:
    egin{align}
    E(X) &= frac{a+b}{2} \
    Var(X)&= frac{(b-a)^2}{12}
    end{align}

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import uniform
    
    # ppf: Percent point function 
    x = np.linspace(uniform.ppf(0.01), uniform.ppf(0.99), 100)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    ax.spines['top'].set_visible(False)  # 设置线框不可见
    ax.spines['right'].set_visible(False)
    
    rv = uniform()
    # pdf: Probability density function
    ax.plot(x, rv.pdf(x), 'r-', lw = 5, alpha = 0.6, label = 'uniform pdf') 
     
    # 可用 rvs 函数产生服从该分布的值
    # 其中 loc 为平移量,从原先的 0~n 转变为 loc~loc+n   
    r = rv.rvs(size = 1000)
    
    ax.hist(r, normed = True, histtype = 'stepfilled', alpha = 0.2)
    plt.legend()
    plt.show()   
    

    结果如下图:

    图 5:均匀分布 $U(0, 1)$ 的概率密度图

     


    指数分布

     

    描述

    若随机变量 (X) 的密度函数为
    egin{align}
    p(x) = egin{cases} lambda mathrm{e}^{-lambda x}, qquad x geqslant 0 \ 0, qquad x<0 end{cases}
    end{align}
    则称 (X) 服从指数分布,记作 (X sim Exp(lambda)),其中参数 (lambda >0)。其期望、方差为:
    egin{align}
    E(X) &= frac{1}{lambda} \
    Var(X)&= frac{1}{lambda ^2}
    end{align}
    指数分布具有无记忆性。

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import expon
    
    # ppf: Percent point function 
    x = np.linspace(expon.ppf(0.01), expon.ppf(0.99), 100)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    ax.spines['top'].set_visible(False)  # 设置线框不可见
    ax.spines['right'].set_visible(False)
    
    rv = expon()
    # pdf: Probability density function
    ax.plot(x, rv.pdf(x), 'r-', lw = 5, alpha = 0.6, label = 'expon pdf') 
     
    # 可用 rvs 函数产生服从该分布的值
    # 其中 loc 为平移量,从原先的 0~n 转变为 loc~loc+n   
    r = rv.rvs(size = 1000)
    
    ax.hist(r, normed = True, histtype = 'stepfilled', alpha = 0.2)
    plt.legend()
    plt.show() 
    
    

    结果如下图:

    图 6:指数分布 $Exp(1)$ 的概率密度图

     


    伽玛分布

     

    描述

    称以下函数
    egin{align}
    Gamma(alpha) = int _0^{+infty} x^{alpha-1}mathrm{e}^{-x} \, mathrm{d}x
    end{align}
    为伽玛函数,其中参数 (alpha>0)。伽玛函数具有以下性质:

    • (Gamma(1) = 1)(Gamma(dfrac{1}{2}) = sqrt{pi})
    • (Gamma(alpha+1) = alpha Gamma(alpha)),当 (alpha) 为自然数 (n) 时,有 (Gamma(n+1) = n!)

    若随机变量 (X) 的密度函数为
    egin{align}
    p(x) = egin{cases} dfrac{lambda^{alpha}}{Gamma(alpha)} x^{alpha-1} mathrm{e}^{-lambda x}, qquad x geqslant 0 \ 0, qquad x<0 end{cases}
    end{align}
    则称 (X) 服从伽玛分布,记作 (X sim Ga(alpha, lambda)),其中参数 (alpha >0) 为形状参数,(lambda>0) 为尺度参数。其期望、方差为:
    egin{align}
    E(X) &= dfrac{alpha}{lambda} \
    Var(X)&= frac{alpha}{lambda ^2}
    end{align}
    伽玛分布有两个常用的特例:

    • (alpha=1) 时的伽玛分布就是指数分布,即 (Ga(1, lambda) = Exp(lambda))
    • (alpha = dfrac{n}{2})(lambda = dfrac{1}{2}) 时的伽玛分布是自由度为 (n) 的卡方分布,即 (Ga(dfrac{n}{2}, dfrac{1}{2}) = mathcal{X}^2(n))

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import gamma
    
    
    rv = gamma(0.5, 1)
    rv1 = gamma(1., 1)
    rv2 = gamma(1.5, 1)
    rv3 = gamma(2., 1)
    rv4 = gamma(3., 1)
    
    # ppf: Percent point function 
    x = np.linspace(rv3.ppf(0.01), rv.ppf(0.999), 100)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    ax.spines['top'].set_visible(False)  # 设置线框不可见
    ax.spines['right'].set_visible(False)
    
    # pdf: Probability density function
    ax.plot(x, rv.pdf(x), 'r-', lw = 3, alpha = 0.6, label = r'$alpha=0.5$') 
    ax.plot(x, rv1.pdf(x), 'k-', lw = 3, alpha = 0.6, label = r'$alpha=1.0$')
    ax.plot(x, rv2.pdf(x), 'b-', lw = 3, alpha = 0.6, label = r'$alpha=1.5$')
    ax.plot(x, rv3.pdf(x), 'g-', lw = 3, alpha = 0.6, label = r'$alpha=2.0$')
    ax.plot(x, rv4.pdf(x), 'c-', lw = 3, alpha = 0.6, label = r'$alpha=3.0$')
     
    # 可用 rvs 函数产生服从该分布的值
    # 其中 loc 为平移量,从原先的 0~n 转变为 loc~loc+n   
    #r = rv.rvs(size = 1000)
    
    plt.legend()
    plt.show()   
    

    结果如下图:

    图 7:$lambda=1$ 固定、不同 $alpha$ 和伽玛密度函数曲线

    从图中可以看出:

    • (0<alpha<1) 时,(p(x)) 是严格下降函数,且在 (x=0) 处有奇异点
    • (alpha =1) 时,(p(x)) 是严格下降函数,且在 (x=0)(p(0)=lambda)
    • (1<alpha leqslant 2) 时,(p(x)) 是单峰函数,先上凸、后下凸
    • (2 leqslant alpha) 时,(p(x)) 是单峰函数,先下凸、中间上凸、后下凸,且 (alpha) 越大,(p(x)) 越近似于正态密度

     


    贝塔分布

     

    描述

    称以下函数
    egin{align}
    B(a,b) = int_0^1 x^{a-1} (1-x)^{b-1} \,mathrm{d} x
    end{align}
    为贝塔函数,其中参数 (a>0)(b>0) 。贝塔函数具有如下性质:

    • (B(a,b)=B(b,a))
      -(B(a,b)=dfrac{Gamma(a) Gamma(b)}{Gamma(a+b)})

    若随机变量 (X) 的密度函数为
    egin{align}
    p(x) = egin{cases} dfrac{Gamma(a) Gamma(b)}{Gamma(a+b)} x^{a-1}(1-x)^{b-1}, qquad 0< x <1 \ 0, qquad others end{cases}
    end{align}
    则称 (X) 服从贝塔分布,记作 (X sim Be(a, b)),其中参数 (a>0)(b>0),两者都为形状参数。其期望、方差为:
    egin{align}
    E(X) &= frac{a}{a+b} \
    Var(X)&= frac{ab}{(a+b)^2(a+b+1)}
    end{align}

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import beta
    
    rv1 = beta(0.5, 0.5)
    rv2 = beta(1.5, 1.5)
    # ppf: Percent point function 
    x = np.linspace(0, 1, 100)
    
    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    
    ax1.spines['top'].set_visible(False)  # 设置线框不可见
    ax1.spines['right'].set_visible(False)
    
    # pdf: Probability density function
    ax1.plot(x, rv1.pdf(x), lw = 3, alpha = 0.6, label = r'$a=0.5, b=0.5$') 
    ax1.plot(x, rv2.pdf(x), lw = 3, alpha = 0.6, label = r'$a=1.5, b=1.5$')
    ax1.vlines(1, 0, rv1.pdf(0.999), linestyles = 'dashed', lw = 3, alpha=0.6)
    ax1.legend()
    
    # 可用 rvs 函数产生服从该分布的值
    # 其中 loc 为平移量,从原先的 0~n 转变为 loc~loc+n   
    #r = rv.rvs(size = 1000)
    
    plt.show()   
    

    结果如下图:

    图 8:均匀分布 $U(0, 1)$ 的概率密度图

    从上图可以看出:

    • (a<1,b<1) 时,(p(x)) 是下凸的单峰函数
    • (a>1,b>1) 时,(p(x)) 是上凸的单峰函数
    • (a<1,bgeqslant 1) 时,(p(x)) 是下凸的单调减函数
    • (ageqslant 1,b<1) 时,(p(x)) 是下凸的单调增函数
    • (a=1,b=1) 时,(p(x)) 是常函数,且 (Be(1,1)=U(0,1))

     


    卡方分布

     

    描述

    (X_1,X_2, cdots,X_n) 独立同分布于标准正态分布 (N(0,1)),则 (mathcal{X}^2 = X_1^2+cdots+X_n^2) 的分布称为自由度为 (n)(mathcal{X}^2) 分布,记为 (mathcal{X}^2 sim mathcal{X}^2(n))

    (X sim N(0, 1)),则 (X^2 sim Ga(dfrac{1}{2},dfrac{1}{2})),根据伽玛分布的可加独立性有 (mathcal{X}^2 sim Ga(dfrac{n}{2}, dfrac{1}{2})=mathcal{X}^2(n)),由此可见,(mathcal{X}^2) 分布是伽玛分布的特例,故 (mathcal{X}^2(n)) 分布 的密度函数为
    egin{align}
    p(y) = dfrac{(1/2)^{dfrac{n}{2}}}{Gamma(n/2)}y^{dfrac{n}{2}-1}mathrm{e}^{-dfrac{y}{2}}, qquad y>0
    end{align}
    该密度函数的图像是一个只取非负值的偏态分布。其期望等于自由度、方差为两倍的自由度,即:
    egin{align}
    E(X) &= n \
    Var(X)&= 2n
    end{align}

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import chi2
    
    rv1 = chi2(4)
    rv2 = chi2(6)
    rv3 = chi2(10)
    
    # ppf: Percent point function 
    x = np.linspace(rv2.ppf(0.01), rv2.ppf(0.99), 100)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    ax.spines['top'].set_visible(False)  # 设置线框不可见
    ax.spines['right'].set_visible(False)
    
    # pdf: Probability density function
    ax.plot(x, rv1.pdf(x), lw = 3, alpha = 0.6, label = r'$n=4$') 
    ax.plot(x, rv2.pdf(x), lw = 3, alpha = 0.6, label = r'$n=6$')
    ax.plot(x, rv3.pdf(x), lw = 3, alpha = 0.6, label = r'$n=10$')
    
    ax.legend()
    
    # 可用 rvs 函数产生服从该分布的值
    # 其中 loc 为平移量,从原先的 0~n 转变为 loc~loc+n   
    #r = rv.rvs(size = 1000)
    
    plt.show()   ![]()
    
    

    结果如下图:

    图 9:卡方分布 $mathcal{X}^2(n)$ 的概率密度图

     


    (F) 分布

     

    描述

    (X_1 sim mathcal{X}^2(m))(X_2 sim mathcal{X}^2(n))(X_1)(X_2) 独立,则称 (F = dfrac{X_1 / m}{X_2 / n}) 的分布是自由度为 (m)(n)(F) 分布,记为 (F sim F(m,n)),其中 (m) 称为分子自由度,(n) 称为分母自由度。
    其密度函数为
    egin{align}
    p(y) = dfrac{Gammaleft(dfrac{m+n}{2} ight) left( dfrac{m}{n} ight)^{dfrac{m}{2}}}{Gammaleft(dfrac{m}{2} ight)Gammaleft(dfrac{n}{2} ight)} y^{dfrac{m}{2}-1} left( 1+ dfrac{m}{n}y ight)^{-dfrac{m+n}{2}} , qquad y > 0
    end{align}
    该密度函数的图像是一个只取非负值的偏态分布。由 (F) 分布的构造知,若 (Fsim F(m,n)),则有 (1/F sim F(n,m))。经验证 (F) 分布的期望与方差不一定存在,详细的有待考证。

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import f
    
    rv1 = f(4, 1)
    rv2 = f(4, 4)
    rv3 = f(4, 10)
    rv4 = f(4, 4000)
    
    # ppf: Percent point function 
    x = np.linspace(rv2.ppf(0.01), rv2.ppf(0.9), 100)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    ax.spines['top'].set_visible(False)  # 设置线框不可见
    ax.spines['right'].set_visible(False)
    
    # pdf: Probability density function
    ax.plot(x, rv1.pdf(x), lw = 3, alpha = 0.6, label = r'$m=4, n=1$') 
    ax.plot(x, rv2.pdf(x), lw = 3, alpha = 0.6, label = r'$m=4, n=4$')
    ax.plot(x, rv3.pdf(x), lw = 3, alpha = 0.6, label = r'$m=4, n=10$')
    ax.plot(x, rv4.pdf(x), lw = 3, alpha = 0.6, label = r'$m=4, n=4000$')
    
    ax.legend()
    
    # 可用 rvs 函数产生服从该分布的值
    # 其中 loc 为平移量,从原先的 0~n 转变为 loc~loc+n   
    #r = rv.rvs(size = 1000)
    
    plt.show()   
    

    结果如下图:

    图 10:$F$ 分布 $F(m, n)$ 的概率密度图

     


    (t) 分布

     

    描述

    设随机变量 (X_1)(X_2) 独立且 (X_1 sim N(0,1))(X_2 sim mathcal{X}^2(n)),则称 (t = dfrac{X_1}{sqrt{X_2 / n}}) 的分布是自由度为 (n)(t) 分布,记为 (t sim t(n))。由标准正态密度函数的对称性知,(X_1)(-X_1) 有相同分布,从而 (t)(-t) 有相同分布。其密度函数为
    egin{align}
    p(y) = dfrac{Gammaleft(dfrac{n+1}{2} ight)}{sqrt{npi}Gammaleft(dfrac{n}{2} ight)} left( 1+ dfrac{y^2}{n} ight)^{-dfrac{n+1}{2}} , qquad -infty < y < +infty
    end{align}

    (t) 分布的密度函数的图像是一个关于纵轴对称的分布,与标准正态分布的密度函数形状类似,只是峰比标准正态分布低一些,尾部的概率比标准正态分布的大一些。且有以下结论:

    • 自由度为 (1)(t) 分布就是标准柯西分布,它的均值不存在
    • (n>1) 时,(t) 分布的数学期望存在且为 (0)
    • (n>2) 时,(t) 分布的方差存在,且为 (dfrac{n}{n-2})
    • 当自由度较大(如 (ngeqslant 30) )时,(t) 分布可以用 (N(0,1)) 分布近似

     

    实验模拟

    python 代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed Apr 18 22:36:31 2018
    
    @author: zhoukui
    """
    
    import matplotlib.pyplot as plt  
    import numpy as np
    from scipy.stats import t
    from scipy.stats import norm
    
    rv1 = t(1)
    rv2 = t(2)
    rv3 = t(4)
    rv4 = norm()
    
    # ppf: Percent point function 
    x = np.linspace(rv4.ppf(0.001), rv4.ppf(0.999), 100)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    ax.spines['top'].set_visible(False)  # 设置线框不可见
    ax.spines['right'].set_visible(False)
    
    # pdf: Probability density function
    ax.plot(x, rv1.pdf(x), lw = 3, alpha = 0.6, label = r'$t(1)$') 
    ax.plot(x, rv2.pdf(x), lw = 3, alpha = 0.6, label = r'$t(2)$')
    ax.plot(x, rv3.pdf(x), lw = 3, alpha = 0.6, label = r'$t(4)$')
    ax.plot(x, rv4.pdf(x), lw = 3, alpha = 0.6, label = r'$N(0,1)$')
    
    ax.legend()
    
    # 可用 rvs 函数产生服从该分布的值
    # 其中 loc 为平移量,从原先的 0~n 转变为 loc~loc+n   
    #r = rv.rvs(size = 1000)
    
    plt.show() 
    
    

    结果如下图:

    图 11:$t$ 分布概率密度图

     
     
     
     
     

  • 相关阅读:
    SQL 2005 开启OpenRowset/OpenDatasource的办法
    SQLSERVER存储过程查找所有数据表中某列存在空值
    SQLSERVER存储过程查找所有数据表中某列存在空值
    SQLSERVER存储过程查找数据表中某列存在空值
    SQLSERVER存储过程查找数据表中某列存在空值
    Memcached入门
    Memcached入门
    面试干货——年底干货大放送,你准备好了吗?
    面试干货——年底干货大放送,你准备好了吗?
    1.svn 彻底clear时,注意代码备份 2.借助vc助手加头文件
  • 原文地址:https://www.cnblogs.com/zhoukui/p/8976965.html
Copyright © 2011-2022 走看看