Ben*_*ker 16 r statistics-bootstrap
我试图使用boot.ciR的boot包来计算参数自举的偏差和偏斜校正自举置信区间.从我阅读的手册页和实验中,我得出结论,我必须自己计算折刀估计值并将其输入boot.ci,但这并未在任何地方明确说明.我一直无法找到其他文档,虽然公平地说我还没有查看代码所基于的原始Davison和Hinkley书籍......
如果我天真地跑b1 <- boot(...,sim="parametric"),然后boot.ci(b1),我得到错误influence values cannot be found from a parametric bootstrap.当且仅当我指定type="all"或时,才会发生此错误type="bca"; boot.ci(b1,type="bca")给出了同样的错误.那样做empinf(b1).我能得到的东西的工作的唯一办法是明确地计算刀切估计(使用empinf()与data参数)和饲料到这些boot.ci.
构建数据:
set.seed(101)
d <- data.frame(x=1:20,y=runif(20))
m1 <- lm(y~x,data=d)
Run Code Online (Sandbox Code Playgroud)
引导:
b1 <- boot(d$y,
statistic=function(yb,...) {
coef(update(m1,data=transform(d,y=yb)))
},
R=1000,
ran.gen=function(d,m) {
unlist(simulate(m))
},
mle=m1,
sim="parametric")
Run Code Online (Sandbox Code Playgroud)
好到目前为止.
boot.ci(b1)
boot.ci(b1,type="bca")
empinf(b1)
Run Code Online (Sandbox Code Playgroud)
都给出了上述错误.
这有效:
L <- empinf(data=d$y,type="jack",
stype="i",
statistic=function(y,f) {
coef(update(m1,data=d[f,]))
})
boot.ci(b1,type="bca",L=L)
Run Code Online (Sandbox Code Playgroud)
有谁知道这是我应该这样做的方式吗?
更新:boot包的原作者回复了一封电子邮件:
...你是正确的,问题是你正在做一个参数化的引导程序.在引导中实现的bca间隔是非参数间隔,这应该在某处明确说明.参数bca区间的公式不相同,并且当存在如您的情况中的有害参数时,它们取决于最不利的族可能性的导数.(参见Davison&Hinkley的第206-207页)empinf假设统计数据是用于非参数自举的形式之一(您在示例中调用了empinf),但是您的原始调用启动(正确)具有统计数据以适合参数重采样的不同形式.
你当然可以做你正在做的事情,但我不确定将参数重采样与非参数区间估计混合的理论特性.
在查看了boot.ci页面之后,我决定使用一个引导对象,该对象是在Davison和Hinkley的第6章中的一个例子中构建的,看它是否产生了你观察到的错误.我收到警告,但没有错误:
require(boot)
lmcoef <- function(data, i){
d <- data[i, ]
d.reg <- lm(y~x, d)
c(coef(d.reg)) }
lmboot <- boot(d, lmcoef, R=999)
m1
boot.ci(lmboot, index=2) # I am presuming that the interest is in the x-coefficient
#----------------------------------
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 999 bootstrap replicates
CALL :
boot.ci(boot.out = lmboot, index = 2)
Intervals :
Level Normal Basic
95% (-0.0210, 0.0261 ) (-0.0236, 0.0245 )
Level Percentile BCa
95% (-0.0171, 0.0309 ) (-0.0189, 0.0278 )
Calculations and Intervals on Original Scale
Warning message:
In boot.ci(lmboot, index = 2) :
bootstrap variances needed for studentized intervals
Run Code Online (Sandbox Code Playgroud)