从中心极限定理的模拟到正态分布

从中心极限定理的模拟到正态分布

2010/05/09优化与模拟推荐文章统计图形统计推断R语言SASShapiro检验中心极限定理动画密度曲线数学假设条件样本均值样本量正态分布泰勒展开直方图统计模拟钟形曲线随机变量谢益辉

昨日翻看朱世武老师的《金融计算与建模》幻灯片(来源,幻灯片“13随机模拟基础”),其中提到了中心极限定理(Central Limit Theorem,下文简称CLT)及其SAS模拟实现。由于我一直觉得我们看到的大多数对CLT的模拟都有共同的误导性,因此在此撰文讲述我的观点,希望能说清楚CLT的真实面目,让读者对它有更深刻的理解。

一、中心极限定理说了什么

从广义的角度来讲,CLT说的是一些随机变量之和(在n趋于无穷的时候)趋于正态分布,条件是这些随机变量之间相关性不要太严重,每个随机变量自身的方差相对来说不要太大。我们平时看到的都是CLT的最简单的形式:随机变量独立同分布,方差有限。实际上独立同分布不是必要的条件。要理解这段话,我们就得去思考一下Lindeberg条件或Liapounov条件的含义,以及非独立情况下的CLT。而CLT为什么偏偏选中了正态分布呢?这主要是泰勒展开的功劳(注1),加上特征函数作为“催化剂”,捣鼓半天,最后一看,特征函数的极限形式正是正态分布。本文不打算走到这样偏僻的数学角落,只是先介绍一下CLT的前世今生,当我们在统计理论上犯迷糊的时候,回溯到事情的最原始状态,往往能让头脑更清醒(注2)。

即使是最简单的CLT,我觉得几乎所有做模拟的人都走入了一个误区,就是把钟形密度曲线解释为正态分布。给一个非正态的总体分布,重复计算若干次样本均值,把密度以直方图或密度曲线的形式画出来,给观众们说,看:钟形曲线!群众们一看,哇,原本是左偏/右偏/水平的密度,现在真的变成了对称的钟形曲线。于是乎不得不信服CLT的魔力。

二、中心极限定理的模拟

我们缺的不是钟形曲线,而是样本均值的分布和正态分布差多少的指标。这一点在下面第3小节中再谈,先看几个常见的模拟例子。

1、对称的钟形曲线不代表正态分布

很多人喜欢用掷骰子的例子来讲中心极限定理,大意是将两次独立掷骰子的结果加起来,看这个和的分布。我犹记当年人大一位老师给我们上抽样就举了这个例子说明CLT的魔力:看,即使样本量为2,得到的分布也是正态分布!恰好昨天在朱老师的幻灯片中又看到这个例子,不禁感叹这样一个糟糕的例子竟然经久不衰。这个例子的骗局在哪儿呢?其实很简单:在于掷骰子得到的结果的“对称性”,换句话说,结果是1、2、3、4、5、6,这6个数字围绕其均值3.5左右对称,因此两次骰子的结果加起来也围绕7对称,再画个图,两边低,中间高,看似正态分布好像出来了。朱老师的SAS代码如下:

data a;
do x1=1 to 6;
do x2=1 to 6;
output;
end;
end;  /*模拟掷骰子两次,生成36行数据*/
data a;
set a;
x=sum(x1,x2);
proc univariate data=a noprint;
var x;
histogram/normal (mu=est sigma=est);
run;

先跑题说一处细节:这段代码中的直方图不合适,因为我们知道结果x只可能是整数,而(SAS)直方图默认的分组也会以整数为边界,每个边界上的整数都被归到右边的条中去了,而这个所谓的直方图其实只是个条形图:展示每种结果的频数。所以这种情况下认为指定非整数的分组边界才能显示数据真实的分布。以下是R代码:

x = rowSums(expand.grid(1:6, 1:6))
hist(x, breaks = seq(min(x) - 0.5, max(x) + 0.5, 1), main = "")

两次掷骰子得到的结果之和的分布

样本量为2的时候真的得到正态分布了么?CLT确实有它的神奇之处,但还没那么神奇。以上结果如我前文所说,仅仅是由于样本空间中的元素的对称性,所以得到了一副对称的图形,看起来像是正态分布,如果我们再用另外6个数字试验一下,马上就看穿这种迷惑了,我把最后一个数字换成15再看直方图:

d = c(1, 2, 3, 4, 5, 15)
x = rowSums(expand.grid(d, d))
hist(x, breaks = seq(min(x) - 0.5, max(x) + 0.5, 1), main = "")

6个数字中2个样本之和的分布

如何?“正态分布”哪里去了?客官是否能看清骰子中的中心极限定理谎言了?

2、直方图上添加正态密度曲线有误导性

在我还会用SPSS的年代(大约是SPSS 15.0),我就发现SPSS的一个荒唐之处,它的直方图有个选项,可以控制是否添加正态密度曲线。我们被“正态”毒害得多深,从这些软件设置就可以看出来。为什么只能加正态密度曲线,而不能加数据自身反映出来的核密度估计曲线?换句话说,数据的分布一定要是正态么?

我们看CLT的模拟,很多人也喜欢在直方图上加上正态分布密度曲线,这有一定道理:可以看直方图跟正态密度的差异有多大。然而,我们却很少见直方图上的核密度曲线(注3)。既然是要作比较,就拿最可比的去比,比如曲线对曲线,直方图对直方图,人眼本来就是不精确的测量工具,那么制图者就应该提供尽量准确而方便的参照系。

3、给出拟合好坏的指标

综上,我在两年多以前已经把这些CLT模拟的想法写成函数收录在R包animation中,参见函数clt.ani()。代码及输出如下:

if (!require(animation)) install.packages("animation")
library(animation)
ani.options(interval = 0.1, nmax = 100)
par(mar = c(4, 4, 1, 0.5))
clt.ani()

中心极限定理模拟:从指数分布到正态分布

这个CLT模拟的过程很简单:给一个总体分布(默认为右偏的指数分布),在给定样本量n时不断重复抽样分别计算样本均值,一直这样计算obs个均值,并画出它们的直方图和相应的核密度估计曲线;然后随着n增大,看相应的样本均值分布如何。此外,我使用了Shapiro正态性检验来检验这些均值的正态性,并把P值取出来画在下半幅图中。这样我们就很清楚地知道,对于每一种样本量(n = 1, …, 100),我们的样本均值究竟离正态分布多远。此处P值就充当了一个拟合好坏的指标。可以看出,上面的动画中,当样本量n超过20之后,P值会普遍偏大,也就是样本均值的分布和正态分布比较接近(严格来说,是“不能拒绝正态分布”),但也不能保证样本量大就一定意味着正态分布,譬如上图中n=40的时候P值就很小。

三、小结

正态分布在统计中的地位如此之重要,以至于人们几乎认为正态是一种自然而然的分布,本文想说明的是,正态有它的自然性(参见注1),但我们不能逮着两边低中间高的东西都叫正态(参见小学课文《小蝌蚪找妈妈》);做模型或分析数据之前,先清空脑子里的这种“正态教义”,用事实说话。

另外,前面胡江堂挖了个大坑,大家跳进去争论了半天SAS和R的问题,我在这里也挖个小坑:就模拟而言,如果有SAS用户愿意研究一下,我想知道朱老师的SAS模拟代码是否有改进的余地。SAS自70年代创立,过了二十多年才引进“函数”这种杀人越货编程必备之工具,一直以来都是“宏”的天下,说它“恐龙”应该也不冤枉吧。朱老师幻灯片中的长篇SAS代码,如果用R改写,应该都不会超过三五行甚至一行(注4),而反过来可能就麻烦了,比如上面的动画(用SAS怎么写?),它用R之所以方便,是因为R大量的统计相关的函数可任意调用,而图形也很灵活,可以把P值动态写在图例的位置,也可以愿意把样本量n作为下标动态写在X ¯   旁边。

脚注

注1:以我的浅见,统计学中绝大多数极限正态分布的来源都是泰勒展开,主要是因为泰勒展开中有一个平方项,这个东西和正态分布的密度函数(或特征函数)看起来形式相似,再加上一些对高次项的假设(使它们在极限中消去),正态分布也就来了。另一个典型例子是极大似然估计的渐近正态性:泰勒展开中一阶导数为零,剩下二阶像正态。此外,正态分布有个独特的特点,就是它的密度函数和特征函数长得很像,冥冥之中也主导了很多统计量的分布(这一点我还没太想清楚)。

注2:我很少见统计学家强调这种想法的重要性,仿佛大家都埋在公式堆里都推导得倍儿高兴。有两个例外:一个是Brian Ripley教授,我在看他的一份幻灯片Selecting amongst large classes of models的时候发现他竟然回顾了AIC的假设条件——这是我见过的唯一一个讲模型选择时会回到数学根源的人;另一个是Ripley的老搭档,Bill Venables,他在他那著名的手稿Exegeses on Linear Models中竟然从泰勒展开来说线性模型的来历,这也是我在所有我读过的线性模型相关的文章和书中看到的唯一一份从泰勒展开角度谈线性模型的材料。我个人并不喜欢数学,但我喜欢看思路。

注3:我的观点是,画直方图尽量加上核密度估计曲线,因为它能刻画数据在任意位置上的密度大小,而直方图的形状则完全受制于分组边界的位置。当然,核密度估计曲线也取决于核函数,但大多数情况下,核函数不会对曲线的形状有太大的影响。不过邱怡轩在前面“有边界区间上的核密度估计”一文中提到的问题很值得注意。

注4:伯努利随机变量之和的分布。SAS代码:

symbol;
goptions ftext= ctext= htext=;

%macro a(n);
data rv;
retain _seed_ 0;
do _i_ = 1 to &n;
binom1 = ranbin(_seed_,&n,0.8); /*ranbin函数返回以seed、n、0.8为参数的二项分布随机变量*/
output;
end;
drop _seed_ _i_;
run;
%mend;

%a(100);

proc univariate data=rv noprint;
var binom1;
histogram/normal( mu=est sigma=est);
inset normal ;
run;

R代码:

a = function(n) hist(rbinom(n, n, 0.8))

什么叫向量化编程?这就是R它爹S语言诞生的原因之一:统计学的编程不应该涉及到那么多繁琐的循环。

<:footer class="entry-meta">

时间: 2024-10-10 15:08:54

从中心极限定理的模拟到正态分布的相关文章

[傅里叶变换及其应用学习笔记] 十. 卷积与中心极限定理

这份是本人的学习笔记,课程为网易公开课上的斯坦福大学公开课:傅里叶变换及其应用. 中心极限定理(Central Limit Theorem) 中心极限定理,简称CLT.大多数概率事件,当有足够多的取样时,都服从高斯分布.(Most probabilities – some kind of average – are calculated or approximated as if they are determined by a Gaussian.) 标准正态(高斯)分布 在傅里叶变换中,我们用

【概率论与数理统计】小结6 - 大数定理与中心极限定理

注:这两个定理可以说是概率论中最重要的两个定理.也是由于中心极限定理的存在,使得正态分布从其他众多分布中脱颖而出,成为应用最为广泛的分布.这两个定理在概率论的历史上非常重要,因此对于它们的研究也横跨了几个世纪(始于18世纪初),众多耳熟能详的大数学家都对这两个定理有自己的贡献.因此,这两个定理都不是单一的定理.不同的大数定理和中心极限定理从不同的方面对相同的问题进行了阐述,它们条件各不相同,得到的结论的强弱程度也不一样. 1. 大数定理(law of large numbers,LLN) 图1-

中心极限定理

中心极限定理指的是给定一个任意分布的总体.每次从这些总体中随机抽取 n 个抽样,一共抽 m 次. 然后把这 m 组抽样分别求出平均值. 这些平均值的分布接近正态分布. 我们先举个栗子现在我们要统计全国的人的体重,看看我国平均体重是多少.当然,我们把全国所有人的体重都调查一遍是不现实的.所以我们打算一共调查1000组,每组50个人. 然后,我们求出第一组的体重平均值.第二组的体重平均值,一直到最后一组的体重平均值.中心极限定理说:这些平均值是呈现正态分布的.并且,随着组数的增加,效果会越好. 最后

中心极限定理|z分布|t分布|卡方分布

生物统计学 抽样分布:n个样本会得到n个统计量,将这n个统计量作为总体,该总体的分布即是抽样分布 根据辛钦大数定律,从一个非正态分布的总体中抽取的含量主n的样本,当n充分大时,样本平均数渐近服从正态分布.因此平均数的抽样分布对正态性的要求并不是十分严格,但方差的抽样分布,对总体的正态性的要求是十分严格的. 样本平均值的分布: 基于正态总体(两个参数都知道)的抽样分布: eg':总体n=3, 因为n=2有放回抽样,有9种可能性: n=4有放回抽样,有81种可能性 统计量与总体参数不完全一样,但是满

参数|统计量|抽样分布|估计标准误差|标准误差|标准误|标准差|二项分布|泊松分布|中心极限定理|样本方差|

4 二项分布近似正态分布的条件? 参数和统计量的区别? 总体参数通常用希腊字母表示,样本统计量通常用小写英文字母来表示 抽样分布是一种理论分布吗? 抽样分布不是样本结果的分布,而是一种无法穷尽情况的分布,但是我们可以使用数学方法来求得进行这样抽取方法后的特统计量的分布.我们收取的样本点的统计量被认为包含在这样的函数曲线中.对于抽样分布来说,它的随机变量是样本统计量.我们能够借此还原样本统计量的分布,不是还原总体分布. 估计标准误差.标准误差.标准误.标准差是什么? 1.估计标准误差就简称为估计标

中心极限定理;使用均匀分布产生高斯分布

如果我们产生N个[-1,1]之间均匀分布的随机变量,那么这N个随机变量的均值的期望当然应该是0:但是样本均值几乎不可能是0,而是在0左右分布,且越靠近0的概率越大. // pseudo code for 1000 gaussian distribution random variable, // use uniform distribution random variable for(int i = 0; i < 1000; i++) { var sum = 0; for(int j = 0;

中心极限定理——举例

中心极限定理: 均值为mean,标准差为deviation的总体中,抽取样本量为n的随机样本,当n充分大时,(n>30),样本均值的分布近似于均值mean,标准差为 deviation/math.sqrt(n)的正太分布. 户外活动,男性平均喝水2升,标准差0.7升. 一次旅游,共50名男性,你带了110升水,你水用完概率是多少? mean=2,deviation=0.7 样本mean_sample=2 , deviation_sample=0.7/math.sqrt(50)=0.1 计算样本均

统计和数学中常见的定理汇总 | 大数定律 | 中心极限定理

什么是定理,什么是公理? 定理:已证实.对于全部情形都得到了证明.公理:未证伪.无法穷举全部情形,但尚未发现反例. 大数定律 | law of large numbers 随着试验数量的增大,样本中随机变量的均值会无限趋近与理论上的期望. 大数定律是现代统计的基石. 应用:抽样中用样本估计总体的理论依据:频率的稳定性: 中心极限定理 原文地址:https://www.cnblogs.com/leezx/p/10886471.html

【数学基础篇】--详解人工智能之数学 积分学,概率空间,大数定律和中心极限定理

一.前述 上一篇我们讲到了微分学,本文我们接着讲解积分学,以及概率的相关知识. 二.本节常用符号如下. 三.积分 1.积分定义 将一个函数对应的区间n等分,然后加和求极限. 2.积分理解 代数意义: 无穷求和 几何意义: 函数与 X 轴之间的有向面积. 3.(牛顿-莱布尼茨公式) 如果 f(x) 是定义在闭区间 [a, b] 上的可微函数, 那么就有 不定积分表示为 牛顿-莱布尼茨公式展示了微分与积分的基本关系: 在一定程度上微分与积分互 为逆运算. 4.案例 求函数 ln(x) 的不定积分.