Tout d'abord, je vérifierais si la moyenne est un indice approprié pour la tâche à accomplir. Si vous recherchez "une valeur typique / ou centrale" d'une distribution asymétrique, la moyenne peut vous indiquer une valeur plutôt non représentative. Considérez la distribution log-normale:
x <- rlnorm(1000)
plot(density(x), xlim=c(0, 10))
abline(v=mean(x), col="red")
abline(v=mean(x, tr=.20), col="darkgreen")
abline(v=median(x), col="blue")
La moyenne (ligne rouge) est assez éloignée de la majeure partie des données. La moyenne ajustée à 20% (vert) et la médiane (bleu) sont plus proches de la valeur "typique".
Les résultats dépendent du type de votre distribution "non normale" (un histogramme de vos données réelles serait utile). S'il n'est pas asymétrique, mais a une queue lourde, vos CI seront très larges.
En tout cas, je pense que le bootstrap est en effet une bonne approche, car il peut également vous donner des CI asymétriques. Le R
package simpleboot
est un bon début:
library(simpleboot)
# 20% trimmed mean bootstrap
b1 <- one.boot(x, mean, R=2000, tr=.2)
boot.ci(b1, type=c("perc", "bca"))
... vous donne le résultat suivant:
# The bootstrap trimmed mean:
> b1$t0
[1] 1.144648
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 2000 bootstrap replicates
Intervals :
Level Percentile BCa
95% ( 1.062, 1.228 ) ( 1.065, 1.229 )
Calculations and Intervals on Original Scale