(Đâ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:
Ở đâ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 . Class1
xuất hiện trong School1
, School2
và School3
. Tuy nhiên, nếu các dữ liệu được lồng sau đó Class1
trong School1
là không cùng một đơn vị đo lường như Class1
trong School2
và School3
. Nếu chúng giống nhau, thì chúng ta sẽ có tình huống nà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 lme4
bằng cách sử dụng:
(1|School/Class)
hoặc tương đương (1|School) + (1|Class:School)
và
(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 và 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:
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ì m0
là một mô hình lồng nhau trong khi m1
là 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 và 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 lme4
với:
(1|group1) + (1|group2)