Làm thế nào để thực hiện kiểm tra sau hoc trên mô hình lmer?


18

Đây là khung dữ liệu của tôi:

Group   <- c("G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3")
Subject <- c("S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","S14","S15","S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","S14","S15","S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","S14","S15")
Value   <- c(9.832217741,13.62390117,13.19671612,14.68552076,9.26683366,11.67886655,14.65083473,12.20969772,11.58494621,13.58474896,12.49053635,10.28208078,12.21945867,12.58276212,15.42648969,9.466436017,11.46582655,10.78725485,10.66159358,10.86701127,12.97863424,12.85276916,8.672953949,10.44587257,13.62135205,13.64038394,12.45778874,8.655142642,10.65925259,13.18336949,11.96595556,13.5552118,11.8337142,14.01763101,11.37502161,14.14801305,13.21640866,9.141392359,11.65848845,14.20350364,14.1829714,11.26202565,11.98431285,13.77216009,11.57303893)

data <- data.frame(Group, Subject, Value)

Sau đó, tôi chạy mô hình hiệu ứng hỗn hợp tuyến tính để so sánh sự khác biệt của 3 Nhóm về "Giá trị", trong đó "Chủ đề" là yếu tố ngẫu nhiên:

library(lme4)
library(lmerTest)
model <- lmer (Value~Group + (1|Subject), data = data)
summary(model)

Kết quả là:

Fixed effects:
            Estimate Std. Error       df t value Pr(>|t|)    
(Intercept) 12.48771    0.42892 31.54000  29.114   <2e-16 ***
GroupG2     -1.12666    0.46702 28.00000  -2.412   0.0226 *  
GroupG3      0.03828    0.46702 28.00000   0.082   0.9353    

Tuy nhiên, làm thế nào để so sánh Group2 với Group3? Quy ước trong bài báo học thuật là gì?

Câu trả lời:


16

Bạn có thể sử dụng emmeans::emmeans()hoặc lmerTest::difflsmeans(), hoặc multcomp::glht().

Tôi thích emmeans(trước đâylsmeans ).

library(emmeans)
emmeans(model, list(pairwise ~ Group), adjust = "tukey")

Lưu ý difflsmeanskhông thể sửa cho nhiều phép so sánh và sử dụng phương pháp Satterthwaite để tính toán mức độ tự do làm mặc định thay vì phương pháp Kenward-Roger được sử dụng bởi emmeans.

library(lmerTest)
difflsmeans(model, test.effs = "Group")

Các multcomp::glht() phương pháp được mô tả trong các câu trả lời khác cho câu hỏi này, bởi Hack-R.

Ngoài ra, bạn có thể nhận các giá trị p ANOVA bằng cách tải lmerTestvà sau đó sử dụng anova.

library(lmerTest)
anova(model)

Để rõ ràng, bạn dự định giá trị sẽ được đánh giá ba lần cho mỗi đối tượng, phải không? Có vẻ như Nhóm nằm trong các môn học, không phải giữa các môn học.


1
Tôi chỉ muốn thêm vào câu trả lời của Kayle Sawyer rằng các lsmeans gói đang bị phản đối có lợi cho các emmeans .
Downhiller

Lưu ý nếu bạn chỉ định thư viện, bạn phải sử dụng lmerTest :: lmer (), không phải lme4 :: lmer () cho anova () để hiển thị các giá trị p.
Kayle Sawyer

11

Sau khi bạn phù hợp với lmermô hình của mình, bạn có thể thực hiện ANOVA, MANOVA và nhiều quy trình so sánh trên đối tượng mô hình, như sau:

library(multcomp)
summary(glht(model, linfct = mcp(Group = "Tukey")), test = adjusted("holm"))
   Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Tukey Contrasts


Fit: lmer(formula = Value ~ Group + (1 | Subject), data = data)

Linear Hypotheses:
             Estimate Std. Error z value Pr(>|z|)  
G2 - G1 == 0 -1.12666    0.46702  -2.412   0.0378 *
G3 - G1 == 0  0.03828    0.46702   0.082   0.9347  
G3 - G2 == 0  1.16495    0.46702   2.494   0.0378 *
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- holm method)

Đối với quy ước trong các bài báo học thuật, điều đó sẽ thay đổi rất nhiều theo lĩnh vực, tạp chí và các vấn đề cụ thể. Vì vậy, đối với trường hợp đó chỉ cần xem lại các bài viết liên quan và xem những gì họ làm.


Cảm ơn bạn. Nhưng điều chỉnh nào đã thực sự được sử dụng? Tukey hay holm? Tại sao cả hai xuất hiện trong bài kiểm tra sau hoc?
Ping Tang

@PingTang Bạn được chào đón. Đó là hiệu chỉnh Bonferroni-Holm của so sánh nhiều cặp. Đó chỉ là một lựa chọn, tất nhiên. Bạn cũng có thể làm summary(glht(model, linfct = mcp(Group = "Tukey"))). Nếu bạn muốn xem các mô tả học thuật / thống kê đầy đủ của các bài kiểm tra khác nhau có thể được thực hiện, hãy xem các tài liệu tham khảo ?glhtmulticompnói chung hơn. Tôi nghĩ Hsu 1996 sẽ là người chính.
Hack-R

3
@PingTang, mcphàm, Group = Tukeychỉ có nghĩa là so sánh tất cả các nhóm theo cặp trong biến "Nhóm". Nó không có nghĩa là một điều chỉnh Tukey.
Sal Mangiafico
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.