Tại sao lme và aov trả lại kết quả khác nhau cho các số đo lặp lại ANOVA trong R?


24

Tôi đang cố gắng chuyển từ sử dụng ezgói sang lmecác biện pháp lặp lại ANOVA (vì tôi hy vọng tôi sẽ có thể sử dụng độ tương phản tùy chỉnh trên lme).

Theo lời khuyên từ bài đăng trên blog này, tôi đã có thể thiết lập cùng một mô hình bằng cách sử dụng cả hai aov(như ez, khi được yêu cầu) và lme. Tuy nhiên, trong ví dụ được đưa ra trong bài đăng đó, các giá trị F hoàn toàn đồng ý giữa aovlme(tôi đã kiểm tra nó và họ làm như vậy), đây không phải là trường hợp của dữ liệu của tôi. Mặc dù giá trị F tương tự nhau, nhưng chúng không giống nhau.

aovtrả về giá trị f là 1,3399, lmetrả về 1,36264. Tôi sẵn sàng chấp nhận aovkết quả là "chính xác" vì đây cũng là những gì SPSS trả về (và đây là những gì được tính cho lĩnh vực / giám sát viên của tôi).

Câu hỏi:

  1. Sẽ thật tuyệt nếu ai đó có thể giải thích tại sao sự khác biệt này tồn tại và làm thế nào tôi có thể sử dụng lmeđể cung cấp kết quả đáng tin cậy. (Tôi cũng sẽ sẵn sàng sử dụng lmerthay vì lmecho loại công cụ này, nếu nó cho kết quả "chính xác". Tuy nhiên, cho đến nay tôi vẫn chưa sử dụng nó.)

  2. Sau khi giải quyết vấn đề này, tôi muốn chạy một phân tích tương phản. Đặc biệt tôi sẽ quan tâm đến sự tương phản của việc gộp hai cấp độ yếu tố đầu tiên (nghĩa là c("MP", "MT")) và so sánh điều này với cấp độ yếu tố thứ ba (nghĩa là "AC"). Hơn nữa, kiểm tra mức thứ ba so với mức thứ tư của yếu tố (nghĩa là "AC"so với "DA").

Dữ liệu:

tau.base <- structure(list(id = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 
9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 
22L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 
14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 1L, 2L, 3L, 4L, 
5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 
19L, 20L, 21L, 22L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L), .Label = c("A18K", 
"D21C", "F25E", "G25D", "H05M", "H07A", "H08H", "H25C", "H28E", 
"H30D", "J10G", "J22J", "K20U", "M09M", "P20E", "P26G", "P28G", 
"R03C", "U21S", "W08A", "W15V", "W18R"), class = "factor"), factor = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("MP", "MT", "AC", "DA"
), class = "factor"), value = c(0.9648092876, 0.2128662077, 1, 
0.0607615485, 0.9912814024, 3.22e-08, 0.8073856412, 0.1465590332, 
0.9981672618, 1, 1, 1, 0.9794401938, 0.6102546108, 0.428651501, 
1, 0.1710644881, 1, 0.7639763913, 1, 0.5298989196, 1, 1, 0.7162733447, 
0.7871177434, 1, 1, 1, 0.8560509327, 0.3096989662, 1, 8.51e-08, 
0.3278862311, 0.0953598576, 1, 1.38e-08, 1.07e-08, 0.545290432, 
0.1305621416, 2.61e-08, 1, 0.9834051136, 0.8044114935, 0.7938839461, 
0.9910112678, 2.58e-08, 0.5762677121, 0.4750002288, 1e-08, 0.8584252623, 
1, 1, 0.6020385797, 8.51e-08, 0.7964935271, 0.2238374288, 0.263377904, 
1, 1.07e-08, 0.3160751898, 5.8e-08, 0.3460325565, 0.6842217296, 
1.01e-08, 0.9438301877, 0.5578367224, 2.18e-08, 1, 0.9161424562, 
0.2924856039, 1e-08, 0.8672987992, 0.9266688748, 0.8356425464, 
0.9988463913, 0.2960361777, 0.0285680426, 0.0969063841, 0.6947998266, 
0.0138254805, 1, 0.3494775301, 1, 2.61e-08, 1.52e-08, 0.5393467752, 
1, 0.9069223275)), .Names = c("id", "factor", "value"), class = "data.frame", row.names = c(1L, 
6L, 10L, 13L, 16L, 17L, 18L, 22L, 23L, 24L, 27L, 29L, 31L, 33L, 
42L, 43L, 44L, 45L, 54L, 56L, 58L, 61L, 64L, 69L, 73L, 76L, 79L, 
80L, 81L, 85L, 86L, 87L, 90L, 92L, 94L, 96L, 105L, 106L, 107L, 
108L, 117L, 119L, 121L, 124L, 127L, 132L, 136L, 139L, 142L, 143L, 
144L, 148L, 149L, 150L, 153L, 155L, 157L, 159L, 168L, 169L, 170L, 
171L, 180L, 182L, 184L, 187L, 190L, 195L, 199L, 202L, 205L, 206L, 
207L, 211L, 212L, 213L, 216L, 218L, 220L, 222L, 231L, 232L, 233L, 
234L, 243L, 245L, 247L, 250L))

Và mã:

require(nlme)

summary(aov(value ~ factor+Error(id/factor), data = tau.base))

anova(lme(value ~ factor, data = tau.base, random = ~1|id))

Có vẻ như bạn vừa trả lời phần về sự tương phản chính mình trong câu trả lời của bạn ở đây ; nếu không, vui lòng chỉnh sửa câu hỏi này để chúng tôi biết những khó khăn còn lại.
Aaron - Tái lập Monica

2
@Aaron, miễn là có sự khác biệt trong lmekết quả từ sách giáo khoa tiêu chuẩn ANOVA (được đưa ra bởi aov, và đó là những gì tôi cần), đây không phải là một lựa chọn cho tôi. Trong bài báo của tôi, tôi muốn báo cáo ANOVA, không phải là ANOVA. Thú vị là Venables & Ripley (2002, p. 285) cho thấy cả hai cách tiếp cận đều dẫn đến ước tính giống hệt nhau. Nhưng sự khác biệt về giá trị F để lại cho tôi cảm giác tồi tệ. Hơn nữa, Anova()(từ car) chỉ trả về giá trị Chi² cho lmecác đối tượng. Vì vậy, đối với tôi, câu hỏi đầu tiên của tôi chưa được trả lời.
Henrik

Tôi hiểu (nhưng không chia sẻ) sự cảnh giác của bạn về lme; nhưng đối với sự tương phản, glhthoạt động trên lmphù hợp quá, không chỉ lmephù hợp. (Ngoài ra, lmekết quả cũng là kết quả của sách giáo khoa tiêu chuẩn.)
Aaron - Tái lập Monica

Thật không may, bạn không thể chỉ định lmcho một phân tích đo lặp đi lặp lại. Chỉ aovcó thể xử lý các biện pháp lặp đi lặp lại nhưng sẽ trả về một đối tượng của lớp aovlistmà không may không được xử lý glht.
Henrik

3
lmsử dụng lỗi dư làm thuật ngữ lỗi cho tất cả các hiệu ứng; khi có các hiệu ứng nên sử dụng một thuật ngữ lỗi khác, aovlà cần thiết (hoặc thay vào đó, sử dụng các kết quả từ lmđể tính toán các chỉ số F theo cách thủ công). Trong ví dụ của bạn, thuật ngữ lỗi cho factorid:factortương tác, là thuật ngữ lỗi còn lại trong mô hình phụ gia. So sánh kết quả của bạn với anova(lm(value~factor+id)).
Aaron - Hồi phục lại

Câu trả lời:


28

Chúng khác nhau bởi vì mô hình lme đang buộc thành phần phương sai idlớn hơn 0. Nhìn vào bảng anova thô cho tất cả các thuật ngữ, chúng ta thấy rằng lỗi bình phương trung bình cho id nhỏ hơn so với phần dư.

> anova(lm1 <- lm(value~ factor+id, data=tau.base))

          Df  Sum Sq Mean Sq F value Pr(>F)
factor     3  0.6484 0.21614  1.3399 0.2694
id        21  3.1609 0.15052  0.9331 0.5526
Residuals 63 10.1628 0.16131   

Khi chúng ta tính toán các thành phần phương sai, điều này có nghĩa là phương sai do id sẽ âm. Bộ nhớ của tôi về bộ nhớ bình phương trung bình dự kiến ​​sẽ bị rung, nhưng tính toán giống như

(0.15052-0.16131)/3 = -0.003597.

Điều này nghe có vẻ kỳ quặc nhưng có thể xảy ra. Điều đó có nghĩa là trung bình của mỗi id gần nhau hơn so với bạn mong đợi với số lượng biến thể dư trong mô hình.

Ngược lại, sử dụng lme buộc phương sai này lớn hơn 0.

> summary(lme1 <- lme(value ~ factor, data = tau.base, random = ~1|id))
...
Random effects:
 Formula: ~1 | id
        (Intercept)  Residual
StdDev: 3.09076e-05 0.3982667

Điều này báo cáo độ lệch chuẩn, bình phương để có được sản lượng phương sai 9.553e-10cho phương sai id và 0.1586164cho phương sai dư.

Bây giờ, bạn nên biết rằng sử dụng aovcho các biện pháp lặp lại chỉ phù hợp nếu bạn tin rằng mối tương quan giữa tất cả các cặp biện pháp lặp lại là giống hệt nhau; điều này được gọi là đối xứng hợp chất. (Về mặt kỹ thuật, cầu thể là cần thiết nhưng điều này là đủ cho bây giờ.) Một lý do để sử dụng lmetrên aovlà nó có thể xử lý các loại khác nhau của các cấu trúc tương quan.

Trong tập dữ liệu cụ thể này, ước tính cho mối tương quan này là âm; điều này giúp giải thích làm thế nào lỗi bình phương trung bình cho id nhỏ hơn lỗi bình phương còn lại. Một mối tương quan âm có nghĩa là nếu trung bình lần đo đầu tiên của một cá nhân dưới mức trung bình, thì lần thứ hai của họ sẽ ở trên mức trung bình, làm cho tổng số trung bình của các cá nhân ít thay đổi hơn chúng ta mong đợi nếu có tương quan bằng 0 hoặc tương quan dương.

Sử dụng lmevới hiệu ứng ngẫu nhiên tương đương với việc phù hợp với mô hình đối xứng hỗn hợp trong đó mối tương quan đó buộc phải không âm; chúng ta có thể phù hợp với một mô hình trong đó mối tương quan được phép là âm bằng cách sử dụng gls:

> anova(gls1 <- gls(value ~ factor, correlation=corCompSymm(form=~1|id),
                    data=tau.base))
Denom. DF: 84 
            numDF   F-value p-value
(Intercept)     1 199.55223  <.0001
factor          3   1.33985   0.267

Bảng ANOVA này đồng ý với bảng từ aovphù hợp và từ lmphù hợp.

Được, vậy thì sao? Chà, nếu bạn tin rằng phương sai từ idvà mối tương quan giữa các quan sát nên không âm, thì sự lmephù hợp thực sự phù hợp hơn so với sự phù hợp bằng cách sử dụng aovhoặc lmtheo ước tính của phương sai còn lại là tốt hơn một chút. Tuy nhiên, nếu bạn tin rằng mối tương quan giữa các quan sát có thể là tiêu cực, aovhay lmhoặc glslà tốt hơn.

Bạn cũng có thể quan tâm đến việc khám phá cấu trúc tương quan hơn nữa; để xem xét một cấu trúc tương quan chung, bạn sẽ làm một cái gì đó như

gls2 <- gls(value ~ factor, correlation=corSymm(form=~unclass(factor)|id),
data=tau.base)

Ở đây tôi chỉ giới hạn đầu ra cho cấu trúc tương quan. Các giá trị 1 đến 4 đại diện cho bốn cấp độ factor; chúng ta thấy yếu tố 1 và yếu tố 4 có mối tương quan ngược chiều khá mạnh:

> summary(gls2)
...
Correlation Structure: General
 Formula: ~unclass(factor) | id 
 Parameter estimate(s):
 Correlation: 
  1      2      3     
2  0.049              
3 -0.127  0.208       
4 -0.400  0.146 -0.024

Một cách để lựa chọn giữa các mô hình này là kiểm tra tỷ lệ khả năng; điều này cho thấy mô hình hiệu ứng ngẫu nhiên và mô hình cấu trúc tương quan chung không khác biệt đáng kể về mặt thống kê; khi điều đó xảy ra, mô hình đơn giản hơn thường được ưa thích.

> anova(lme1, gls2)
     Model df      AIC      BIC    logLik   Test  L.Ratio p-value
lme1     1  6 108.0794 122.6643 -48.03972                        
gls2     2 11 111.9787 138.7177 -44.98936 1 vs 2 6.100725  0.2965

2
Thực tế có thể sử dụng đối xứng hỗn hợp với lmeđể có được kết quả tương tự như với aov(và do đó cho phép lmetất cả ANOVAs), cụ thể là sử dụng đối số tương quan trong lệnh gọi tới lme:anova(lme(value ~ factor, data = tau.base, random = ~1|id, correlation = corCompSymm(form = ~1|id)))
Henrik

1
Đẹp tìm thấy. Nhưng không có thêm một tham số phù hợp? Nó có ba tham số phương sai; phương sai cho id, phương sai dư và tương quan, trong khi gls chỉ có phương sai dư và tương quan.
Aaron - Phục hồi Monica

1
Đối số của bạn nghe có vẻ hợp lý, tuy nhiên, kết quả không đồng ý. Tất cả các bảng anova ( aov, lmekhông có đối xứng hợp chất và lmeđối xứng hợp chất) có cùng số lượng dfs.
Henrik

1
Bạn sẽ phải thuyết phục tôi rằng ba tham số đó thực sự là một sự vượt trội so với hai tham số đầu tiên. Bạn đã tìm ra cách chúng liên quan?
Aaron - Phục hồi Monica

1
Không. Tôi tin tưởng đầu ra của anova.lme(). Từ câu trả lời của bạn, tôi hiểu rằng mối quan hệ giữa ANOVA và các mô hình hỗn hợp nằm trong cấu trúc tương quan của chúng. Sau đó tôi đọc rằng việc áp đặt một cấu trúc tương quan đối xứng hoàn lại dẫn đến sự bình đẳng giữa hai cách tiếp cận. Vì vậy, tôi áp đặt nó. Tôi không biết nếu điều này ăn lên một df khác. Tuy nhiên, đầu ra không đồng ý với cách giải thích này.
Henrik

2

aov()phù hợp với mô hình thông qua lm()việc sử dụng bình phương tối thiểu, lmephù hợp với khả năng tối đa. Sự khác biệt đó trong cách các tham số của mô hình tuyến tính được ước tính có khả năng chiếm sự khác biệt (rất nhỏ) trong các giá trị f của bạn.

Trong thực tế, (ví dụ để kiểm tra giả thuyết) các ước tính này là như nhau, vì vậy tôi không thấy cách người ta có thể được coi là "đáng tin cậy hơn" so với người khác. Họ đến từ các mô hình phù hợp mô hình khác nhau.

Đối với độ tương phản, bạn cần thiết lập một ma trận tương phản cho các yếu tố của bạn. Venebles và Ripley chỉ ra cách thực hiện điều này trên p 143, p.146 và p.293-294 của phiên bản thứ 4.


Hmm, nhưng tại sao đôi khi có sự khác biệt và đôi khi kết quả chính xác như nhau? Furthemrore, sau đó dường như không thể sử dụng lmehoặc lmertính toán ANOVA (nói đúng) vì nó sử dụng một phương pháp tương tự nhưng không giống nhau. Vì vậy, không có cách tính độ tương phản cho ANOVAs đo lặp lại trong R?
Henrik

Nếu hệ thống mô hình của bạn thực sự tuyến tính hơn bình phương nhỏ nhất và ML sẽ cho cùng một thống kê f. Chỉ khi có cấu trúc khác trong dữ liệu, hai phương thức sẽ cho kết quả khác nhau. Pinheiro và Bates bao gồm điều này trong cuốn sách mô hình hiệu ứng hỗn hợp của họ. Ngoài ra, chúng có thể không "chính xác" bằng nhau, nếu bạn đã đi đủ xa trong các chữ số sig tôi chắc chắn bạn sẽ tìm thấy một số khác biệt. Nhưng đối với tất cả các mục đích thực tế, chúng là như nhau.
Chris
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.