Sự tương đương giữa một mô hình đo anova lặp đi lặp lại và một mô hình hỗn hợp: lmer vs lme và đối xứng hợp chất


9

Tôi gặp một số khó khăn khi có được kết quả tương đương giữa aovmô hình đo lặp lại giữa bên trong và lmermô hình hỗn hợp.

Dữ liệu và tập lệnh của tôi trông như sau

data=read.csv("https://www.dropbox.com/s/zgle45tpyv5t781/fitness.csv?dl=1")
data$id=factor(data$id)
data
   id  FITNESS      TEST PULSE
1   1  pilates   CYCLING    91
2   2  pilates   CYCLING    82
3   3  pilates   CYCLING    65
4   4  pilates   CYCLING    90
5   5  pilates   CYCLING    79
6   6  pilates   CYCLING    84
7   7 aerobics   CYCLING    84
8   8 aerobics   CYCLING    77
9   9 aerobics   CYCLING    71
10 10 aerobics   CYCLING    91
11 11 aerobics   CYCLING    72
12 12 aerobics   CYCLING    93
13 13    zumba   CYCLING    63
14 14    zumba   CYCLING    87
15 15    zumba   CYCLING    67
16 16    zumba   CYCLING    98
17 17    zumba   CYCLING    63
18 18    zumba   CYCLING    72
19  1  pilates   JOGGING   136
20  2  pilates   JOGGING   119
21  3  pilates   JOGGING   126
22  4  pilates   JOGGING   108
23  5  pilates   JOGGING   122
24  6  pilates   JOGGING   101
25  7 aerobics   JOGGING   116
26  8 aerobics   JOGGING   142
27  9 aerobics   JOGGING   137
28 10 aerobics   JOGGING   134
29 11 aerobics   JOGGING   131
30 12 aerobics   JOGGING   120
31 13    zumba   JOGGING    99
32 14    zumba   JOGGING    99
33 15    zumba   JOGGING    98
34 16    zumba   JOGGING    99
35 17    zumba   JOGGING    87
36 18    zumba   JOGGING    89
37  1  pilates SPRINTING   179
38  2  pilates SPRINTING   195
39  3  pilates SPRINTING   188
40  4  pilates SPRINTING   189
41  5  pilates SPRINTING   173
42  6  pilates SPRINTING   193
43  7 aerobics SPRINTING   184
44  8 aerobics SPRINTING   179
45  9 aerobics SPRINTING   179
46 10 aerobics SPRINTING   174
47 11 aerobics SPRINTING   164
48 12 aerobics SPRINTING   182
49 13    zumba SPRINTING   111
50 14    zumba SPRINTING   103
51 15    zumba SPRINTING   113
52 16    zumba SPRINTING   118
53 17    zumba SPRINTING   127
54 18    zumba SPRINTING   113

Về cơ bản, 3 x 6 đối tượng ( id) đã phải chịu ba chế độ FITNESStập luyện khác nhau và chúng PULSEđược đo sau khi thực hiện ba loại độ bền khác nhau TEST.

Sau đó tôi trang bị aovmô hình sau :

library(afex)
library(car)
set_sum_contrasts()
fit1 = aov(PULSE ~ FITNESS*TEST + Error(id/TEST),data=data)
summary(fit1)
Error: id
          Df Sum Sq Mean Sq F value   Pr(>F)    
FITNESS    2  14194    7097   115.1 7.92e-10 ***
Residuals 15    925      62                     
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Error: id:TEST
             Df Sum Sq Mean Sq F value   Pr(>F)    
TEST          2  57459   28729   253.7  < 2e-16 ***
FITNESS:TEST  4   8200    2050    18.1 1.16e-07 ***
Residuals    30   3397     113                     
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Kết quả tôi nhận được bằng cách sử dụng

set_sum_contrasts()
fit2=aov.car(PULSE ~ FITNESS*TEST+Error(id/TEST),data=data,type=3,return="Anova")
summary(fit2)

là giống hệt với điều này.

Một mô hình hỗn hợp chạy bằng cách sử dụng nlmecho kết quả tương đương trực tiếp, ví dụ: sử dụng lme:

library(lmerTest)    
lme1=lme(PULSE ~ FITNESS*TEST, random=~1|id, correlation=corCompSymm(form=~1|id),data=data)
anova(lme1)
             numDF denDF   F-value p-value
(Intercept)      1    30 12136.126  <.0001
FITNESS          2    15   115.127  <.0001
TEST             2    30   253.694  <.0001
FITNESS:TEST     4    30    18.103  <.0001


summary(lme1)
Linear mixed-effects model fit by REML
 Data: data 
       AIC      BIC    logLik
  371.5375 393.2175 -173.7688

Random effects:
 Formula: ~1 | id
        (Intercept) Residual
StdDev:    1.699959 9.651662

Correlation Structure: Compound symmetry
 Formula: ~1 | id 
 Parameter estimate(s):
       Rho 
-0.2156615 
Fixed effects: PULSE ~ FITNESS * TEST 
                                 Value Std.Error DF   t-value p-value
(Intercept)                   81.33333  4.000926 30 20.328628  0.0000
FITNESSpilates                 0.50000  5.658164 15  0.088368  0.9308
FITNESSzumba                  -6.33333  5.658164 15 -1.119327  0.2806
TESTJOGGING                   48.66667  6.143952 30  7.921069  0.0000
TESTSPRINTING                 95.66667  6.143952 30 15.570868  0.0000
FITNESSpilates:TESTJOGGING   -11.83333  8.688861 30 -1.361897  0.1834
FITNESSzumba:TESTJOGGING     -28.50000  8.688861 30 -3.280062  0.0026
FITNESSpilates:TESTSPRINTING   8.66667  8.688861 30  0.997446  0.3265
FITNESSzumba:TESTSPRINTING   -56.50000  8.688861 30 -6.502579  0.0000

Hoặc sử dụng gls:

library(lmerTest)    
gls1=gls(PULSE ~ FITNESS*TEST, correlation=corCompSymm(form=~1|id),data=data)
anova(gls1)

Tuy nhiên, kết quả tôi được sự thoả sử dụng lme4lmerkhác nhau:

set_sum_contrasts()
fit3=lmer(PULSE ~ FITNESS*TEST+(1|id),data=data)
summary(fit3)
Linear mixed model fit by REML ['lmerMod']
Formula: PULSE ~ FITNESS * TEST + (1 | id)
   Data: data

REML criterion at convergence: 362.4

Random effects:
 Groups   Name        Variance Std.Dev.
 id       (Intercept)  0.00    0.0     
 Residual             96.04    9.8     
...

Anova(fit3,test.statistic="F",type=3)
Analysis of Deviance Table (Type III Wald F tests with Kenward-Roger df)

Response: PULSE
                    F Df Df.res    Pr(>F)    
(Intercept)  7789.360  1     15 < 2.2e-16 ***
FITNESS        73.892  2     15 1.712e-08 ***
TEST          299.127  2     30 < 2.2e-16 ***
FITNESS:TEST   21.345  4     30 2.030e-08 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Bất cứ ai có suy nghĩ những gì tôi đang làm sai với lmermô hình? Hay sự khác biệt đến từ đâu? Nó có thể phải làm bất cứ điều gì mà lmerkhông cho phép các corelllass tiêu cực hoặc một cái gì đó tương tự? Cho rằng nlme's glslmelàm trả lại kết quả chính xác, tuy nhiên, tôi tự hỏi như thế nào đây là khác nhau trong glslme? Có phải đó là tùy chọn correlation=corCompSymm(form=~1|id)khiến họ ước tính trực tiếp mối tương quan nội hàm, có thể là dương hoặc âm, trong khi lmerước tính thành phần phương sai, không thể âm (và cuối cùng được ước tính bằng 0 trong trường hợp này)?


Không gì set_sum_contrasts()làm gì?
smillig

Đó là từ thư viện afex - nó thiết lập mã hóa hiệu ứng bằng cách sử dụng các tùy chọn (contrasts = c ("contr.sum", "contr.poly"))
Tom Wenseleers

1
Giả thuyết trong câu cuối cùng của bạn là chính xác.
Ben Bolker

Hà cảm ơn rất nhiều vì điều đó! Tôi nhớ bạn đã từng đề cập rằng có một phiên bản phát triển vượt trội của lme4 'flexLambda' có sẵn trên github cho phép các cấu trúc tương quan loại corCompSymm. Vẫn còn như vậy, và liệu phiên bản đó có thể trả lại kết quả lme bằng bất kỳ cơ hội nào không?
Tom Wenseleers

Câu trả lời:


14

Như Ben Bolker đã đề cập trong các bình luận, vấn đề là như bạn nghi ngờ: lmer()Mô hình bị tăng gấp ba do cố gắng ước tính mô hình thành phần phương sai, với ước tính thành phần phương sai bị ràng buộc là không âm. Những gì tôi sẽ cố gắng làm là cung cấp một sự hiểu biết hơi trực quan về dữ liệu của bạn dẫn đến điều này và lý do tại sao điều này gây ra vấn đề cho các mô hình thành phần phương sai.

Đây là một âm mưu của bộ dữ liệu của bạn. Các chấm trắng là những quan sát thực tế và các chấm đen là chủ đề có nghĩa.

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

Để làm cho mọi thứ đơn giản hơn, nhưng không thay đổi tinh thần của vấn đề, tôi sẽ trừ đi các hiệu ứng cố định (nghĩa là, FITNESSTESThiệu ứng, cũng như ý nghĩa lớn) và xử lý dữ liệu còn lại dưới dạng vấn đề hiệu ứng ngẫu nhiên một chiều . Vì vậy, đây là những gì bộ dữ liệu mới trông giống như:

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

Nhìn kỹ vào các mẫu trong cốt truyện này. Hãy suy nghĩ về cách các quan sát được thực hiện từ cùng một đối tượng khác với các quan sát được thực hiện từ các đối tượng khác nhau. Cụ thể, chú ý mẫu sau: Vì một trong những quan sát cho một chủ đề cao hơn (hoặc thấp hơn) ở trên (hoặc bên dưới) đối tượng có nghĩa, các quan sát khác từ chủ đề đó có xu hướng ở phía đối diện của chủ thể. Và quan sát càng xa từ ý nghĩa của chủ thể, thì các quan sát khác càng có xu hướng từ chủ thể ở phía đối diện. Điều này cho thấy một mối tương quan giữa các lớp tiêu cực. Trung bình, hai quan sát được lấy từ cùng một chủ đề thực sự có xu hướng ít giống nhau hơn so với hai quan sát được rút ra hoàn toàn ngẫu nhiên từ bộ dữ liệu.

Một cách khác để suy nghĩ về mô hình này là về độ lớn tương đối của phương sai giữa chủ thể và bên trong chủ thể. Dường như có sự khác biệt lớn hơn trong chủ đề so với phương sai giữa các chủ thể. Tất nhiên, chúng tôi hy vọng điều này sẽ xảy ra ở một mức độ nào đó. Xét cho cùng, phương sai bên trong chủ đề dựa trên sự thay đổi của các điểm dữ liệu riêng lẻ, trong khi phương sai giữa chủ thể dựa trên sự thay đổi về phương tiện của các điểm dữ liệu riêng lẻ (nghĩa là chủ thể có nghĩa) và chúng tôi biết rằng phương sai của một giá trị trung bình sẽ có xu hướng giảm khi số lượng vật được tính trung bình tăng. Nhưng trong bộ dữ liệu này, sự khác biệt khá nổi bật: Có cáchnhiều hơn trong chủ đề hơn là giữa các chủ đề khác nhau. Trên thực tế, sự khác biệt này chính xác là lý do tại sao một mối tương quan nội bộ tiêu cực xuất hiện.

Được rồi, đây là vấn đề. Mô hình thành phần phương sai giả định rằng mỗi điểm dữ liệu là tổng của hiệu ứng chủ thể và lỗi: , trong đó là hiệu ứng của chủ đề thứ . Vì vậy, hãy suy nghĩ về những gì sẽ xảy ra nếu thực sự có 0 phương sai trong các hiệu ứng chủ đề - nói cách khác, nếu thành phần phương sai giữa các chủ thể thực sự là 0. Cho một tập dữ liệu thực tế được tạo ra trong mô hình này, nếu chúng ta tính toán mẫu có nghĩa là đối với dữ liệu được quan sát của từng đối tượng, các phương tiện mẫu đó vẫn có một số phương sai khác không, nhưng chúng chỉ phản ánh phương sai lỗi và không có bất kỳ phương sai chủ đề "đúng" nào (vì chúng tôi đã giả sử là không có). u j jyij=uj+eijujj

Vì vậy, làm thế nào biến chúng ta sẽ mong đợi những chủ đề này có nghĩa là? Chà, về cơ bản, mỗi hiệu ứng chủ thể ước tính là một giá trị trung bình và chúng ta biết công thức cho phương sai của một giá trị trung bình: , trong đó là số lượng những thứ được tính trung bình. Bây giờ chúng ta hãy áp dụng công thức này để dữ liệu của bạn và xem có bao nhiêu sai chúng ta sẽ mong đợi để xem trong những tác động đối tượng ước tính nếu thực sự giữa các đối tượng thành phần sai là chính xác 0.nvar(X¯)=var(Xi)/nn

Phương sai của chủ thể bên trong hoạt động là và mỗi hiệu ứng chủ thể được tính là giá trị trung bình của 3 quan sát. Vì vậy, độ lệch chuẩn dự kiến ​​trong đối tượng có nghĩa là - giả sử phương sai giữa chủ thể thực là 0 - có nghĩa là khoảng . Bây giờ so sánh điều này với độ lệch chuẩn trong chủ đề có nghĩa là chúng ta thực sự quan sát thấy: ! Biến thể quan sát được ít hơn đáng kể so với biến thể dự kiến ​​khi chúng tôi giả sử 0 giữa phương sai chủ thể. Đối với mô hình thành phần phương sai, cách duy nhất mà biến thể quan sát được có thể được dự kiến ​​là thấp như những gì chúng ta thực sự quan sát là nếu phương sai giữa chủ thể thực sự có phần âm tính10.8 4.334810.84.3. Và đó chính là vấn đề. Dữ liệu ngụ ý rằng bằng cách nào đó có một thành phần phương sai âm, nhưng phần mềm (một cách hợp lý) sẽ không cho phép ước tính tiêu cực của các thành phần phương sai, vì thực tế một phương sai có thể không bao giờ âm. Các mô hình khác mà bạn phù hợp sẽ tránh được vấn đề này bằng cách ước tính trực tiếp mối tương quan giữa các lớp thay vì giả định một mô hình thành phần phương sai đơn giản.

Nếu bạn muốn xem làm thế nào bạn thực sự có thể có được ước tính thành phần phương sai âm được ngụ ý bởi tập dữ liệu của mình, bạn có thể sử dụng quy trình mà tôi minh họa (có Rmã đi kèm ) trong câu trả lời gần đây khác của tôi . Thủ tục đó không hoàn toàn tầm thường, nhưng cũng không quá khó (đối với một thiết kế cân bằng như thế này).


Xin chào Jake cảm ơn rất nhiều vì lời giải thích rất rõ ràng này! Nhưng tôi ổn nếu tôi sử dụng mô hình lme với đối xứng hợp chất (hoặc cấu trúc tương quan tổng quát), phải không? Và Rho trong mô hình lme đó, -0.2156615, sẽ là mối tương quan nội hàm tiêu cực, phải không?
Tom Wenseleers

@TomWenseleers Yep (cho cả hai)
Jake Westfall

1
+1. Đó là một câu trả lời sư phạm xuất sắc, và thật đáng tiếc vì nó có quá ít sự ủng hộ.
amip
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.