【问题标题】:adjusted bootstrap confidence intervals (BCa) with parametric bootstrap in boot package使用引导包中的参数引导调整引导置信区间 (BCa)
【发布时间】:2011-11-27 03:39:47
【问题描述】:

我正在尝试使用 R 的 boot 包中的 boot.ci 从参数引导计算偏差和偏斜校正引导置信区间。通过阅读手册页和实验,我得出结论,我必须自己计算折刀估计并将它们输入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)

引导程序:

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")

到目前为止还不错。

boot.ci(b1)
boot.ci(b1,type="bca")
empinf(b1)

都给出上述错误。

这行得通:

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)

有人知道这是否是我应该这样做的方式吗?

更新boot包的原作者回复了一封电子邮件:

...你是对的,问题在于你正在做一个 参数引导。在引导中实现的 bca 间隔是 非参数区间,这应该已经说明 明确地某处。参数 bca 区间的公式 不相同并且取决于最不利的衍生物 当存在令人讨厌的参数时的家庭可能性,如您的 案子。 (参见 Davison & Hinkley 的第 206-207 页)empinf 假设 统计量是用于非参数引导的形式之一 (您在示例调用 empinf 中所做的)但您原来的 调用启动(正确)具有不同形式的统计信息 适用于参数重采样。

你当然可以做你正在做的事,但我不确定 混合参数重采样的理论性质 非参数区间估计。

【问题讨论】:

  • 我可能有一个优势,因为我有这本书,而且它有一整章关于回归应用程序。但是,我不知道发布我使用jack.after.boot 的结果是否有用,因为您说您确信需要先完成折刀。

标签: r statistics-bootstrap


【解决方案1】:

查看 boot.ci 页面后,我决定使用按照戴维森和欣克利的第 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

【讨论】:

  • 嗯。谢谢...回归只是我的例子(我真正的问题是 GLMM),但我会看看这个并尝试找出你所做的(有效的)和我所做的之间的区别(没有)
  • 哎呀。现在我明白了。关键是我使用的是 parametric 引导,而你不是。我认为如果您使用type="parametric" 和其他必要的更改(即添加ran.gen 函数等)重新执行此操作,您最终会得到一些看起来很像我上面的示例并且没有提供的东西没有半手动折刀计算的 BCa 估计 ...
  • type="parametric" 在该构造中提供什么值?线性(或在某些其他变换尺度上的线性)系数是参数估计。所以在回顾了戴维森和欣克利的第 2 章的材料之后,我想我是在上面的代码中做一个参数引导。
  • 我同意参数分析在示例中没有提供任何优势。我正在做一个广义线性混合模型,其中参数引导绝对不同于标准的非参数引导,甚至不同于分层引导。
猜你喜欢
  • 2016-11-28
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
相关资源
最近更新 更多