Ich wollte eine Klassendemonstration durchführen, bei der ich ein t-Intervall mit einem Bootstrap-Intervall vergleiche und die Überdeckungswahrscheinlichkeit für beide berechne. Ich wollte, dass die Daten aus einer verzerrten Verteilung stammen, also habe ich mich dafür entschieden, die Daten als exp(rnorm(10, 0, 2)) + 1
eine Stichprobe der Größe 10 aus einem verschobenen Lognormal zu generieren . Ich habe ein Skript zum Zeichnen von 1000 Samples geschrieben und für jedes Sample ein 95% t-Intervall und ein 95% Bootstrap-Perzentilintervall basierend auf 1000 Replikaten berechnet.
Wenn ich das Skript ausführe, geben beide Methoden sehr ähnliche Intervalle an und beide haben eine Abdeckungswahrscheinlichkeit von 50-60%. Ich war überrascht, weil ich dachte, das Bootstrap-Intervall wäre besser.
Meine Frage ist, habe ich
- Fehler im Code gemacht?
- Fehler bei der Berechnung der Intervalle gemacht?
- einen Fehler gemacht, indem erwartet wurde, dass das Bootstrap-Intervall bessere Abdeckungseigenschaften hat?
Gibt es in dieser Situation auch eine Möglichkeit, ein zuverlässigeres CI zu erstellen?
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