Volevo fare una dimostrazione di classe in cui ho confrontato un intervallo t con un intervallo bootstrap e ho calcolato la probabilità di copertura di entrambi. Volevo che i dati provenissero da una distribuzione distorta, quindi ho scelto di generare i dati come exp(rnorm(10, 0, 2)) + 1
, un campione di dimensioni 10 da un lognormal spostato. Ho scritto una sceneggiatura per disegnare 1000 campioni e, per ogni campione, calcolare sia un intervallo t del 95% che un intervallo percentuale del bootstrap del 95% sulla base di 1000 replicati.
Quando eseguo lo script, entrambi i metodi danno intervalli molto simili ed entrambi hanno una probabilità di copertura del 50-60%. Sono rimasto sorpreso perché pensavo che l'intervallo di bootstrap sarebbe stato migliore.
La mia domanda è, vero
- fatto un errore nel codice?
- fatto un errore nel calcolo degli intervalli?
- fatto un errore prevedendo che l'intervallo di bootstrap abbia migliori proprietà di copertura?
Inoltre, esiste un modo per costruire un elemento della configurazione più affidabile in questa situazione?
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