У меня есть следующий вопрос для курса, над которым я работаю:
Проведите исследование методом Монте-Карло, чтобы оценить вероятности охвата стандартного нормального доверительного интервала начальной загрузки и базового доверительного интервала начальной загрузки. Выборка из нормальной популяции и проверка эмпирических показателей охвата для выборки среднего.
Вероятности покрытия для стандартного нормального загрузочного CI просты:
n = 1000;
alpha = c(0.025, 0.975);
x = rnorm(n, 0, 1);
mu = mean(x);
sqrt.n = sqrt(n);
LNorm = numeric(B);
UNorm = numeric(B);
for(j in 1:B)
{
smpl = x[sample(1:n, size = n, replace = TRUE)];
xbar = mean(smpl);
s = sd(smpl);
LNorm[j] = xbar + qnorm(alpha[1]) * (s / sqrt.n);
UNorm[j] = xbar + qnorm(alpha[2]) * (s / sqrt.n);
}
mean(LNorm < 0 & UNorm > 0); # Approximates to 0.95
# NOTE: it is not good enough to look at overall coverage
# Must compute separately for each tail
Из того, чему меня учили в этом курсе, базовый доверительный интервал начальной загрузки может быть рассчитан так:
# Using x from previous...
R = boot(data = x, R=1000, statistic = function(x, i){ mean(x[i]); });
result = 2 * mu - quantile(R$t, alpha, type=1);
Это имеет смысл. Что я не понимаю, так это как рассчитать вероятности покрытия для базового CI начальной загрузки. Я понимаю, что вероятность покрытия будет представлять количество раз, которое CI содержит истинное значение (в этом случае mu
). Я просто запускаю boot
функцию много раз?
Как я могу подойти к этому вопросу по-другому?
источник
size=100
опечатка? Я не верю, что вы получаете правильные верхние и нижние границы, поскольку неявный размер выборки равен 1000, когда вы вычисляете свои КИ в цикле (так как вы используетеsqrt.n
в расчете). Кроме того, почему вы сравниваете сmu
0, а не с 0 (последнее является истинным средним)?smpl = x[sample(1:n, size = 100, replace = TRUE)];
может быть упрощено доsmpl = sample(x, size=100, replace=TRUE)
.mu
что было 0. Нормальный CI работает нормально, это базовый CI начальной загрузки, с которым у меня возникают трудности.Ответы:
Терминология, вероятно, не используется последовательно, поэтому следующее - только то, как я понимаю исходный вопрос. Насколько я понимаю, нормальные КИ, которые вы вычислили, не соответствуют требованиям. Каждый набор копий начальной загрузки дает вам один доверительный интервал, а не много. Способ вычисления различных CI-типов по результатам набора репликаций начальной загрузки заключается в следующем:
boot
Без использования пакета
boot
вы можете просто использовать,replicate()
чтобы получить набор загрузочных копий.Но давайте придерживаться результатов,
boot.ci()
чтобы иметь ссылку.boot.ci()
Чтобы оценить вероятности покрытия этих типов CI, вам придется многократно запускать это моделирование. Просто оберните код в функцию, верните список с CI-результатами и запустите его,
replicate()
как показано в этом разделе .источник
computeCIs
и вызвал ееresults = replicate(500, computeCIs());
. В концеcomputeCIs
это возвращаетсяc(ciBasic, ciPerc)
. Чтобы проверить вероятности покрытия, разве я не должен проверять,mean(results[1, ] < 0 & results[2, ] > 0)
чтобы проверить все базовые элементы конфигурации, содержащие истинное среднее значение (вероятность покрытия)? Когда я запускаю это, я получаю,1
когда думаю, что должен получить0.95
.pastebin.com/qKpNKK0D
работает. Был бы признателен, если вы обновите его и предоставите полную функцию и полное моделирование. Спасибо