Bootstrap再抽样方法简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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=wom
en))
输出结果:
2.5 % 97.5 %
(Intercept) -100.342655 -74.690679
height 3.253112 3.646888
可以看出,差别并不是很大,究其原因,无外乎正态性得到了很好的满足。
我们在来看一个差别较大的例子:
考虑R中的数据集faithful。
以waiting为响应变量,eruptions 为协变量,建立简单回归模型y=α+βx+e。
考虑β的95%置信区间,重复上面的步骤。
result
输出结果:
BOOTSTRAPCO
NFIDENCE
INTERVAL
CALCULATIONS
Based on
500bootstrap
replicates
CALL :
boot.ci(boot.ou
t= 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 )
Calculationsan
d Intervals on
Original Scale
Some
BCaintervals may
be unstable
传统估计:
2.5 % 97.5 %
(Intercept)31.2
0069 35.74810
eruptions
10.10996 11.34932
差别有些大,看qq图发现正态性不是很好。
本公众号精彩历史文章:
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实现。