Прежде всего, я бы проверил, является ли среднее значение подходящим показателем для поставленной задачи. Если вы ищете «типичное / или центральное значение» перекошенного распределения, среднее может указывать на довольно нерепрезентативное значение. Рассмотрим лог-нормальное распределение:
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")
Среднее значение (красная линия) довольно далеко от основной массы данных. Усеченное на 20% среднее (зеленое) и медианное (синее) ближе к «типичному» значению.
Результаты зависят от типа вашего «ненормального» распределения (была бы полезна гистограмма ваших фактических данных). Если он не перекошен, но имеет тяжелые хвосты, ваши CI будут очень широкими.
В любом случае, я думаю, что начальная загрузка действительно является хорошим подходом, поскольку она также может дать вам асимметричные CI. R
Пакет simpleboot
является хорошим началом:
library(simpleboot)
# 20% trimmed mean bootstrap
b1 <- one.boot(x, mean, R=2000, tr=.2)
boot.ci(b1, type=c("perc", "bca"))
... дает вам следующий результат:
# 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