Bu veriler, bir Gama dağılımından farklı olarak lognormal bir dağılıma kıyasla kısa bir kuyruğa sahiptir:
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)
Veri nedeniyle Yine de vardır kuvvetle sağ çarpık, biz ortalama ve onun güven aralığını tahmin etmede önemli bir rol oynamaya büyük değerler bekleyebilirsiniz. Bu nedenle , lognormal (LN) bir tahmin edicinin ortalamayı ve iki güven sınırını abartmaya meyilli olduğunu tahmin etmeliyiz .
Kontrol edelim ve karşılaştırma için olağan tahmin edicileri kullanalım: yani, örnek ortalama ve normal teori güven aralığı. Her zamanki tahmin edicilerin verilerin değil, sadece örnek ortalamanın yaklaşık normallerine bağlı olduğunu ve - böyle büyük bir veri kümesiyle - iyi çalışması beklendiğini unutmayın. Bunu yapmak için, ci
fonksiyonda küçük bir değişikliğe ihtiyacımız var :
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))
}
İşte normal teori tahminleri için paralel bir fonksiyon:
ci.u <- function(x, alpha=.05) {
mean(x) + sd(x) * c(mean=0, lcl=1, ucl=-1) / sqrt(length(x)) * qnorm(alpha/2)
}
Bu simüle edilmiş veri kümesine uygulandığında, çıktılar
> ci(x)
mean lcl ucl
2.03965 1.87712 2.21626
> ci.u(x)
mean lcl ucl
1.94301 1.81382 2.07219
Normal-teori tahminleri tarafından üretilen ci.u
biraz daha yakın gerçek ortalamaya bakmak , ancak prosedür daha iyi çalışması eğilimindedir bir veri kümesi gelen söylemek zor. Öğrenmek için bir çok veri kümesini simüle edelim: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())
Çıktıları gerçek . Bu konuda bir histogram paneli açığa çıkıyor: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")
Artık lognormal prosedürlerin ortalamayı ve güven sınırlarını abartmaya meyilli olduğu açıktır, oysa normal prosedürler iyi bir iş çıkarmaktadır. Güven aralığı prosedürlerinin kapsamlarını tahmin edebiliriz:
> 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
Bu hesaplama diyor ki:
LN alt limiti, zamanın yaklaşık% 22.3'ünü (amaçlanan% 2.5 yerine) gerçek ortalamayı karşılayamaz.
Olağan alt sınır, istenen ortalama% 2.5'e yakın olan zamanın yaklaşık% 2.3'ünü gerçek ortalamayı karşılayamaz.
LN üst limiti her zaman gerçek ortalamayı aşacaktır (amaçlanan sürenin% 2,5'in altına düşmek yerine). Bu, onu% 95 güven aralığı yerine iki taraflı% 100 - (% 22.3 +% 0) =% 77.7 güven aralığı yapar.
Normal üst sınır, gerçek ortalama yaklaşık 100 - 96.5 = zamanın% 3.5'ini karşılayamaz. Bu, istenen% 2,5 değerinden biraz daha büyüktür. Bu nedenle olağan sınırlar,% 95 güven aralığı yerine iki taraflı% 100 - (% 2.3 +% 3.5) =% 94.2 güven aralığını içerir.
Lognormal aralık için nominal kapsamın% 95'ten% 77,7'ye düşürülmesi korkunçtur. Olağan aralık için% 94.2'ye düşürme hiç de fena değil ve çarpıklığın (ham verilerin, logaritmalarının değil) etkisine atfedilebilir.
Bunu sonuçlandırmak zorunda ileri analizler ortalamanın gerektiğini değil lognormality varsayalım.
Dikkatli ol! Bazı prosedürler (tahmin limitleri gibi) çarpıklığa ortalama için bu güven sınırlarından daha duyarlı olacaktır, bu nedenle çarpık dağılımlarının hesaba katılması gerekebilir. Bununla birlikte, lognormal prosedürlerin, pratikte herhangi bir amaçlanan analiz için bu verilerle iyi performans göstermesi olası görünmemektedir.