Скорректированные доверительные интервалы бутстрапа (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