R - функция кодирования для свойства покрытия Bootstrap CI - PullRequest
0 голосов
/ 10 мая 2019

Мне нужно написать функцию, которая выполняет моделирование для оценки охвата доверительного интервала начальной загрузки для дисперсии n выборок из нормального распределения. Ниже приведено то, что я пытался, но оно продолжает возвращать среднее значение 0 или 0,002 для числа выборок, которые находятся в пределах CI ...

Var_CI_Coverage <- function(true_mean,true_var, nsim, nboot, alpha, nsamples){
    cover = NULL
    for(k in 1:nsim){
        Var = as.numeric()
        y <- rnorm(1, mean = true_mean, sd = sqrt(true_var))
        for(i in 1:nboot){
            resample_y <- sample(y, size = nsamples, replace = TRUE)
            Var[i] <- var(resample_y)
        }
        LB <- quantile(Var, probs=c(alpha/2))
        UB <- quantile(Var, probs=c(1 - (alpha/2)))
        cover[k] <- ifelse(LB <= true_var & UB >= true_var, 1, 0)
    }
    return(mean(cover))
}

Var_CI_Coverage(true_mean= 0, true_var = 4, nsim = 500, nboot = 1000, alpha = 0.05, nsamples = 10)

1 Ответ

2 голосов
/ 10 мая 2019

Основная проблема заключается в том, что вы генерируете y с использованием

y <- rnorm(1, mean = true_mean, sd = sqrt(true_var))

, что означает, что y - это одно значение, а все ваши примеры начальной загрузки - это просто одно y значение, повторенное nsamples раз,Вам нужно

y <- rnorm(nsamples, mean = true_mean, sd = sqrt(true_var))

Затем вы получаете образцы с фактической дисперсией и получаете оценку покрытия, которая выглядит больше в правильном поле (без комментариев, правильно ли это, я не пытался проверить).

...