Tekrarlanan önlemler için normallik varsayımının test edilmesi anova? (R cinsinden)


11

Dolayısıyla, anova için normallik varsayımını test etmenin bir anlamı olduğunu varsayarsak (bkz. 1 ve 2 )

R'de nasıl test edilebilir?

Gibi bir şey yapmak beklenir:

## From Venables and Ripley (2002) p.165.
utils::data(npk, package="MASS")
npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)
residuals(npk.aovE)
qqnorm(residuals(npk.aov))

Bu işe yaramaz, çünkü "artıklar" tekrarlanan önlemler anova için bir yöntem (ne de bu konuda tahmin) yok.

Peki bu durumda ne yapılmalı?

Artıklar Hata terimi olmadan aynı uyum modelinden çıkarılabilir mi? Bunun geçerli olup olmadığını bilmek için literatüre yeterince aşina değilim, herhangi bir öneri için şimdiden teşekkürler.

Yanıtlar:


5

Basit bir yanıt alamayabilirsiniz, residuals(npk.aovE)ancak bu, o nesnede artık olmadığı anlamına gelmez. Yap strve gör ki seviyeler içinde hala kalıntılar var. "İçinde" düzeyine en çok ilgi duyduğunuzu düşünürdüm

> residuals(npk.aovE$Within)
          7           8           9          10          11          12 
 4.68058815  2.84725482  1.56432584 -5.46900749 -1.16900749 -3.90234083 
         13          14          15          16          17          18 
 5.08903669  1.28903669  0.35570336 -3.27762998 -4.19422371  1.80577629 
         19          20          21          22          23          24 
-3.12755705  0.03910962  2.60396981  1.13730314  2.77063648  4.63730314 

Kendi eğitimim ve pratiğim, QQ grafikleri ve paralel testleri sağlam yöntemlerle kullanmak yerine normallik testi kullanmak değildi.


Teşekkürler Dwin. Farklı kalıntılardan hangilerinin araştırılması gerektiğini merak ediyorum (İçinde olanın yanı sıra). Şerefe, Tal
Tal Galili

npk.aovE üç öğenin listesidir. İlk ikisi parametre tahminleridir ve normallik onlar için kabul edilmez, bu nedenle $ Within dışında hiçbir şeyi test etmek uygun görünmez. names(npk.aovE)"[1]" (Kesme noktası) "" block "" Within "
değerini

@Dwin, trev'in yayınladığı son yaklaşımı kontrol edebilir misiniz (son cevap)? Kalıntıları hesaplamak için bir tür projeksiyon kullanır. Gruplar arasındaki değişkenlik homojenliğine sahip bir grafik çizmek benim için en kolay yaklaşım.
toto_tico

@Dwin, ayrıca qqplot sadece lm'yi kabul ediyor gibi görünüyor, aov değil.
toto_tico

2

Başka bir seçenek lme, nlmepaketin işlevini kullanmak (ve sonra elde edilen modeli şuraya aktarmak anova) olacaktır. Çıkışında kullanabilirsiniz residuals.


1

Analiz yapılmadan önce normallik varsayımının tekrarlanan ölçümlerin her biri için değerlendirilebileceğini düşünüyorum. Her bir sütun tekrarlanan bir ölçüye karşılık gelecek şekilde veri çerçevesini yeniden şekillendiririm ve sonra bu sütunların her birine bir shapiro.test gerçekleştiririm.

apply(cast(melt(npk,measure.vars="yield"), ...~N+P+K)[-c(1:2)],2,function(x) shapiro.test(x)$p.value)

Teşekkürler gd047 - soru aov (verim ~ N P K + Hata (blok / (N + K)), npk) ile ilgili daha karmaşık bir senaryomuz olduğunda ne yapacağız ?
Tal Galili

Senaryolar arasındaki farkı açıklayacak kadar nazik misiniz? Ne yazık ki modelde Hata teriminin kullanımı hakkında yeterince bilgim yok (bu arada, bu konuda iyi bir kitap önerebilir misiniz?). Az önce önerdiğim şey, SPSS'nin öğrendiğim gibi normallik varsayımını kontrol etme yoludur. Bunu örnek olarak gör goo.gl/p45Bx
George Dontas

Merhaba gd047. Bağlantı için teşekkürler. Bu modeller hakkında bildiğim şeylerin hepsi buradan bağlantılıdır: r-statistics.com/2010/04/… Diğer kaynakları öğrenirseniz - bunları bilmek isterim. Şerefe, Tal
Tal Galili

1

Venables ve Ripley, daha sonra kitaplarında (s. 284) rastgele ve karışık efektler bölümünde tekrarlanan önlemler tasarımı için artık teşhisin nasıl yapılacağını açıklar.

Artıklar fonksiyonu (veya kalıntı) her tabaka için aov sonuçları için uygulanır:

onların örneğinden: oats.aov <- aov(Y ~ N + V + Error(B/V), data=oats, qr=T)

Takılan değerleri veya kalıntıları almak için:

"Böylece fitted(oats.aov[[4]])ve resid(oats.aov[[4]])son tabakadaki takılmış değerleri ve kalıntıları temsil eden 54 uzunluğundaki vektörlerdir."

Önemli olarak, eklerler:

"Onları özgün deneyin planlarıyla benzersiz bir şekilde ilişkilendirmek mümkün değil."

Teşhis için bir projeksiyon kullanırlar:

plot(fitted(oats.aov[[4]]), studres(oats.aov[[4]]))
abline(h=0, lty=2)
oats.pr <- proj(oats.aov)
qqnorm(oats.pr[[4]][, "Residuals"], ylab = "Stratum 4 residuals")
qqline(oats.pr[[4]][, "Residuals"])

Ayrıca, modelin başka bir kullanıcının yayınladığı gibi lme kullanılarak yapılabileceğini de gösteriyorlar.


göre bu , olması gereken [[3]] ve [[4]]. Test ettim ve sadece [[3]] için çalışıyor
toto_tico

1

İşte aov ve lme ile iki seçenek (bence 2. tercih edilir):

require(MASS) ## for oats data set
require(nlme) ## for lme()
require(multcomp) ## for multiple comparison stuff

Aov.mod <- aov(Y ~ N * V + Error(B/V), data = oats)
the_residuals <- aov.out.pr[[3]][, "Residuals"]

Lme.mod <- lme(Y ~ N * V, random = ~1 | B/V, data = oats)
the_residuals <- residuals(Lme.mod)

Orijinal örnek etkileşim olmadan geldi ( Lme.mod <- lme(Y ~ N * V, random = ~1 | B/V, data = oats)), ancak onunla çalışıyor gibi görünüyor (ve farklı sonuçlar üretiyor, bu yüzden bir şeyler yapıyor).

Ve bu kadar...

ama bütünlük için:

1 - Modelin özetleri

summary(Aov.mod)
anova(Lme.mod)

2 - Tekrarlanan ölçümlerle Tukey testi anova (3 saat bunu arıyor !!).

summary(Lme.mod)
summary(glht(Lme.mod, linfct=mcp(V="Tukey")))

3 - Normallik ve homoscedasticity grafikleri

par(mfrow=c(1,2)) #add room for the rotated labels
aov.out.pr <- proj(aov.mod)                                            
#oats$resi <- aov.out.pr[[3]][, "Residuals"]
oats$resi <- residuals(Lme.mod)
qqnorm(oats$resi, main="Normal Q-Q") # A quantile normal plot - good for checking normality
qqline(oats$resi)
boxplot(resi ~ interaction(N,V), main="Homoscedasticity", 
        xlab = "Code Categories", ylab = "Residuals", border = "white", 
        data=oats)
points(resi ~ interaction(N,V), pch = 1, 
       main="Homoscedasticity",  data=oats)

resim açıklamasını buraya girin

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.