Эти данные имеют короткий хвост по сравнению с логнормальным распределением, мало чем отличающимся от гамма-распределения:
set.seed(17)
par(mfcol=c(1,1))
x <- rgamma(500, 1.9)
qqnorm(log(x), pch=20, cex=.8, asp=1)
abline(mean(log(x)) + .1,1.2*sd(log(x)), col="Gray", lwd=2)
Тем не менее, поскольку данные являются сильно правой перекос, мы можем ожидать , что наибольшие значения играют важную роль в оценке среднего значения и его доверительный интервал. Поэтому следует ожидать, что логнормальная (LN) оценка будет склонна переоценивать среднее значение и два доверительных интервала .
Давайте проверим и, для сравнения, используем обычные оценки: то есть среднее значение выборки и его доверительный интервал в нормальной теории. Обратите внимание, что обычные оценщики полагаются только на приблизительную нормальность среднего значения выборки , а не данных, и - при таком большом наборе данных - можно ожидать, что они будут работать хорошо. Для этого нам понадобится небольшая модификация ci
функции:
ci <- function (x, alpha=.05) {
z <- -qnorm(alpha / 2)
y <- log(x); n <- length(y); s2 <- var(y)
m <- mean(y) + s2 / 2
d <- z * sqrt(s2 / n + s2 * s2 / (2 * (n - 1)))
exp(c(mean=m, lcl=m-d, ucl=m+d))
}
Вот параллельная функция для нормальных оценок:
ci.u <- function(x, alpha=.05) {
mean(x) + sd(x) * c(mean=0, lcl=1, ucl=-1) / sqrt(length(x)) * qnorm(alpha/2)
}
Применительно к этому смоделированному набору данных, выходы
> ci(x)
mean lcl ucl
2.03965 1.87712 2.21626
> ci.u(x)
mean lcl ucl
1.94301 1.81382 2.07219
ci.u
1,9
trial <- function(n=500, k=1.9) {
x <- rgamma(n, k)
cbind(ci(x), ci.u(x))
}
set.seed(17)
sim <- replicate(5000, trial())
1,9
xmin <- min(sim)
xmax <- max(sim)
h <- function(i, ...) {
b <- seq(from=floor(xmin*10)/10, to=ceiling(xmax*10)/10, by=0.1)
hist(sim[i,], freq=TRUE, breaks=b, col="#a0a0FF", xlab="x", xlim=c(xmin, xmax), ...)
hist(sim[i,sim[i,] >= 1.9], add=TRUE,freq=TRUE, breaks=b, col="#FFa0a0",
xlab="x", xlim=c(xmin, xmax), ...)
}
par(mfcol=c(2,3))
h(1, main="LN Estimate of Mean")
h(4, main="Sample Mean")
h(2, main="LN LCL")
h(5, main="LCL")
h(3, main="LN UCL")
h(6, main="UCL")
Теперь ясно, что логнормальные процедуры имеют тенденцию переоценивать среднее значение и пределы достоверности, тогда как обычные процедуры делают хорошую работу. Мы можем оценить покрытия процедур доверительного интервала:
> sapply(c(LNLCL=2, LCL=5, LNUCL=3, UCL=6), function(i) sum(sim[i,] > 1.9)/dim(sim)[2])
LNLCL LCL LNUCL UCL
0.2230 0.0234 1.0000 0.9648
Этот расчет говорит:
Нижний предел LN не сможет охватить истинное среднее значение примерно в 22,3% времени (вместо запланированных 2,5%).
Обычный нижний предел не сможет охватить истинное среднее значение около 2,3% времени, что близко к предполагаемому 2,5%.
Верхний предел LN всегда будет превышать истинное среднее значение (вместо того, чтобы опускаться ниже 2,5% времени, как предполагалось). Это делает двусторонний 100% - (22,3% + 0%) = 77,7% доверительный интервал вместо 95% доверительного интервала.
Обычный верхний предел не сможет охватить истинное среднее значение в 100 - 96,5 = 3,5% времени. Это немного больше, чем предполагаемое значение 2,5%. Таким образом, обычные пределы включают двусторонний доверительный интервал 100% - (2,3% + 3,5%) = 94,2% вместо 95% доверительного интервала.
Сокращение номинального покрытия с 95% до 77,7% для логнормального интервала ужасно. Снижение до 94,2% для обычного интервала совсем не плохо и может быть объяснено влиянием асимметрии (необработанных данных, а не их логарифмов).
Мы должны сделать вывод, что дальнейший анализ среднего значения не должен предполагать логнормальность.
Быть осторожен! Некоторые процедуры (такие как пределы прогнозирования) будут более чувствительными к асимметрии, чем эти доверительные пределы для среднего значения, поэтому, возможно, придется учитывать их искаженное распределение. Однако маловероятно, что логнормальные процедуры будут хорошо работать с этими данными практически для любого предполагаемого анализа.