Hiệu ứng ngẫu nhiên giao nhau và lồng nhau: chúng khác nhau như thế nào và chúng được chỉ định chính xác trong lme4 như thế nào?


88

Đây là cách tôi đã hiểu các hiệu ứng ngẫu nhiên lồng nhau và chéo:

Hiệu ứng ngẫu nhiên lồng nhau xảy ra khi một yếu tố cấp thấp hơn chỉ xuất hiện trong một cấp độ cụ thể của một yếu tố cấp trên.

  • Ví dụ, học sinh trong các lớp học tại một thời điểm cố định.
  • Trong lme4tôi nghĩ rằng chúng tôi đại diện cho các hiệu ứng ngẫu nhiên cho dữ liệu lồng nhau theo một trong hai cách tương đương:

    (1|class/pupil)  # or  
    (1|class) + (1|class:pupil)
    

Hiệu ứng ngẫu nhiên chéo có nghĩa là một yếu tố nhất định xuất hiện ở nhiều cấp độ của yếu tố cấp trên.

  • Ví dụ, có những học sinh trong các lớp được đo trong nhiều năm.
  • Trong lme4, chúng tôi sẽ viết:

    (1|class) + (1|pupil)

Tuy nhiên, khi tôi đang xem một tập dữ liệu lồng nhau cụ thể, tôi nhận thấy rằng cả hai công thức mô hình đều cho kết quả giống hệt nhau (mã và đầu ra bên dưới). Tuy nhiên tôi đã thấy các bộ dữ liệu khác trong đó hai công thức tạo ra kết quả khác nhau. Chuyện gì đang xảy ra ở đây vậy?

mydata <- read.csv("https://web.archive.org/web/20160624172041if_/http://www-personal.umich.edu/~bwest/classroom.csv")
# (the data is no longer at `http://www-personal.umich.edu/~bwest/classroom.csv`
# hence the link to web.archive.org)
# Crossed version: 
Linear mixed model fit by REML ['lmerMod']
Formula: mathgain ~ (1 | schoolid) + (1 | classid)
   Data: mydata

REML criterion at convergence: 11768.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.6441 -0.5984 -0.0336  0.5334  5.6335 

Random effects:
 Groups   Name        Variance Std.Dev.
 classid  (Intercept)   99.23   9.961  
 schoolid (Intercept)   77.49   8.803  
 Residual             1028.23  32.066  
Number of obs: 1190, groups:  classid, 312; schoolid, 107


# Nested version:
Formula: mathgain ~ (1 | schoolid/classid)

REML criterion at convergence: 11768.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.6441 -0.5984 -0.0336  0.5334  5.6335 

Random effects:
 Groups           Name        Variance Std.Dev.
 classid:schoolid (Intercept)   99.23   9.961  
 schoolid         (Intercept)   77.49   8.803  
 Residual                     1028.23  32.066  
Number of obs: 1190, groups:  classid:schoolid, 312; schoolid, 107

Câu trả lời:


148

(Đây là một câu trả lời khá dài, có một bản tóm tắt ở cuối)

Bạn không sai trong cách hiểu của bạn về những hiệu ứng ngẫu nhiên lồng nhau và chéo trong kịch bản mà bạn mô tả. Tuy nhiên, định nghĩa của bạn về các hiệu ứng ngẫu nhiên chéo là hơi hẹp. Một định nghĩa chung hơn về các hiệu ứng ngẫu nhiên chéo chỉ đơn giản là: không lồng nhau . Chúng tôi sẽ xem xét điều này ở cuối câu trả lời này, nhưng phần lớn câu trả lời sẽ tập trung vào kịch bản bạn trình bày, về các lớp học trong trường học.

Lưu ý đầu tiên rằng:

Nesting là một thuộc tính của dữ liệu, hay đúng hơn là thiết kế thử nghiệm, không phải mô hình.

Cũng thế,

Dữ liệu lồng nhau có thể được mã hóa theo ít nhất 2 cách khác nhau và đây là cốt lõi của vấn đề bạn tìm thấy.

Tập dữ liệu trong ví dụ của bạn khá lớn, vì vậy tôi sẽ sử dụng một ví dụ khác từ internet để giải thích các vấn đề. Nhưng trước tiên, hãy xem xét ví dụ đơn giản hóa quá mức sau đây:

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

Ở đây chúng tôi có các lớp học lồng nhau trong các trường học, đó là một kịch bản quen thuộc. Điểm quan trọng ở đây là, giữa mỗi trường, các lớp có cùng một định danh, mặc dù chúng khác biệt nếu chúng được lồng vào nhau . Class1xuất hiện trong School1, School2School3. Tuy nhiên, nếu các dữ liệu được lồng sau đó Class1trong School1không cùng một đơn vị đo lường như Class1trong School2School3. Nếu chúng giống nhau, thì chúng ta sẽ có tình huống này:

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

có nghĩa là mỗi lớp thuộc về mỗi trường. Cái trước là một thiết kế lồng nhau, và cái sau là một thiết kế chéo (một số cũng có thể gọi nó là nhiều thành viên) và chúng tôi sẽ hình thành những thứ này lme4bằng cách sử dụng:

(1|School/Class) hoặc tương đương (1|School) + (1|Class:School)

(1|School) + (1|Class)

tương ứng. Do sự không rõ ràng về việc có lồng nhau hay xen kẽ các hiệu ứng ngẫu nhiên hay không, điều rất quan trọng là chỉ định mô hình chính xác vì các mô hình này sẽ tạo ra các kết quả khác nhau, như chúng tôi sẽ trình bày dưới đây. Hơn nữa, không thể biết, chỉ bằng cách kiểm tra dữ liệu, liệu chúng ta có các hiệu ứng ngẫu nhiên lồng nhau hoặc vượt qua. Điều này chỉ có thể được xác định với kiến ​​thức về dữ liệu thiết kế thử nghiệm.

Nhưng trước tiên chúng ta hãy xem xét một trường hợp trong đó biến Class được mã hóa duy nhất giữa các trường:

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

Không còn bất kỳ sự mơ hồ nào liên quan đến việc làm tổ hoặc lai. Việc làm tổ là rõ ràng. Bây giờ chúng ta thấy điều này với một ví dụ trong R, nơi chúng tôi có 6 trường (nhãn I- VI) và 4 lớp trong mỗi trường (dán nhãn ađể d):

> dt <- read.table("http://bayes.acs.unt.edu:8083/BayesContent/class/Jon/R_SC/Module9/lmm.data.txt",
                   header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
> # data was previously publicly available from
> # http://researchsupport.unt.edu/class/Jon/R_SC/Module9/lmm.data.txt
> # but the link is now broken
> xtabs(~ school + class, dt)

        class
school  a  b  c  d
   I   50 50 50 50
   II  50 50 50 50
   III 50 50 50 50
   IV  50 50 50 50
   V   50 50 50 50
   VI  50 50 50 50

Chúng ta có thể thấy từ bảng chéo này rằng mọi ID lớp xuất hiện trong mỗi trường, đáp ứng định nghĩa của bạn về các hiệu ứng ngẫu nhiên chéo (trong trường hợp này chúng ta có đầy đủ , trái ngược với các hiệu ứng ngẫu nhiên một phần , bởi vì mỗi lớp xảy ra ở mỗi trường). Vì vậy, đây là tình huống tương tự mà chúng ta đã có trong hình đầu tiên ở trên. Tuy nhiên, nếu dữ liệu thực sự được lồng và không được giao nhau, thì chúng ta cần nói rõ ràng lme4:

> m0 <- lmer(extro ~ open + agree + social + (1 | school/class), data = dt)
> summary(m0)

Random effects:
 Groups       Name        Variance Std.Dev.
 class:school (Intercept)  8.2043  2.8643  
 school       (Intercept) 93.8421  9.6872  
 Residual                  0.9684  0.9841  
Number of obs: 1200, groups:  class:school, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117909  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

> m1 <- lmer(extro ~ open + agree + social + (1 | school) + (1 |class), data = dt)
summary(m1)

Random effects:
 Groups   Name        Variance Std.Dev.
 school   (Intercept) 95.887   9.792   
 class    (Intercept)  5.790   2.406   
 Residual              2.787   1.669   
Number of obs: 1200, groups:  school, 6; class, 4

Fixed effects:
             Estimate Std. Error t value
(Intercept) 60.198841   4.212974  14.289
open         0.010834   0.008349   1.298
agree       -0.005420   0.009605  -0.564
social      -0.001762   0.003107  -0.567

Như mong đợi, kết quả khác nhau vì m0là một mô hình lồng nhau trong khi m1là một mô hình chéo.

Bây giờ, nếu chúng tôi giới thiệu một biến mới cho mã định danh lớp:

> dt$classID <- paste(dt$school, dt$class, sep=".")
> xtabs(~ school + classID, dt)

      classID
school I.a I.b I.c I.d II.a II.b II.c II.d III.a III.b III.c III.d IV.a IV.b
   I    50  50  50  50    0    0    0    0     0     0     0     0    0    0
   II    0   0   0   0   50   50   50   50     0     0     0     0    0    0
   III   0   0   0   0    0    0    0    0    50    50    50    50    0    0
   IV    0   0   0   0    0    0    0    0     0     0     0     0   50   50
   V     0   0   0   0    0    0    0    0     0     0     0     0    0    0
   VI    0   0   0   0    0    0    0    0     0     0     0     0    0    0

      classID
school IV.c IV.d V.a V.b V.c V.d VI.a VI.b VI.c VI.d
   I      0    0   0   0   0   0    0    0    0    0
   II     0    0   0   0   0   0    0    0    0    0
   III    0    0   0   0   0   0    0    0    0    0
   IV    50   50   0   0   0   0    0    0    0    0
   V      0    0  50  50  50  50    0    0    0    0
   VI     0    0   0   0   0   0   50   50   50   50

Việc lập bảng chéo cho thấy rằng mỗi cấp độ lớp chỉ xảy ra trong một cấp học, theo định nghĩa của bạn về việc lồng nhau. Đây cũng là trường hợp với dữ liệu của bạn, tuy nhiên rất khó để hiển thị điều đó với dữ liệu của bạn vì nó rất thưa thớt. Cả hai công thức mô hình bây giờ sẽ tạo ra cùng một đầu ra (của mô hình lồng nhau m0ở trên):

> m2 <- lmer(extro ~ open + agree + social + (1 | school/classID), data = dt)
> summary(m2)

Random effects:
 Groups         Name        Variance Std.Dev.
 classID:school (Intercept)  8.2043  2.8643  
 school         (Intercept) 93.8419  9.6872  
 Residual                    0.9684  0.9841  
Number of obs: 1200, groups:  classID:school, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117882  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

> m3 <- lmer(extro ~ open + agree + social + (1 | school) + (1 |classID), data = dt)
> summary(m3)

Random effects:
 Groups   Name        Variance Std.Dev.
 classID  (Intercept)  8.2043  2.8643  
 school   (Intercept) 93.8419  9.6872  
 Residual              0.9684  0.9841  
Number of obs: 1200, groups:  classID, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117882  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

Điều đáng chú ý là các hiệu ứng ngẫu nhiên chéo không phải xảy ra trong cùng một yếu tố - ở trên, việc vượt qua hoàn toàn nằm trong trường học. Tuy nhiên, điều này không phải là trường hợp, và rất thường không phải vậy. Ví dụ, gắn bó với kịch bản trường học, nếu thay vì các lớp học trong trường chúng ta có học sinh trong trường và chúng ta cũng quan tâm đến các bác sĩ mà học sinh đã đăng ký, thì chúng ta cũng sẽ làm tổ cho học sinh trong các bác sĩ. Không có lồng nhau của các trường học trong các bác sĩ, hoặc ngược lại, vì vậy đây cũng là một ví dụ về các hiệu ứng ngẫu nhiên chéo, và chúng tôi nói rằng các trường học và bác sĩ bị vượt qua. Một kịch bản tương tự trong đó xảy ra các hiệu ứng ngẫu nhiên chéo là khi các quan sát riêng lẻ được lồng trong hai yếu tố đồng thời, thường xảy ra với cái gọi là các biện pháp lặp đi lặp lạidữ liệu chủ đề . Thông thường mỗi đối tượng được đo / kiểm tra nhiều lần với / trên các mặt hàng khác nhau và các mặt hàng tương tự được đo / kiểm tra bởi các đối tượng khác nhau. Do đó, các quan sát được nhóm trong các đối tượng trong các mục, nhưng các mục không được lồng trong các đối tượng hoặc ngược lại. Một lần nữa, chúng tôi nói rằng các đối tượng và các mặt hàng được vượt qua .

Tóm tắt: TL; DR

Sự khác biệt giữa các hiệu ứng ngẫu nhiên chéo và lồng nhau là các hiệu ứng ngẫu nhiên lồng nhau xảy ra khi một yếu tố (biến nhóm) chỉ xuất hiện trong một mức cụ thể của một yếu tố khác (biến nhóm). Điều này được chỉ định trong lme4:

(1|group1/group2)

nơi group2được lồng trong group1.

Hiệu ứng ngẫu nhiên chéo chỉ đơn giản là: không lồng nhau . Điều này có thể xảy ra với ba hoặc nhiều biến nhóm (yếu tố) trong đó một yếu tố được lồng riêng trong cả hai yếu tố khác hoặc với hai hoặc nhiều yếu tố trong đó các quan sát riêng lẻ được lồng riêng trong hai yếu tố. Chúng được chỉ định trong lme4với:

(1|group1) + (1|group2)


16
+6, đây là một câu trả lời thực sự tốt đẹp. Nhắc tôi sau vài ngày và tôi sẽ trả tiền cho nó.
gung

2
Giải thích tuyệt vời. Có một tên cho kiểu thiết kế thử nghiệm thứ ba có thể là nơi bạn tạo các cấp độ duy nhất cho hai yếu tố (có thể lồng nhau), vì vậy nếu tôi theo đoàn mua xe máy từ các đại lý khác nhau trong các thành phố khác nhau, về cơ bản tôi sẽ giao tiếp với độc giả như thế nào tạo ra một yếu tố cấp độ duy nhất interaction(city, dealer)?
AdamO

2
+6, đây là một câu trả lời tuyệt vời đến nỗi tôi cảm thấy mình có thể nạp tiền thưởng của @ gung với một người khác. Nhân tiện, tôi đang vật lộn với những gì có lẽ là một sự nhầm lẫn rất cơ bản ( đây là Q của tôi ) và sẽ đánh giá rất cao sự giúp đỡ của bạn.
amip

1
@RobertLong Dường như các thiết kế chia ô (các biện pháp lặp lại) thường được gọi là "lồng nhau" mặc dù chúng không thực sự được lồng theo câu trả lời này của bạn. Sự không nhất quán thuật ngữ này có lẽ đã góp phần vào sự nhầm lẫn của tôi trong câu hỏi liên kết. Sẽ là tuyệt vời nếu bạn có thể làm rõ nó, ở đây hoặc ở đó. Tôi thậm chí đang suy nghĩ liệu tôi có nên đăng một câu hỏi thuật ngữ riêng (không phải định hướng R) về những gì được lồng trong các ô tách.
amip

2
Cập nhật nhận xét trước của tôi. Tôi đã kiểm tra hai cuốn sách cũ và có thẩm quyền về thiết kế thử nghiệm: Maxwell và Delaney, 1990, Thiết kế thí nghiệm và phân tích dữ liệu, và Montgomery, 1976, Thiết kế và phân tích thí nghiệm. Cả hai đều nói về các thiết kế lồng nhau và cả hai đều nói về các biện pháp lặp đi lặp lại hay còn gọi là chia nhỏ; đều sử dụng từ "lồng" chỉ theo nghĩa bạn đang sử dụng nó và không bao giờ đề cập đến các biện pháp lặp đi lặp lại như lồng nhau. Vì vậy, tôi không nghĩ rằng có bất kỳ sự khác biệt về thuật ngữ.
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.