Bu örnek için normallik (log-) alabilir miyim?


11

İşte benim örnek için bir QQ grafiği (logaritmik Y ekseni dikkat edin); :n=1000

resim açıklamasını buraya girin
Whuber tarafından işaret edildiği gibi, bu, alttaki dağılımın sola eğik olduğunu gösterir (sağ kuyruk daha kısadır).

shapiro.testR'de (log dönüştürülmüş verilerde) kullanarak , test istatistiklerini ve p değerini , bu da null hipotezini resmen reddettiğimiz anlamına gelir. % 95 güven düzeyinde .W=0.97185.1721013H0:the sample is normal distributed

Benim sorum: Bu, uygulamada (log-) normallik varsayarak ileri analiz için yeterince iyi mi? Özellikle, Cox ve Land'in yaklaşık yöntemini kullanarak benzer örneklerin araçları için güven aralıklarını hesaplamak istiyorum (makalede açıklanan: Zou, GY, cindy Yan Huo ve Taleban, J. (2009). lognormal ortalamalar ve çevresel uygulamalarla farkları Environmentme, 20, 172-180):

ci <- function (x) {
        y <- log(x)
        n <- length(y)
        s2 <- var(y)
        m <- mean(y) + s2 / 2
        z <- qnorm(1 - 0.05 / 2) # 95%
        #z <- qnorm(1 - 0.10 / 2) # 90%
        d <- z * sqrt(s2 / n + s2 * s2 / (2 * (n - 1)))

        return(c(exp(m - d), exp(m + d)))
}

Güven aralıklarının gerçek örnek ortalamasının biraz üzerinde bir nokta etrafında toplanma eğiliminde olduğunu fark ettim. Örneğin:

> mean(x)
[1] 82.3076
> y <- log(x)
> exp(mean(y) + var(y) / 2)
[1] 91.22831

Bence bu iki değer altında aynı olmalıdır .H0


1
Dağıtım kesinlikle doğru kuyruğa uymuyor.
Michael R. Chernick

1
Bu QQ grafiği, verilerin lognormal dağılımdan çok daha kısa sağ kuyruğa sahip olduğunu göstermektedir: lognormal ile karşılaştırıldığında eğri bırakılmıştır . Bu nedenle lognormal-temelli prosedürleri kullanma konusunda temkinli olmalısınız.
whuber

@whuber evet, sağa çarpık değil, çarpık bırakılmaya haklısın. Soruyu güncellemeli miyim?
Vegard

Elbette: sorulardaki gelişmeleri takdir ediyoruz.
whuber

2
Not: "sola eğik" ile açıkça sol kuyruğun uzun olduğunu değil , sağ kuyruğun kısa olduğunu kastediyorum . Bu, grafiğin sağındaki noktaların referans çizgisinin altına nasıl düştüğü ile belirgindir . Grafiğin solundaki noktalar referans çizgisine (nispeten) yakın olduğundan, bu dağılımı "daha uzun sol kuyruğa" sahip olarak karakterize etmek yanlıştır. Sağ kuyruk nedeniyle ayrım, burada önemli olan gerektiğini sol kuyruk (oysa oranla daha tahmin edilen ortalama üzerinde çok daha büyük bir etkiye sahip olduğu her iki kuyrukları onun güven aralığını etkileyen).
whuber

Yanıtlar:


12

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)

QQPlot

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, cifonksiyonda 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.ubiraz 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")

histogramlar

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.


Vay be, bu cevap beni uçuruyor. Çok teşekkür ederim! İlk örnekte (farklı bir çizgi üreten) abline()yerine nasıl kullanıyorsunuz qqline()?
Vegard

Sizin trial()işlevi argümanları kullanmaz.
Vegard


1
İyi iş! Ön yükleme için, modifiye trial: trial <- function(y) { x <- sample(y, length(y), TRUE); cbind(ci(x), ci.u(x)) }. Sonra sadece bir komut verin sim <- sapply(1:5000, function(i) trial(x)). Daha simsonra altı sıranın histogramlarını keşfetmek isteyebilirsiniz .
whuber

1
+1, özellikle, tahmin aralıklarının dağılım şekline ortalama için güven aralıklarından daha duyarlı olacağı ince noktayı seviyorum.
gung - Monica'yı eski durumuna getirin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.