注:本文是叶楚韵对Bootstrap方法在R、MATLAB、Python以及SAS中实现的介绍
通过之前关于Bootstrap的介绍 (重抽样方法),相信大家已经对Bootstrap的原理和用途有了一定的了解。本文将为大家介绍在R、MATLAB、Python以及SAS中实现Bootstrap的现成语句。注意Bootstrap的原理是重抽样,因此在所有语言中,均可以采用循环语句实现Bootstrap。这种做法的优点是形式灵活,可以实现更多不同方法的Bootstrap,缺点是可能对初学者不友好,编写代码时容易出纰漏。因此,下面的介绍将以实现Bootstrap的现成命令为主。
1 Bootstrap的R实现
目前比较常用于实现Bootstrap的R现成语句主要来自boot、bootstrap以及simpleboot包,均为第三方包,需运行install.packages('')
下载并安装,以及每次使用前需运行library()
加载。下面关于bootstrap的R实现的所有实例均采用R自带数据集cd4
。
1.1 boot package
利用boot包中的函数boot()
与boot.ci()
函数,以及boot对象,我们可以实现一些简单的Bootstrap过程。下面将展示几个简单的例子并辅以说明:
- 单样本、成对两样本情况
mean.boot = function(data,indices){
d = data[indices,] res = mean(d[,1]) return(res)}result1 = boot(data=cd4,statistic=mean.boot,R=500)boot.ci(result1,conf=0.95,type = "all")
boot()
函数几个重要参数分别为data
,statistic
以及R
,其中,data
参数传递原数据,R
传递Bootstrap重复次数B。statistic
传递统计量形式,在上例,即为数据第1列的均值。因此statistic
参数是一个自定义函数,在上例即为mean.boot()
。在一般情况下,boot函数要求这个自定义函数必须含输入参数data
与indices
。通过上例可以看到,参数indices
就是在boot函数重抽样过程中抽取数据的索引。
boot函数的输出参数为boot对象。函数boot.ci()
可以直接作用于这一类型变量并输出区间估计。调整参数conf
可以获得不同置信度的区间估计,调整参数type
可以获得不同类型的区间估计,目前支持输出5种区间估计,感兴趣的读者可以查阅boot包说明文件。
- 配对Bootstrap回归
paired.regcoe.boot = function(formula,data,indices){
d = data[indices,] fit = lm(formula,data=d) return(fit$coef)}result2 = boot(data=cd4,statistic=paired.regcoe.boot,R=500,formula=oneyear~baseline)boot.ci(result2,conf=0.95,type = "all",index = 1)boot.ci(result2,conf=0.95,type = "all",index = 2)
注意到通过indices
参数可以实现按抽取到的索引提取数据,因此,通过boot()
,我们也可以实现配对Bootstrap方法估计回归系数。而在使用boo