bootstrap再抽样_Bootstrap再抽样⽅法简介
近年来,许多数理统计⽅法被引⼊到医学研究中,有些理论在⼤样本的条件下才能获得稳定的解,如项⽬反应理论、线性状态空间模型等。但是在实际中.由于成本或者现场条件的限制⽽⽆法获得⼤样本。在现有样本代表性好的条件下,可以通过Bootstrap再抽样⽅法扩⼤样本量.即在传统的数理统计基础上进⾏统计模拟。随着计算机技术的迅猛发展,这⼀技术已经渗透到许多科学领域.解决了⽆法采集到⼤样本的难题。⽬前医学中常⽤的统计软件还没有提供直接产⽣Bootstrap样本的程序。本⽂提供了这⼀⽅法的SAS程序.简短、通⽤,可以⽅便医学统计⼯作者的使⽤。
Bootstrap再抽样⽅法简介
Bootstrap⽅法是⼀种计算机模拟⽅法,它处理的是实际中可能发⽣的,但需要⼤样本来求出的统计量。⼀般的统计推断都是基于⼀个分布,诸如正态分布,但数据分布未知时,或者存在异常值,样本量太⼩的时候,统计推断的结果可信度不⾼,这时候⽤bootstrap⽅法将是⼀个很不错的选择。令X = { x1, x2,x3, x4,…,xn},为⼀次实际收集的样本, xi(i=1,2,… ,n)是独⽴同分布的随机变量服从分布F(诸如收集了n个病⼈的年龄X服从正态分布)。M为分布F 的⼀个未知数字特征,例如M为X的均值。根据经典数理统计理论,要获取M的估计的经验分布(⼀个样本数据只能得到⼀个均值,如果想知道均值的95%CI,j就需要知道均值的分布)。就需要多次重复抽样和⼤样本。在⼩样本条件下,应⽤Bomtmp⽅法对x进⾏模拟重抽样。就能够在某种意义上获取M的经验分布并确定其置信区间。
程序设计思想
Bootstrap过程的机制是:⾸先有⼀个实际观测到的数据集(称之为原始数据集),它含有n 个观查单位。从这个数据集中有放回地随机抽取t 个组成⼀个新样本。称之为Bootstrap样
本。在这个随机抽样中.原始数据集中的每个观察单位每次被抽到的概率相等,为1/n.这些观察单位有的只被抽到1次,有的超过1次,也有的没有被抽到。新的样本再计算⼀次统计量(诸如均值),这样重复1000次抽样就有⼀千个样本,就可以计算1000个样本的统计量的均值(均值的均值),这样就可以计算这个统计量的95%CI等等,因计算的结果是1000次重复抽样的结果,可以说包含了样本数据的各种组合,这个组合计算出的均值⽐我们收集⼀次的样本数据更稳定,更具有说服⼒。
实例及SAS程序
在含有150个观察单位的原有样本中.抽出观察单位数为150的新样本。
程序步骤:
(1)产⽣效组(1~999)和序列号,并对数组进⾏随机化。
(2)以随机数除以150,取商的余数部分,(随机数⼩于150商的整数部分为0)。由于余数部分的变动范围在0~149之间,应再加1,与原有观察单位数相同。
(3)取序列号⼩于等于150的余数数字所对应的原有样本观察单位组成的新样本即为Bootstrap样本。data a;
do unit= 1 tO 999:
unitl: unit;
output;
end;
ILia ;
proe plan seed=999998888444;
factors unitl=999;/* unitl为随机数
output data= a out b:
run ;
data c;
set b;
unit2=floor(unitl/150);
unit3=(unitl—unit2*150);/* 取unitl的商作为新的随机数
unitm = unit3+ 1:
keep unit unitm ;
run ;
data one two;
se t C;
if unit< =150 then output one;/* one为新样本数据集
if unit> 150 then output two;
run ;
讨 论
1.实施Bootstrap过程需要满⾜的⼀个假设条件是:所观测到的样本能较好地反映总体。Bootstrap样本的标准差与原有样本的标准差相同。
2.Bootstrap样本数为两位数时,产⽣随机数为1~99。样本数为三位数时.产⽣随机数为1~999,依此类推。
3.改变种⼦数(” seed),即可得到不同的Bootstrap样本。Bootstrap样本也可以⼩于或等于原有样本量。
4.该⽅法要求样本间满⾜独⽴同分布条件,对于时序数据不能直接采⽤Bootstrap⽅法。
5. ⼀般情况下抽样次数⾄少1000次。
上⾯的⽅法只是告诉⼤家怎么重抽样,举得例⼦也仅仅是样本均值,通过重抽样让样本均值更稳定更具有说服⼒,这⼀⽅法适合⼩样本数据,当然在计算某些指标时(诸如肿瘤评分系统的C-index的95%CI)时,前提条件是通过编程等先将需要计算的统计量计算公式给出来,完了对数据进⾏Bootstrap,每抽样⼀次代⼊已经编写好的程序或公式⾥计算⼀次统计量,最终计算1000次个统计量的均值及95%CI,为最终的报告结果。
SPSS软件19.0以上会有Bootstrap这⼀⽅法的嵌⼊,诸如在计算两样本的t检验时,在对话框中会有boot这⼀个选项按钮,如果点击了这⼀按钮,在给出的t检验的统计量结果中会多出bootstrap两列的结果,分别为统计量的95%CI.
因为SPSS只能计算特定的⼀些统计量,它也只能对特定的⼀些结果做Bootsrap,使⽤起来有⼀定的局限性。
在R软件中有专门的做Bootstrap的包boot,可以实现重抽样技术。Boot包中提供了做bootstrap的两个⼗分好⽤的函数:
boot(),boot.ci()。
下⾯简单介绍下在R中对单个统计量使⽤bootstrap⽅法:
以R中的数据集women为例说明这个问题。数据集women列出了美国妇⼥的平均⾝⾼和体重。以体重为响应变量,⾝⾼为协变量进⾏回归,获取斜率项的95%置信区间。
R可以通过以下代码告诉我们答案:library(boot)beta
输出结果:BOOTSTRAPCONFIDENCE INTERVAL CALCULATIONS
Basedon 500 bootstrap replicates
CALL:
boot.ci(boot.out= result)
Intervals:
Level Normal Basic
95% ( 3.218, 3.686 ) ( 3.231, 3.704 )
Level Percentile BCa
95% ( 3.196, 3.669 ) ( 3.199, 3.675 )
Calculationsand Intervals on Original Scale
他们与传统的估计差别⼤吗?我们来看看传统的区间估计:confint(lm(weight~height,data=women))
输出结果:2.5 % 97.5 %
(Intercept) -100.342655 -74.690679
height 3.253112 3.646888
可以看出,差别并不是很⼤,究其原因,⽆外乎正态性得到了很好的满⾜。
我们在来看⼀个差别较⼤的例⼦:
考虑R中的数据集faithful。以waiting为响应变量,eruptions为协变量,建⽴简单回归模型y=α+βx+e。考虑β的95%置信区间,重复上⾯的步骤。result
输出结果:BOOTSTRAPCONFIDENCE INTERVAL CALCULATIONS
Based on 500bootstrap replicates
CALL :
boot.ci(boot.out= result)
Intervals :
Level Normal Basic
95% (10.08, 11.30 ) (10.06, 11.26 )
Level Percentile BCa
95% (10.20, 11.40 ) (10.13, 11.35 )
Calculationsand Intervals on Original Scale
Some BCaintervals may be unstable
传统估计:2.5 % 97.5 %
(Intercept)31.20069 35.74810
eruptions 10.10996 11.34932
差别有些⼤,看qq图发现正态性不是很好。
本精彩历史⽂章:
bootstrap项目04:如何在R软件中求⼀致性指数( Harrell'concordance index:C-index)?
05:Nomogram 绘制原理及R&SAS实现.
06 :Lasso⽅法简要介绍及其在回归分析中的应⽤
07 : 最优模型选择中的交叉验证(Cross validation)⽅法
08 : ⽤R语⾔进⾏分位数回归(Quantile Regression)
09 : 样本数据中异常值(Outliers)检测⽅法及SPSS & R实现
10 : 原始数据中⼏类缺失值(Missing Data)的SPSS及R处理⽅法
11 : [Survival analysis]Kaplan-Meier法之SPSS实现
12 : [Survival analysis] COX⽐例风险回归模型在SPSS中的实现
13 : ⽤R绘制地图:以疾病流⾏趋势为例
14 :数据挖掘⽅法:聚类分析简要介绍 及SPSS&R实现15 :医学研究中的Logistic回归分析及R实现
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论