Tenho a seguinte pergunta para um curso em que estou trabalhando:
Conduza um estudo de Monte Carlo para estimar as probabilidades de cobertura do intervalo de confiança normal de auto-inicialização e do intervalo básico de confiança. Amostra de uma população normal e verifique as taxas de cobertura empírica para a média da amostra.
As probabilidades de cobertura para o IC de inicialização normal padrão são fáceis:
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
Pelo que aprendi neste curso, o intervalo de confiança básico de autoinicialização pode ser calculado assim:
# 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);
Isso faz sentido. O que não entendo é como calcular probabilidades de cobertura para o IC básico de autoinicialização. Entendo que a probabilidade de cobertura representaria o número de vezes que o IC contém o valor verdadeiro (neste caso mu
). Simplesmente executo a boot
função várias vezes?
Como posso abordar essa questão de maneira diferente?
smpl = x[sample(1:n, size = 100, replace = TRUE)];
pode ser simplificado para smpl = sample(x, size=100, replace=TRUE)
.
mu
0. O IC normal funciona bem, é o IC básico do bootstrap com o qual estou tendo dificuldades.
size=100
um erro de digitação? Não acredito que você esteja obtendo os limites superior e inferior certos, pois o tamanho implícito da amostra parece ser 1000 quando você calcula seus ICs no loop (desde que você usesqrt.n
o cálculo). Além disso, por que você está comparandomu
e não 0 diretamente (este último é a verdadeira média)?