zoukankan      html  css  js  c++  java
  • Python学习笔记:大数定理和中心极限定理

    一、大数定理

    大数定理:随着样本容量 n 不断增加,样本平均数将越来越接近于总体平均数(期望),我们把总体的平均数称为期望。(均值与期望是不同的)

    基于大数定理的存在,日常分析过程中一般都会使用样本的均值来估计总体的均值。

    样本均值只是接近总体均值,不代表等于,还是存在一定的偏差。

    利用 Python 随机生成10w个值作为总体,随机抽取部分数据计算均值,并绘制均值趋势图。

    ###### 大数定理 ######
    import os
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    os.chdir(r"C:UsersHiderDesktop")
    
    data = np.random.randint(1, 100000, 100000)
    # np.random.randint(low, high, size) 产生离散均匀分布的整数
    sample_size = []
    # sample_size = [i for i in range(100,100000,100)]
    # 直接列表推导式生成效率更高
    sample_mean = []
    
    for i in range(100, 100000, 100):
        sample_size.append(i)
        sample_mean.append(np.random.choice(data, i).mean())
    
    pd.DataFrame({"sample_size":sample_size,
                  "sample_mean":sample_mean}).set_index("sample_size").plot()
    plt.axhline(data.mean(), color="red")
    # 绘制平行于x轴的水平参考线
    plt.savefig("大数定理.jpg", dpi=200)
    plt.show() # 先保存再show
    

    结论:红线代表总体均值,随着样本容量 n 的不断增加,样本均值的波动幅度越来越小,越接近于总体均值。

    二、中心极限定理

    中心极限定理:现在有一个总体数据,如果从该总体数据中随机抽取若干样本,重复多次,每次抽样得到的样本量统计值(比如均值)与总体的统计值(比如均值)应该是差不多的,而且重复多次以后会得到多个统计值,这多个统计值会呈正态分布。

    利用 Python 随机生成10w个值,并绘制分布图。

    ###### 中心极限定理 ######
    import numpy as np
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    data = np.random.rand(100000)
    sns.distplot(data)
    plt.savefig("中心极限定理分布图1.jpg", dpi=200)
    plt.show()
    

    通过分布图可以看出,这10w个随机数基本是均等分布,每个值出现的概率差不多。

    从10w个样本中随机抽取若干个样本(300、500、1000、5000),重复抽取100次,得到100个样本均值,然后绘制样本均值分布图。

    # 重复抽取100次
    # 创建画布
    plt.figure(figsize = (9,9))
    # 图1
    plt.subplot(221)
    sample_mean =[]
    for i in range(1, 100):
        s = np.random.choice(data, size=300).mean()
        sample_mean.append(s)
    sns.distplot(sample_mean)
    plt.title("Size=300")   
    # 图2
    plt.subplot(222)
    sample_mean =[]
    for i in range(1, 100):
        s = np.random.choice(data, size=500).mean()
        sample_mean.append(s)
    sns.distplot(sample_mean)
    plt.title("Size=500")
    # 图3
    plt.subplot(223)
    sample_mean =[]
    for i in range(1, 100):
        s = np.random.choice(data, size=1000).mean()
        sample_mean.append(s)
    sns.distplot(sample_mean)
    plt.title("Size=1000")
    # 图4
    plt.subplot(224)
    sample_mean =[]
    for i in range(1, 100):
        s = np.random.choice(data, size=5000).mean()
        sample_mean.append(s)
    sns.distplot(sample_mean)
    plt.title("Size=5000")
    plt.savefig("中心极限定理分布图2.jpg", dpi=200)
    plt.show()
    

    运行后得到不同样本量对应的样本均值的分布结果。

    结论:

    不同样本量对应的均值分布均符合正态分布。

    样本均值符合正态分布,而不是样本本身符合正态分布。

    可以利用抽样结果的均值来估计总体的均值。

    额外:

    分层抽样可以保证样本代表性,足够随机。

    参考链接:讲讲大数定理

    参考链接:讲讲中心极限定理

  • 相关阅读:
    WPF、UWP以及其他类型项目的csproj文件的迁移(SDK-Style)
    文书生成笔录预设保存按钮Mq中间转传服务
    卷宗添加争议焦点数据制造脚本(卷宗部分)
    案件信息同步之后,文书系统案件名称显示不正确问题
    DISTINCT----mysql移除返回的重复值
    Nginx系列教程(6)Nginx location 匹配规则详细解说
    转载 chrony 详解
    dmesg 时间转换
    axios---get和post用法详解
    通过递归来封装sessionStorage---set/get/delete
  • 原文地址:https://www.cnblogs.com/hider/p/14747921.html
Copyright © 2011-2022 走看看