Kiểm tra giả định tính chuẩn cho các biện pháp lặp lại anova? (bằng R)


11

Vì vậy, giả sử rằng có một điểm trong việc kiểm tra giả định tính chuẩn cho anova (xem 12 )

Làm thế nào nó có thể được thử nghiệm trong R?

Tôi hy vọng sẽ làm một cái gì đó như:

## 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))

Mà không hoạt động, vì "phần dư" không có phương pháp (cũng không dự đoán, cho vấn đề đó) cho trường hợp lặp lại các biện pháp anova.

Vậy nên làm gì trong trường hợp này?

Phần dư có thể được trích xuất từ ​​cùng một mô hình phù hợp mà không có thuật ngữ Lỗi không? Tôi không đủ quen thuộc với các tài liệu để biết nếu điều này là hợp lệ hay không, cảm ơn trước cho bất kỳ đề nghị.

Câu trả lời:


5

Bạn có thể không nhận được phản hồi đơn giản residuals(npk.aovE)nhưng điều đó không có nghĩa là không có phần dư trong đối tượng đó. Làm strvà thấy rằng trong các cấp độ vẫn còn dư. Tôi sẽ tưởng tượng bạn quan tâm nhất ở cấp độ "Trong"

> 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 

Đào tạo và thực hành của riêng tôi đã không được sử dụng thử nghiệm quy tắc, thay vào đó sử dụng các lô QQ và thử nghiệm song song với các phương pháp mạnh mẽ.


Cảm ơn bạn Dwin. Tôi tự hỏi những phần còn lại khác nhau nên được khám phá (bên cạnh Inside one). Chúc mừng, Tal
Tal Galili

npk.aovE là danh sách ba yếu tố. Hai cái đầu tiên là ước tính tham số và tính quy tắc không được giả định cho chúng, vì vậy có vẻ không thích hợp để kiểm tra bất cứ thứ gì ngoại trừ $ Inside. names(npk.aovE)trả về `[1]" (Chặn) "" chặn "" Trong vòng "`
DWin

@Dwin, bạn có thể kiểm tra cách tiếp cận cuối cùng mà trev đã đăng (câu trả lời cuối cùng) không? Nó sử dụng một loại phép chiếu để tính toán phần dư. Đó là cách tiếp cận dễ dàng nhất đối với tôi để vẽ đồ thị với sự đồng nhất của các biến thể giữa các nhóm.
toto_tico

@Dwin, qqplot dường như chỉ chấp nhận lm chứ không phải aov.
toto_tico

2

Một tùy chọn khác là sử dụng lmechức năng của nlmegói (và sau đó chuyển mô hình thu được sang anova). Bạn có thể sử dụng residualstrên đầu ra của nó.


1

Tôi nghĩ rằng giả định về tính quy tắc có thể được đánh giá cho từng biện pháp lặp lại trước khi thực hiện phân tích. Tôi sẽ định hình lại khung dữ liệu để mỗi cột tương ứng với một số đo lặp lại, và sau đó thực hiện một shapiro.test cho mỗi một trong các cột đó.

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

Cảm ơn gd047 - câu hỏi là chúng ta sẽ làm gì khi chúng ta có một kịch bản phức tạp hơn về aov (suất ~ N P K + Error (khối / (N + K)), npk) bài kiểm tra mà bạn đề xuất có thực hiện được không?
Tal Galili

Bạn có đủ tử tế để giải thích sự khác biệt giữa các kịch bản không? Thật không may, tôi không đủ quen thuộc với việc sử dụng thuật ngữ Lỗi trong mô hình (nhân tiện, bạn có thể đề xuất một cuốn sách hay về điều đó không?). Điều tôi vừa đề xuất là cách SPSS kiểm tra giả định về tính quy tắc, như tôi đã học được. Xem đây là một ví dụ goo.gl/p45Bx
George Dontas

Xin chào gd047. Cảm ơn vi đương link. Tất cả những điều tôi biết về các mô hình này đều được liên kết từ đây: r-statistic.com/2010/04/ Khăn Nếu bạn sẽ biết về các tài nguyên khác - tôi rất muốn biết về chúng. Chúc mừng, Tal
Tal Galili

1

Venables và Ripley giải thích cách thực hiện chẩn đoán dư cho thiết kế các biện pháp lặp lại sau này trong cuốn sách của họ (trang 284), trong phần về các hiệu ứng ngẫu nhiên và hỗn hợp.

Hàm dư (hoặc phần dư) được triển khai cho kết quả aov cho mỗi tầng:

từ ví dụ của họ: oats.aov <- aov(Y ~ N + V + Error(B/V), data=oats, qr=T)

Để có được các giá trị được trang bị hoặc phần dư:

"Như vậy fitted(oats.aov[[4]])resid(oats.aov[[4]])là các vectơ có chiều dài 54 đại diện cho các giá trị và phần dư được trang bị từ tầng cuối cùng."

Điều quan trọng, họ thêm:

"Không thể liên kết chúng một cách độc đáo với các âm mưu của thí nghiệm ban đầu."

Để chẩn đoán, họ sử dụng phép chiếu:

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"])

Họ cũng cho thấy rằng mô hình có thể được thực hiện bằng lme, như một người dùng khác đã đăng.


theo điều này , nó phải là [[3]] chứ không phải [[4]]. Tôi đã thử nghiệm nó và nó chỉ hoạt động cho [[3]]
toto_tico

1

Đây là hai lựa chọn, với aov và với lme (tôi nghĩ thứ 2 được ưa thích hơn):

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)

Ví dụ ban đầu xuất hiện mà không có sự tương tác ( Lme.mod <- lme(Y ~ N * V, random = ~1 | B/V, data = oats)) nhưng dường như nó đang làm việc với nó (và tạo ra các kết quả khác nhau, vì vậy nó đang làm một cái gì đó).

Và đó là ...

nhưng cho đầy đủ:

1 - Tóm tắt của mô hình

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

2 - Thử nghiệm Tukey với các biện pháp lặp lại anova (3 giờ tìm kiếm này !!).

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

3 - Các ô bình thường và đồng đẳng

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)

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.