python验证中心极限定理_中心极限定理的最最通俗解释

一、什么是中心极限定理

在适当的条件下,大量相互独立随机变量的均值经适当标准化后依分布收敛于正态分布。每次从这些总体中随机抽取 n 个抽样,一共抽 m 次。 然后把这 m 组抽样分别求出平均值, 这些平均值的分布接近正态分布。设从均值为μ、方差为

(有限)的任意一个总体中抽取样本量为n的样本,当n充分大时,样本均值

的抽样分布近似服从均值为μ、方差为

的正态分布。

中心极限定理告诉我们,当样本量足够大时,样本均值的分布慢慢变成正态分布,就像下图:

下面我们来通过实例来看看一个掷骰子的平均分布,如何变成一个正态分布。

二、Python实例

2.1 生成均匀分布的掷骰子随机数

生成在半开半闭区间[low,high)上离散均匀分布的整数值,即1-6的均匀分布

import numpy as np

import seaborn as sns

data = np.random.randint(1, 7, 10000)

sns.distplot(data)多次掷一个骰子的均匀分布

可以看到1-6的点数是比较均匀的分布的【注意,每一次运行的图都不一样的哦】

2.2 抽取一组数据

通过以下程序来从data中随机抽取一组数

sample1 = []

for i in range(0, 10):

rnd = int(np.random.random() * len(data))#0-9999的随机数生产

sample1.append(data[rnd])

print(sample1)

返回结果:[2, 3, 2, 1, 1, 4, 2, 1, 5, 3]

2.3 抽取1000组数据

我们在生产的随机数中,一次抽取50个作为一组并计算它的平均值,共抽取1000次,得到1000个平均值,然后通过seaborn的distplot看着1000个数值的分布。

samples = []

s_mean = []

for i in range(0, 1000):

sample = []

for j in range(0, 50):

rnd = int(np.random.random() * len(data))#0-9999的随机数生产

sample.append(data[rnd])#循环50次的结果存放在samples

s_mean.append(np.mean(sample))#得到的50次sample的平均数放到s_mean后,重新循环第二次的50次循环,samples清空

sns.distplot(s_mean)

三、重要性和注意

当采样的数量接近无穷大时,我们的抽样分布就会近似于正态分布。这个统计学基础理论意味着我们能根据个体样本推断所有样本。结合正态分布的其他知识,我们可以轻松计算出给定平均值的值的概率。在理论上保证了我们可以用只抽样一部分的方法,达到推测研究对象统计参数的目的。

其中要注意的几点:总体本身的分布不要求正态分布:掷一个骰子是平均分布,最后每组的平均值也会组成一个正态分布。

样本每组要足够大,但也不需要太大:取样本的时候,一般认为每组大于等于30个,即可让中心极限定理发挥作用。

你可能感兴趣的:(python验证中心极限定理)