Bagaimana cara melakukan tes post-hoc pada model lmer?

18

Ini adalah bingkai data saya:

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)

Lalu saya menjalankan model efek linear-campuran untuk membandingkan perbedaan 3 Grup pada "Nilai", di mana "Subjek" adalah faktor acak:

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

Hasilnya adalah:

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    

Namun, bagaimana cara membandingkan Group2 dengan Group3? Apa konvensi dalam artikel akademik?

Ping Tang
sumber

Jawaban:

16

Anda bisa menggunakan emmeans::emmeans()atau lmerTest::difflsmeans(), atau multcomp::glht().

Saya lebih suka emmeans(sebelumnya lsmeans).

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

Note difflsmeanstidak dapat mengoreksi beberapa perbandingan, dan menggunakan metode Satterthwaite untuk menghitung derajat kebebasan sebagai default, bukan metode Kenward-Roger yang digunakan oleh para emmeans.

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

The multcomp::glht()Metode ini dijelaskan dalam jawaban lain untuk pertanyaan ini, dengan Hack-R.

Anda juga bisa mendapatkan nilai-p ANOVA dengan memuat lmerTestdan kemudian menggunakan anova.

library(lmerTest)
anova(model)

Supaya jelas, Anda bermaksud agar Nilai dinilai tiga kali untuk setiap mata pelajaran, bukan? Sepertinya Grup berada di dalam subyek, bukan di antara subyek.

Kayle Sawyer
sumber
1
Saya hanya ingin menambahkan respons Kayle Sawyer bahwa paket lsmeans sedang tidak digunakan lagi karena emmeans .
Downhiller
Catatan jika Anda menentukan pustaka, Anda harus menggunakan lmerTest :: lmer (), bukan lme4 :: lmer () untuk anova () untuk menunjukkan nilai-p.
Kayle Sawyer
11

Setelah Anda cocok lmer model Anda, Anda dapat melakukan ANOVA, MANOVA, dan beberapa prosedur perbandingan pada objek model, seperti ini:

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)

Adapun konvensi dalam makalah akademik, itu akan sangat bervariasi berdasarkan bidang, jurnal, dan materi pelajaran tertentu. Jadi untuk kasus itu, tinjau saja artikel terkait dan lihat apa yang mereka lakukan.

Hack-R
sumber
Terima kasih. Tetapi penyesuaian mana yang benar-benar digunakan? Tukey atau holm? Mengapa keduanya muncul dalam tes post-hoc?
Ping Tang
@ PingTang Sama-sama. Ini koreksi Bonferroni-Holm dari perbandingan semua pasangan. Itu hanya satu pilihan, tentu saja. Anda juga bisa melakukannya summary(glht(model, linfct = mcp(Group = "Tukey"))). Jika Anda ingin melihat deskripsi akademik / statistik lengkap dari berbagai tes yang dapat dilakukan, periksa referensi di ?glhtdan multicomplebih umum. Saya pikir Hsu 1996 akan menjadi yang utama.
Hack-R
3
@ Ping, mcpfungsi, Group = Tukeyhanya berarti untuk membandingkan semua kelompok berpasangan dalam variabel "Grup". Itu tidak berarti penyesuaian Tukey.
Sal Mangiafico