Bootstrap⽅法详解——技术与实例
⼀、Introduction
如果说到Bootstrap你会想到什么?是Twitter推出的那个⽤于前端开发的开源⼯具包吗?Unfortunately,本⽂要讨论的并⾮是Bootstrap⼯具包,⽽是统计学习中⼀种重采样(Resampling)技术。这种看似简单的⽅法,对后来的很多技术都产⽣了深远的影响。机器学习中的Bagging,AdaBoost等⽅法其实都蕴含了Bootstrap的思想。
下⾯引⽤的是谢益辉博⼠关于Bootstrap (和 Jackknife)基本思想的论述,希望能帮助读者对于Bootstrap 建⽴⼀个初步的认识:
在统计的世界,我们⾯临的总是只有样本,Where there is sample, there is uncertainty,正因为不确定性的存在,才使统计能够⽣⽣不息。传说统计学家、数学家和物理学家乘坐⼀列⽕车上旅⾏,路上看到草原上有⼀只⿊⽺,统计学家说,“基于这个样本来看,这⽚草原上所有的⽺都是⿊的”,数学家说,“只有眼前这只⽺是⿊的”,物理学家则说,“你们都不对,只有⽺的这⼀⾯是⿊的”。这是关于统计和其他学科的⼀个玩笑话,说明了统计的⼀些特征,⽐如基于样本推断总体。
⼀般情况下,总体永远都⽆法知道,我们能利⽤的只有样本,现在的问题是,样本该怎样利⽤呢?Boots
trap的奥义也就是:既然样本是抽出来的,那我何不从样本中再抽样(Resample)?Jackknife的奥义在于:既然样本是抽出来的,那我在作估计、推断的时候“扔掉”⼏个样本点看看效果如何?既然⼈们要质疑估计的稳定性,那么我们就⽤样本的样本去证明吧。
John Fox的那⼀系列附录中有⼀篇叫“Bootstrapping Regression Models”,当我看到第⼆页⽤⽅框框标出那句话时,我才对Bootstrap的思想真正有了了解(之前迷茫了很长时间)。Bootstrap的⼀般的抽样⽅式都是“有放回地全抽”(其实样本量也要视情况⽽定,不⼀定⾮要与原样本量相等),意思就是抽取的Bootstrap样本量与原样本相同,只是在抽样⽅式上采取有放回地抽,这样的抽样可以进⾏B次,每次都可以求⼀个相应的统计量/估计量,最后看看这个统计量的稳定性如何(⽤⽅差表⽰)。Jackknife的抽样痕迹不明显,但主旨也是取样本的样本,在作估计推断时,每次先排除⼀个或者多个样本点,然后⽤剩下的样本点求⼀个相应的统计量,最后也可以看统计量的稳定性如何。
在R中简单随机抽样的函数是sample(),其中有个参数replacement表⽰是否放回,经典的抽样基本都是不放回(replace = FALSE),⽽Bootstrap则是replace = TRUE;从FALSE到TRUE,⼩⼩的⼀个变化,孕育了Bootstrap的经典思想。
统计推断是从样本推断相应的总体, 有参数法和⾮参数法。早期的统计推断是以⼤样本为基础的。⾃从英国统计学家威廉·⼽塞特(Willam Gosset)在1908年发现了t分布后,就开创了⼩样本的研究。费希
尔(Fisher)在1920年提出了似然(likelihood)的概念,⼀直被认为是⾼效的统计推断思维⽅法。半个多世纪以来,这种思维⼀直占有主导地位,统计学家研究的主流就是如何将这种思维付诸实践,极⼤似然函数的求解是这⼀研究的关键问题。
当今计算机技术的⾼度发展,使统计研究及其应⽤跃上了⼀个新台阶。这不仅提⾼了计算的速度,⽽且可以把统计学家从求解数学难题中释放出来,并逐渐形成⼀种⾯向应⽤的、基于⼤量计算的统计思维——模拟抽样统计推断, Bootstrap 法就是其中的⼀种。
Bootstrap⽅法最初由美国斯坦福⼤学统计学教授Efron在1977年提出。作为⼀种崭新的增⼴样本统计⽅法,Bootstrap⽅法为解决⼩规模⼦样试验评估问题提供了很好的思路。当初,Efron教授将他的论⽂投给了统计学领域的⼀流刊物《The Annals of Statistics》,但在被该刊接受之前,这篇后来被奉为扛⿍之作的⽂章曾经被杂志编辑毫不客⽓地拒绝过,理由是“太简单”。从某种⾓度来讲,这也是有道理的,Bootstrap的思想的确再简单不过,但后来⼤量的事实证明,这样⼀种简单的思想却给很多统计学理论带来了深远的影响,并为⼀些传统难题提供了有效的解决办法。Bootstrap⽅法提出之后的10年间,统计学家对它在各个领域的扩展和应⽤做了⼤量研究,到了20世纪90年代,这些成果被陆续呈现出来,⽽且论述更加全⾯、系统。
很多⼈会对Bootstrap这个名字感到困惑。英语Bootstrap的意思是靴带,来⾃短语:“pull oneself up b
y one′s bootstrap”,18世纪德国⽂学家拉斯伯(Rudolf Erich Raspe)的⼩说《巴龙历险记(或译为终极天将)》(Adventures of Baron Munchausen) 记述道:“巴龙掉到湖⾥沉到湖底,在他绝望的时候,他⽤⾃⼰靴⼦上的带⼦把⾃⼰拉了上来。”现意指不借助别⼈的⼒量,凭⾃⼰的努⼒,终于获得成功。在这⾥“bootstrap”法是指⽤原样本⾃⾝的数据抽样得出新的样本及统计量,根据其意现在普遍将其译为“⾃助法”。
⼆、Explanation
Bootstrap法是以原始数据为基础的模拟抽样统计推断法,可⽤于研究⼀组数据的某统计量的分布特征,特别适⽤于那些难以⽤常规⽅法导出对参数的区间估计、假设检验等问题。其基本思想是:在原始数据的范围内作有放回的再抽样, 样本容量仍为n,原始数据中每个观察单位每次被抽到的概率相等, 为1/n , 所得样本称为Bootstrap样本。于是可得到参数θ的⼀个估计值θ^(b),这样重复若⼲次,记为B 。
设随机样本 X = [x1, x2,...,xn]是独⽴同分布样本xi~F(x), i = 1, 2,..., n。R(X, F)为某个预先选定的随机变量, 是关于X和F的函数。现要求根据观测样本[x1, x2,...,xn]来估计R(X, F)的分布特征。例如,设θ = θ(F)为总体分布F的某个参数,Fn是观测样本X的经验分布函数(如果你不了解什么是“经验分布函数”可以参考
blog.csdn/baimafujinji/article/details/51720090), 是θ的估计,记估计误差为
(1)
现要由观测样本X =[x1, x2,...,xn]估计R(X, F)的分布特征,Bootstrap⽅法的实质就是⼀个再抽样过程,计算R(X, F)分布特征的基本步骤归纳如下:
1)根据观测样本X =[x1, x2,...,xn]构造经验分布函数Fn;
2)从Fn中抽取样本,称其为Bootstrap样本;
3)计算相应的Bootstrap统计量R*(X*,Fn),其表达式为
(2)
式中是Bootstrap样本的经验分布函数;Rn为Tn的Bootstrap统计量;
4)重复过程2)、3)N次,即可获得Bootstrap统计量R*(X*,Fn)的N个可能取值;
5)⽤R*(X*, Fn)的分布去逼近R(X, F)的分布, 即⽤Rn的分布去近似Tn的分布,可得到参数θ(F)的N个可能取值,即可统计求出参数θ的分布及其特征值。
由Bootstrap⽅法的实现步骤可以看出:
1)Rn的统计特性是基于经验分布函数得到的,Tn的统计特性是通过真实分布函数F描述的;
2)Bootstrap⽅法的⼀个重要环节就是计算⾃助统计量Rn的分布;
3)Bootstrap⽅法的核⼼思想是利⽤⾃助统计量Rn的统计特性来近似Tn的统计特性,因此,Bootstrap⽅法的效果好坏在很⼤程度上取决于这⼆者的近似程度;
4)由式(1)可以看出,Tn的统计特性决定于和θ(F)的统计特性。对于某个具体的分布F⽽⾔,θ(F)是⼀个确定的值,因此,Tn的统计特性取决于的统计特性;
5)由式(2)以及Bootstrap⽅法的抽样过程可以看出,Rn的统计特性近似于⼀个N(0,σ^2) 的正态分布。因此,Rn近似Tn的程度主要取决于近似θ(F)的程度。对于⼤样本⽽⾔,Rn与Tn的统计特性有良好的相似性。但对于⼩⼦样特别是极⼩⼦样的情况下,⼆者之间的差异却是不可忽略的。
以Bootstrap⽅法获取正态分布均值的先验分布为例研究Rn的统计特性。已知观测样本数据 X = [x1, x2, ..., xn],
xi~N(μ,σ^2),i = 1, 2, ..., n,则X = [x1, x2, ..., xn]的经验分布(这⾥考虑参数Bootstrap⽅法)Fn也是⼀正态分布其中,
(3)
⽤经验分布Fn的均值来估计μ, 则有估计误差, 构造的Bootstrap统计量, 其中
三、Application
⽂献【5】中给出了22例胎⼉受精龄(Y,周)与胎⼉外形测量指标:⾝长(X1,cm),头围(X2,cm),体重(X3,g),数据列于表1。
很容易算得三个指标的平均值向量为:X = (33.0455, 23.2636, 936.9091) ---------(2)
协⽅差矩阵为
---------(3)
对其进⾏主成分分析,得3个特征根分别为:λ1 = 2.92613, λ2 = 0.07140, λ3 = 0.00247。我们⽤bootstrap 法来估计第⼀特征根的标准差及置信区间。
⾸先在22个个体中作有放回的抽样,每个个体被抽中的概率为1/22,抽样次数仍为n=22,这可以⽤计算机产⽣1~22的均匀分布的随机数,相应的编号即为抽中的个体,由这些个体组成的样本就是⼀个bootstrap样本。如第⼀
次我们得到22个随机数为:10, 20, 3, 19, 12, 2, 3, 2, 5, 20, 8, 13, 12, 18, 17, 22, 2, 1, 19, 7, 8, 13。由对应的bootstrap 样本求得
如此重复B次(B分别取50, 100, 200, 500, 800, 1000),得
从的频数分布可知,其分布是偏态的。故以上、下2.5%分位数作为其95%置信区间。结果列于附表前半部分。由此得到λ1 的置信区间, 如B = 1000 时, 其95%的置信区间为:2.8919~ 2.9672, 其标准误为0.01946。在整个计算过程中, 只是重复地抽样, 重复地计算λ1, 根据其频数分布的分位数即得到了其置信区间, ⽆需繁杂的数学推导。事实上,⼩样本时主成分的置信区间尚⽆理想的计算⽅法。
在这⾥, 来⾃未知总体F 的原样本被视为经验分布Fe,Bootstrap是在经验分布的基础上作有放回的抽样, 由于Fe 是F 的⾮参数估计,故由此产⽣的⽅法称为⾮参数的bootstrap , 相应的估计量称为⾮参数的bootstrap统计量。
事实上, bootstrap亦可以从参数的⾓度考虑。如上例, X = (X1 , X2 , X3) ,此时设经验分布Fp 是以式(2)为均向量、式(3)为协⽅差阵的3元正态分布。此时的Bootstrap的样本是从Fp中⽽不是从Fe (样本)中随机产⽣,其余步骤相同。由于此时Fp 是F 的⼀个参数估计,则该法称为参数的bootstrap,相应的估
计称为参数的bootstrap估计。结果列于附表后部分。B = 1000时,其95% 的置信区间为: 2. 8431~ 2. 9705,其标准误为0. 03495。
-----------------------------------------------------------------------
本⽂主要根据以下⽂献整理⽽成
[1] 谢益辉,我的⼀些统计⽅法观,cos.name/2008/11/outlook-on-statistical-methods/,2007-01-27
[2] 谢益辉,朱钰,Bootstrap⽅法的历史发展和前沿研究,统计与信息论坛,2008年2⽉,第23卷,第2期
[3] 陈峰,陆守曾,杨珉,Bootstrap估计及其应⽤,中国卫⽣统计,1997年,第14卷,第5期
[4] 刘伟,龙琼,陈芳,付敏,Bootstrap⽅法的⼏点思考,飞⾏器测控学报,2007年10⽉,第26卷,第5期
bootstrap检验方法[5] 陈峰,主成分回归分析,中国卫⽣统计,1991年,第8卷,第1期