Prima di tutto, vorrei verificare se la media è un indice appropriato per l'attività in corso. Se stai cercando "un valore tipico / o centrale" di una distribuzione distorta, la media potrebbe indicare un valore piuttosto non rappresentativo. Considera la distribuzione log-normal:
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 media (linea rossa) è piuttosto lontana dalla maggior parte dei dati. La media del 20% (verde) e la mediana (blu) sono più vicine al valore "tipico".
I risultati dipendono dal tipo di distribuzione "non normale" (sarebbe utile un istogramma dei dati effettivi). Se non è inclinato, ma ha code pesanti, i tuoi elementi della configurazione saranno molto ampi.
In ogni caso, penso che il bootstrap sia davvero un buon approccio, in quanto può anche darti CI asimmetrici. Il Rpacchetto simplebootè un buon inizio:
library(simpleboot)
# 20% trimmed mean bootstrap
b1 <- one.boot(x, mean, R=2000, tr=.2)
boot.ci(b1, type=c("perc", "bca"))
... ti dà il seguente risultato:
# 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