为0.115. 例3使用boot函数进行Bootstrap估计标准差在R中,包boot里的boot函 数可以进行Bootstrap估计.boot函数中的参数statistic是一个函数,用来返 回感兴趣的统计量值.这个函数必须至少有两个参数,其中第一个是数据,第二 个表示Bootstrap抽样中的指标向量,频率或者权重等.因此我们首先写一个 函数计算().用i=(i1,·,i)表示指标向量,则计算相关系数的程序为 TCode tau<-function(x,i){ x1<-x[1,] cor(x1[,1],xi[,2]) Code 然后我们就可以使用boot函数进行Bootstrap估计: library(boot) #for boot function obj <boot(data law,statistic tau,R 2000) Previous Next First Last Back Forward 9
è0.115. ~3 ¶^bootºÍ?1BootstrapOIO 3R•, ùbootpbootº Íå±?1BootstrapO. boot ºÍ•ÎÍstatistic¥ òáºÍ, ^5à £a,⁄O˛ä. ˘áºÍ7Lñk¸áÎÍ, Ÿ•1òá¥Í‚, 1 áL´Bootstrap ƒ•çIï˛, ™«½ˆ. œd·Çƒkòá ºÍOéθˆ(b) . ^i = (i1, · · · , in) L´çIï˛, KOéÉ'XÍßSè ↑Code tau<-function(x,i){ xi<-x[i,] cor(xi[,1],xi[,2]) } ↓Code ,·Ç“å±¶^bootºÍ?1BootstrapO: ↑Code library(boot) #for boot function obj <- boot(data = law, statistic = tau, R = 2000) Previous Next First Last Back Forward 9
obj alternative method for std.error y <-objst sd(y) detach(package:boot) Code 观测到的9值用t1*标出.2000次重复下的Bootstrap标准差估计为0.1326418. 和boot函数相似功能的函数是bootstrap包里的oootstrap函数.使用 此函数重复上述问题的程序如下 FCode library(bootstrap) #for boot function n<-15 theta <-function(i,x){cor(x[i,1],x[i,2]) results <bootstrap(1:n,2000,theta,lav) sd(results$thetastar)#0.1325971 detach(package:bootstrap) Code Previous Next First Last Back Forward 10
obj # alternative method for std.error y <- obj$t sd(y) detach(package:boot) ↓Code *ˇθˆä^t1∗I—. 2000gEeBootstrapIOOè 0.1326418. ⁄bootºÍÉqıUºÍ¥bootstrapùpbootstrapºÍ. ¶^ dºÍE˛„ØKßSXe ↑Code library(bootstrap) #for boot function n <- 15 theta <- function(i,x){ cor(x[i,1],x[i,2]) } results <- bootstrap(1:n,2000,theta,law) sd(results$thetastar) #0.1325971 detach(package:bootstrap) ↓Code Previous Next First Last Back Forward 10
两个函数的用法上有些差异,bootstrap包是收录了Efron&Tibshirani的书 里的程序和数据.boot包是收录了Davson&Hinkley的书里的程序和数据. 1.1.2 Bootstrap Estimation of Bias 的一个估计量的偏差定义为 bias(0)=E0-0. 当的分布未知或者形式很复杂使得期望的计算不可能(从此分布中抽样变 得很困难,Monte Carlo方法不可行),以及在现实中,我们也不知道的真值 时(需要估计),这种情况下偏差是未知的.但是我们已经有了样本,是0的估 计,而期望E8可以通过Bootstrap方法进行估计.从而可以得到偏差的估计: biasB(0)=E*0*-6. E*表示Bootstrap经验分布, Previous Next First Last Back Forward 11
¸áºÍ^{˛k …, bootstrapù¥¬¹ Efron & Tibshirani÷ pßS⁄Í‚. boot ù¥¬¹ Davson & Hinkley÷pßS⁄Í‚. 1.1.2 Bootstrap Estimation of Bias θòáO˛θˆ†½¬è bias(θˆ) = Eθˆ − θ. θˆ©Ÿô½ˆ/™ÈE,¶œ"OéÿåU(ld©Ÿ•ƒC È(J, Monte Carloê{ÿå1), ±93y¢•, ·Çèÿθ˝ä û(IáO), ˘´ú¹e†¥ô. ¥·ÇƲk , θˆ¥θ O, œ"Eθˆå±œLBootstrapê{?1O. l 屆O: bias dB(θˆ) = E ∗ θˆ∗ − θ. ˆ E∗L´Bootstrap²©Ÿ. Previous Next First Last Back Forward 11
因此一个估计量的偏差的Bootstrap估计,是通过使用当前样本下的估 计量来估计0,而使用的Bootstrap重复来估计EA.对一个有限样本x= (x1,·,xn),有(x)的B个ii.d估计量6).则{(6)}的均值是期望值E*的 无偏估计,因此偏差的Bootstrap估计为 biasB(0)=-6. 这里存=音∑日,).正的偏差意味着平均来看过高估计了:而负的偏差 意味着平均来看过低估计了0.因此,一个经过偏差修正(Bias-correction)的 估计量为 6=6-biasB(0). 例4 Bootstrap偏差估计:估计上例中样本相关系数的偏差 theta.hat <-cor(law$LSAT,law$GPA) #bootstrap estimate of bias B<-2000 #larger for estimating bias Previous Next First Last Back Forward 12
œdòáO˛†BootstrapO, ¥œL¶^ce O˛θˆ5Oθ, ¶^θˆBootstrapE5OEθˆ. ÈòákÅx = (x1, · · · , xn), kθˆ(x)Bái.i.dO˛θˆ(b) . K{θˆ(b)}˛ä¥œ"äEθˆ∗ ÆO, œd†BootstrapOè bias dB(θˆ) = θˆ∗ − θ. ˆ ˘pθˆ∗ = 1 B PB b=1 θˆ(b) . †øõXθˆ²˛5wLpO θ; K† øõXθˆ²˛5wL$O θ. œd, òá²L†?(Bias-correction) O˛è θ˜ = θˆ − bias dB(θˆ). ~4 Bootstrap†O: O˛~•É'X͆ ↑Code theta.hat <- cor(law$LSAT, law$GPA) #bootstrap estimate of bias B <- 2000 #larger for estimating bias Previous Next First Last Back Forward 12
n <nrow(law) theta.b <-numeric(B) for (b in 1:B){ i <-sample(1:n,size n,replace TRUE) LSAT <law$LSAT[i] GPA <law$GPA[i] theta.b[b]<-cor(LSAT,GPA) ] bias <-mean(theta.b-theta.hat) bias Code 这个值和例3中的boot函数返回的结果非常相近 例5 Bootstrap偏差估计:假设x=(e1,·,c10)~N(4,g2),求a的估计 量2=∑1(红:-)的偏差 TCode n<-10 x<-rnorm(n,mean=0,sd=10) Previous Next First Last Back Forward 13
n <- nrow(law) theta.b <- numeric(B) for (b in 1:B) { i <- sample(1:n, size = n, replace = TRUE) LSAT <- law$LSAT[i] GPA <- law$GPA[i] theta.b[b] <- cor(LSAT, GPA) } bias <- mean(theta.b - theta.hat) bias ↓Code ˘áä⁄~3•bootºÍà£(Jö~ÉC. ~5 Bootstrap†O: bx = (x1, · · · , x10) ∼ N(µ, σ2 ), ¶σ 2O ˛ σˆ 2 = 1 n Pn i=1(xi − x¯) 2† ↑Code n<-10 x<-rnorm(n,mean=0,sd=10) Previous Next First Last Back Forward 13