Python学习笔记:大数定理和中心极限定理

一、大数定理

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

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

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

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

###### 大数定理 ######
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

os.chdir(r"C:\Users\Hider\Desktop")

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()

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

结论:

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

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

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

额外:

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

参考链接:讲讲大数定理

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

posted @ 2021-05-09 15:08  Hider1214  阅读(847)  评论(0编辑  收藏  举报