Скорректированные доверительные интервалы бутстрапа (BCa) с параметрическим бутстрапом в загрузочном пакете

Я пытаюсь использовать пакет boot.ci из R boot для вычисления доверительных интервалов бутстрапа с коррекцией и перекосом от параметрического бутстрапа. Из моего чтения страниц и экспериментов с человеком я пришел к выводу, что мне приходится вычислять оценки самки и кормить их в boot.ci, но это не указано явно нигде. Я не смог найти другую документацию, хотя, честно говоря, я не смотрел оригинальную книгу Дэвисона и Хинкли, на которой основан код...

Если я наивно запускаю 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)

Bootstrap:

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)

Кто-нибудь знает, так ли я должен это делать?

update. Оригинальный автор пакета boot ответил на сообщение электронной почты:

... вы правы, что проблема в том, что вы делаете параметрический бутстрап. Интервалы bca, реализованные при загрузке, непараметрические интервалы, и это должно быть указано явно где-то. Формулы для параметрических интервалов bca не являются одинаковыми и зависят от производных наименее благоприятных вероятность семьи, когда есть параметры неприятности, как в вашем дело. (См. Стр. 206-207 в Дэвисоне и Хинкли). Empinf предполагает, что статистика находится в одной из форм, используемых для непараметрической начальной загрузки (который вы делали в своем примере на вызов empinf), но ваш оригинал вызов для загрузки (правильно) имел статистику в другой форме подходящий для параметрической передискретизации.

Вы, безусловно, можете делать то, что делаете, но я не уверен в теоретические свойства смешивания параметрической передискретизации с оценка непараметрического интервала.

Ответы

Ответ 1

После просмотра страницы boot.ci я решил использовать загрузочный объект, построенный по строкам примера в Ch 6 Davison и Hinkley, и посмотреть, генерирует ли он ошибки, которые вы наблюдали. Я получаю предупреждение, но никаких ошибок.:

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