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

机器算法验证 r 引导程序
2022-02-16 20:16:59

我有一个使用 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

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

1个回答

正如您从错误消息中看到的那样,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 所说,增加自举复制的数量将解决这个问题。即使翻倍R到 2000 也应该可以做到。