使用bca方法计算置信区间时,为什么R引导程序包会产生错误“估计调整'a'是NA”?


14

我有一个使用dput上传到这里的数字向量(... / code / MyData.Rdata)。

我想获得bca ci,所以我编写了以下代码:

my.mean <- function(dat, idx){
 return (mean(dat[idx], na.rm = TRUE))
} 

boot.out<-boot(data=my.data, statistic = my.mean, R=1000)

但是当我运行以下命令时,我得到了:

> boot.ci(boot.out)
Error in bca.ci(boot.out, conf, index[1L], L = L, t = t.o, t0 = t0.o,  : 
estimated adjustment 'a' is NA
In addition: Warning message:
In boot.ci(boot.out) : bootstrap variances needed for studentized intervals

有人可以帮助我找出导致此错误的原因吗?谢谢您的帮助!


3
我尝试使用R = 10000而不是R = 1000(并指定type ='bca'而不是type ='all',因为这是您真正想要的),并且它可以正常工作。因此,我的结论是导致此错误的原因是引导复制不足...但是我不能说更多...
ocram 2012年

Answers:


23

正如您从错误消息中看到的那样,请boot.ci致电bca.ci。由于boot.out对象不提供L,因此您正在计算的统计数据的经验影响值会bca.ci尝试使用empinf函数进行计算,然后(如迈克尔所说),它将使用它们来计算加速度常数:

L <- empinf(boot.out, index = index, t = t.o, ...)
a <- sum(L^3)/(6 * sum(L^2)^1.5)

但是,由于复制数量很少,empinf有时会失败并返回NA值向量。结果是您没有的值La无法计算,并且您得到了错误。正如ocram所说,增加boostrap复制的数量将解决此问题。即使增加一倍R到2000,也应该可以做到。


1
+1 @Kieran谢谢!我很高兴我的猜测有一定根据。您对所涉及的R程序的了解会给您正确的答案。因此不再需要我的答案。有人不喜欢我的猜测,或者以为我的回答应该是评论。由于所有这些原因,我现在删除它是有意义的。
Michael R. Chernick 2012年

4
对于遭受该问题困扰的其他人:根据stat.ethz.ch/pipermail/r-help/2011-February/269006.html,重复次数必须大于数据行的数量。令我感到有些惊讶的是,必须重复这么多次……
BurninLeo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.