美文网首页程序员
大数定理和中心极限定理的粗浅理解

大数定理和中心极限定理的粗浅理解

作者: UlissesJr | 来源:发表于2018-10-26 16:12 被阅读348次
    • 大数定律的意义:随着样本容量n的增加,样本平均数将接近于总体平均数(期望 μ),所以在统计推断中,一般都会使用样本平均数估计总体平均数的值。
    • 也就是我们会使用一部分样本的平均值来代替整体样本的期望/均值,出现偏差 的可能是存在的,但是当n足够大的时候,偏差的可能性是非常小的,当n无限大 的时候,这种可能性的概率基本为0。
    • 大数定律的主要作用就是为使用频率来估计概率提供了理论支持;为使用部分数 据来近似的模拟构建全部数据的特征提供了理论支持。
    #大数定理理解展示
    import random
    import numpy as np 
    import matplotlib as mpl 
    import matplotlib.pyplot as plt 
    
    #解决显示中文的问题
    mpl.rcParams['font.sans_serif'] = [u'SimHei']
    mpl.rcParams['axes.unicode_minus'] = False
    
    #给定随机数的种子
    random.seed(28)
    
    def generate_random_int(n):
        """产生n个1-9的随机数"""
        return [random.randint(1,9) for i in range(n)]
    
    if __name__ == '__main__':
        number = 8000
        x = [i for i in range(number+1) if i != 0]
        #产生number个1-9的随机数
        total_random_int = generate_random_int(number)
        #求n个[1,9]的随机数的均值,n=1,2,3,4,5...
        y = [np.mean(total_random_int[0:i+1]) for i in range(number)]
    
        plt.plot(x,y,'b-')
        plt.xlim(0,number)
        plt.grid(True)
        plt.show()
    
    Figure_1.png

    当样本数量足够大时,均值接近于5(总体数据的期望值).


    中心极限定理(Central Limit Theorem);假设{Xn}为独立同分布的随机变量序 列,并具有相同的期望μ和方差为σ2,则{Xn}服从中心极限定理,且Zn为随机序列{Xn}的范围和:

    中心极限定理就是一般在同分布的情况下,抽样样本值的规范和在总体数量趋于
    无穷时的极限分布近似于正态分布。

    随机的抛六面的骰子,计算三次点数的和的分布:

    #大数定理理解展示
    import random
    import numpy as np 
    import matplotlib as mpl 
    import matplotlib.pyplot as plt 
    
    #解决显示中文的问题
    # mpl.rcParams['font.sans_serif'] = [u'SimHei']
    # mpl.rcParams['axes.unicode_minus'] = False
    
    #给定随机数的种子
    random.seed(28)
    
    #事件A = x1+x2+x3 ,其中x1,x2,x3是分别抛骰子的点数
    #根据中心极限定理,由于x1,x2,x3属于独立同分布,所以说最终的事件A属于高斯分布
    
    def generate_random_int():
       """随机产生一个[1,6]的数字,表示一个六面的骰子的结果"""   
       return random.randint(1,6)
    
    def generate_sum(n):
       """计算返回n次抛骰子的和的结果"""
       return np.sum([generate_random_int() for i in range(n)])
    
    if __name__ == '__main__':
       #进行每次A事件抛几次骰子
       number1 = 10000000
       #表示每次A事件抛几次骰子
       number2 = 3
    
       #进行number1次事件A的操作,每次事件A都进行number2次
       keys = [generate_sum(number2) for i in range(number1)]
    
       #统计每个和数字出现的次数,eg:和为3的出现多少次,和为10的出现多少次
       result = {}
       for key in keys:
           count = 1
           if key in result:
               count += result[key]
           result[key] = count
    
       #获取x和y
       x = sorted(np.unique(list(result.keys())))
       y = []
       for key in x:
           #将出现的次数进行一个百分比的计算
           y.append(result[key]/number1)
    
       #画图:
       plt.plot(x,y,'b-')
       plt.xlim(x[0] -1 ,x[-1] +1)
       plt.grid(True)
       plt.show()
    
    Figure_2.png

    n为3,1-6的平均值为3.5,3μ为10.5,大概就是图中的位置。

    相关文章

      网友评论

        本文标题:大数定理和中心极限定理的粗浅理解

        本文链接:https://www.haomeiwen.com/subject/mxaktqtx.html