• Python卡方分布


    文章目录

    卡方分布

    k k k个互相独立的随机变量 ξ 1 , ξ 2 , ⋯   , ξ k \xi_1, \xi_2,\cdots,\xi_k ξ1,ξ2,,ξk,均服从标准正态分布,则这k个随机变量的平方和构成一个新变量,这个新变量服从 χ 2 \chi^2 χ2分布。其概率密度函数为

    ρ ( x ) = ( 1 / 2 ) k / 2 Γ ( k / 2 ) x k / 2 − 1 e − x / 2 \rho(x)=\frac{(1/2)^{k/2}}{\Gamma(k/2)}x^{k/2-1}e^{-x/2} ρ(x)=Γ(k/2)(1/2)k/2xk/21ex/2

    所以对 χ 2 \chi^2 χ2分布而言,其自由度 k k k是一个不可避免的参数,一般称之为自由度,在chisquare中就是其输入参数df

    import numpy as np
    import matplotlib.pyplot as plt
    fig = plt.figure()
    for i,df in zip([1,2,3,4],[1,2,5,11]):
        ax = fig.add_subplot(2,2,i)
        ys = np.random.chisquare(df,size=1000)
        ax.hist(ys, bins=100)
        ax.set_title(f"df={df}")
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    得到在不同组随机变量的卡方分布为

    在这里插入图片描述

    k参数

    卡方分布受 k k k值调节,随着 k k k值不断增大,卡方分布越来越接近正态分布。而且卡方分布常用的统计特征也与 k k k密切相关

    特征
    期望 k k k
    方差 k 2 \frac{k}{2} 2k
    中位数 k − 3 2 k-\frac 3 2 k23附近

    可以生成一组随机数进行特征值的检验

    msg = "k".ljust(5)
    msg += "mean".ljust(10)
    msg += "std".ljust(10)
    msg += "median".ljust(10)
    for k in range(1, 10):
        ys = np.random.chisquare(k, size=5000)
        msg += "\n" + f"{k}".ljust(5)
        msg += f"{np.mean(ys):.6}".ljust(10)
        msg += f"{np.std(ys):.6}".ljust(10)
        msg += f"{np.median(ys):.6}".ljust(10)
    
    print(msg)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    效果为

    kmeanstdmedian
    11.049771.46840.488511
    22.003682.019551.40244
    33.041062.494982.41431
    43.926742.843263.2806
    55.016163.173274.36389
    65.977853.469135.33356
    76.937673.76646.24881
    87.940383.92017.32785
    99.06944.205858.37701

    可以明显地看到期望、方差以及中位数和k值的关联性。

    如果考虑方差对随机变量的影响,则可得到非中心的 χ 2 \chi^2 χ2分布,在numpy.random中有函数noncentral_chisquare可以生成非中心的卡方分布。和卡方分布相比,非中心卡方分布多了一个非负的参数nonc,测试一下

    import matplotlib.pyplot as plt
    values = plt.hist(np.random.noncentral_chisquare(3, 20, 100000),
                      bins=200, density=True)
    plt.show()
    
    • 1
    • 2
    • 3
    • 4

    得到其分布图为

    在这里插入图片描述

  • 相关阅读:
    【AutoSAR CAN】05 - 如何使用Davinci Configurator Pro工具配置CAN硬件对象(CanHardwareObject)
    缓存学习总结3(服务器内存缓存)推荐使用
    一文带你看懂HarmonyOS应用上架
    不使用canvas怎么实现一个刮刮卡效果?
    扫雷(简化版)(后附完整代码)
    Java InputStream.available方法具有什么功能呢?
    算法&数据结构 - 栈相关基础概念
    APS成功实施的关键要点
    LockSupport
    【资源信息获取方法】
  • 原文地址:https://blog.csdn.net/m0_37816922/article/details/128102576