中心极限定理的模拟—R实现
中心极限定理,是指概率论中讨论随机变量序列部分和分布渐近于正态分布的一类定理。这组定理是数理统计学和误差分析的理论基础,指出了大量随机变量近似服从正态分布的条件。它是概率论中最重要的一类定理,有广泛的实际应用背景。在自然界与生产中,一些现象受到许多相互独立的随机因素的影响,如果每个因素所产生的影响都很微小时,总的影响可以看作是服从正态分布的。中心极限定理就是从数学上证明了这一现象,最早的中心极限定理是讨论重点,伯努利试验中,事件A出现的次数渐近于正态分布的问题。
一、统计学根基——中心极限定理
中心极限定理有着有趣的历史。这个定理的第一版被法国数学家棣莫弗发现,他在1733年发表的卓越论文中使用正态分布去估计大量抛掷硬币出现正面次数的分布。这个超越时代的成果险些被历史遗忘,所幸著名法国数学家拉普拉斯在1812年发表的巨著Théorie Analytique des Probabilités中拯救了这个默默无名的理论。拉普拉斯扩展了棣莫弗的理论,指出二项分布可用正态分布逼近。但同棣莫弗一样,拉普拉斯的发现在当时并未引起很大反响。直到十九世纪末中心极限定理的重要性才被世人所知。1901年,俄国数学家里雅普诺夫用更普通的随机变量定义中心极限定理并在数学上进行了精确的证明。如今,中心极限定理被认为是(非正式地)概率论中的首席定理。
设随机变量\(X_1\),\(X_2\),...,\(X_n\),...独立同分布,并且具有有限的数学期望和方差:\(E({X_i})=\mu\),\(D({X_i})\)=\(\sigma^2(i=1,2,...)\),则对任意\(x\),分布函数
满足
该定理说明,当很大时,随机变量
近似地服从标准正态分布N(0,1)。
从定理可知,期望为\(\mu\),方差为\(\sigma^2\)的独立同分布随机变量序列 \(X_1\),\(X_2\),...,\(X_n\)之和$$\sum\limits_{k=1}^nX_k$$的标准化变量,当\(n\)足够大时,近似服从标准正态分布,即$$ \frac{\sum\limits_{k=1}^nX_k-n\mu}{\sqrt{n}\sigma}\sim N(0,1) $$
由于
因此有$$ \frac{\overline X-\mu}{\sigma/\sqrt{n}}\sim N(0,1) \quad 或 \quad \overline X \sim N(\mu,\sigma^2/n)$$ 这是独立同分布的中心极限定理结果的另一个形式(Important!!!)。在实际工作中,只要n足够大,便可以把独立同分布的随机变量之和当作正态变量。
二、中心极限定理模拟
中心极限定理告诉我们,当样本量足够大时,样本均值的分布慢慢变成正态分布,如下图:
2.1 指数分布
library(moments)
options(digits = 3)
options(scipen = 200)
X = rexp(10000, rate=1) # 原始分布,可以随便设置,这里为指数分布
X_mean = mean(X) # 原始分布的均值
X_var= var(X) # 原始分布的方差
m=5000 # 抽取的次数
par(new=TRUE)
par(mfrow=c(3,3))
for(n in c(1,5,10,20,30,50,100,500,1000))
{
# 每次从原始分布里随机抽取样本的个数
s=c()
for(j in 1:m)
{
sample=sample(X,n)# 从原始分布里随机选取n个样本
sample_mean = mean(sample)# 求样本的均值
s[j]=sample_mean
}
hist(s,breaks = 50,xlab ="",main = paste('n = ',n,sep=''))
}
2.2 二项分布
library(moments)
options(digits = 3)
options(scipen = 200)
X = rbinom (10000,size=1,prob =0.7) # 原始分布,可以随便设置,这里为二项分布
X_mean = mean(X) # 原始分布的均值
X_var= var(X) # 原始分布的方差
m=1000 # 抽取的次数
par(new=TRUE)
par(mfrow=c(3,3))
for(n in c(1,5,10,20,30,50,100,500,1000))
{
# 每次从原始分布里随机抽取样本的个数
s=c()
for(j in 1:m)
{
sample=sample(X,n)# 从原始分布里随机选取n个样本
sample_mean = mean(sample)# 求样本的均值
s[j]=sample_mean
}
hist(s,breaks = 50,xlab ="",main = paste('n = ',n,sep=''))
}
2.3 均匀分布
library(moments)
options(digits = 3)
options(scipen = 200)
X = runif(10000, min=0,max = 2) # 原始分布,可以随便设置,这里为均匀分布
X_mean = mean(X) # 原始分布的均值
X_var= var(X) # 原始分布的方差
m=5000 # 抽取的次数
par(new=TRUE)
par(mfrow=c(3,3))
for(n in c(1,5,10,20,30,50,100,500,1000))
{
# 每次从原始分布里随机抽取样本的个数
s=c()
for(j in 1:m)
{
sample=sample(X,n)# 从原始分布里随机选取n个样本
sample_mean = mean(sample)# 求样本的均值
s[j]=sample_mean
}
hist(s,breaks = 50,xlab ="",main = paste('n = ',n,sep=''))
}
三、总结
中心极限定理是统计学中的一个基本定理,它是一个非常简单的概念。当你进一步阅读时就会发现,这也是一个很重要的概念。在分析领域,我们每天都会遇到各种各样的数据,而源数据的分布并不总是被我们所知道的,但是,因为我们了解中心极限定理,所以我们甚至不需要关心源数据的分布,因为我们总是可以得到正态分布。