1

Я бы хотел рассчитать доверительный интервал BCa для многоступенчатой ​​загрузки, используя boot.ci(). Вот пример из: Non-parametric bootstrapping on the highest level of clustered data using boot() function from {boot} in R , который использует команду boot.Доверительный интервал от иерархического бутстрапа

# creating example df 
rho <- 0.4 
dat <- expand.grid(
    trial=factor(1:5), 
    subject=factor(1:3) 
) 
sig <- rho * tcrossprod(model.matrix(~ 0 + subject, dat)) 
diag(sig) <- 1 
set.seed(17); dat$value <- chol(sig) %*% rnorm(15, 0, 1) 

# function for resampling 
resamp.mean <- function(dat, 
        indices, 
        cluster = c('subject', 'trial'), 
        replace = TRUE){ 
    cls <- sample(unique(dat[[cluster[1]]]), replace=replace) 
    sub <- lapply(cls, function(b) subset(dat, dat[[cluster[1]]]==b)) 
    sub <- do.call(rbind, sub) 
    mean(sub$value) 
} 

dat.boot <- boot(dat, resamp.mean, 4) # produces and estimated statistic 

boot.ci(data.boot) # produces errors 

Как я могу использовать boot.ci на boot выходе?

ответ

0

Вы использовали слишком мало загрузочных копий. Когда вы звоните boot.ci, необходимы меры воздействия, и если они не предоставлены, они получаются от empinf, что может привести к сбою при слишком небольшом числе наблюдений. См. here для объяснения в аналогичных строках.

Попробуйте

dat.boot <- boot(dat, resamp.mean, 1000) 
boot.ci(dat.boot, type = "bca") 

, который дает:

> boot.ci(dat.boot, type = "bca") 

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS 
Based on 1000 bootstrap replicates 

CALL : 
boot.ci(boot.out = dat.boot, type = "bca") 

Intervals : 
Level  BCa   
95% (-0.2894, 1.2979) 
Calculations and Intervals on Original Scale 
Some BCa intervals may be unstable 

В качестве альтернативы, вы можете предоставить L (меры влияния) самостоятельно.

# proof of concept, use appropriate value for L! 
> dat.boot <- boot(dat, resamp.mean, 4) 
> boot.ci(dat.boot, type = "bca", L = 0.2) 
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS 
Based on 4 bootstrap replicates 

CALL : 
boot.ci(boot.out = dat.boot, type = "bca", L = 0.2) 

Intervals : 
Level  BCa   
95% (0.1322, 1.2979) 
Calculations and Intervals on Original Scale 
Warning : BCa Intervals used Extreme Quantiles 
Some BCa intervals may be unstable 
+1

@coffeeinjunky Спасибо! Не смешно ли, что я потратил столько времени на оценку кода, когда проблема была настолько прозаична! –

+0

Рад, что я мог помочь. – coffeinjunky

Смежные вопросы