Chciałem zrobić demonstrację klasową, w której porównuję przedział t z przedziałem ładowania początkowego i obliczę prawdopodobieństwo pokrycia obu. Chciałem, aby dane pochodziły z przekrzywionej dystrybucji, więc postanowiłem wygenerować dane jako exp(rnorm(10, 0, 2)) + 1
próbkę o wielkości 10 z przesuniętego logarytmu normalnego. Napisałem skrypt, aby narysować 1000 próbek i dla każdej próbki obliczyć zarówno 95% przedział t, jak i 95% przedział procentowy ładowania początkowego na podstawie 1000 powtórzeń.
Kiedy uruchamiam skrypt, obie metody dają bardzo podobne odstępy czasu i obie mają prawdopodobieństwo pokrycia 50-60%. Byłem zaskoczony, ponieważ myślałem, że interwał ładowania będzie lepszy.
Moje pytanie brzmi: czy mam
- popełniłeś błąd w kodzie?
- popełniłeś błąd przy obliczaniu interwałów?
- popełniłeś błąd, oczekując, że interwał ładowania będzie miał lepsze właściwości pokrycia?
Czy istnieje również sposób na zbudowanie bardziej niezawodnego elementu CI w tej sytuacji?
tCI.total <- 0
bootCI.total <- 0
m <- 10 # sample size
true.mean <- exp(2) + 1
for (i in 1:1000){
samp <- exp(rnorm(m,0,2)) + 1
tCI <- mean(samp) + c(1,-1)*qt(0.025,df=9)*sd(samp)/sqrt(10)
boot.means <- rep(0,1000)
for (j in 1:1000) boot.means[j] <- mean(sample(samp,m,replace=T))
bootCI <- sort(boot.means)[c(0.025*length(boot.means), 0.975*length(boot.means))]
if (true.mean > min(tCI) & true.mean < max(tCI)) tCI.total <- tCI.total + 1
if (true.mean > min(bootCI) & true.mean < max(bootCI)) bootCI.total <- bootCI.total + 1
}
tCI.total/1000 # estimate of t interval coverage probability
bootCI.total/1000 # estimate of bootstrap interval coverage probability