Model campuran beberapa perbandingan untuk interaksi antara prediktor kontinu dan kategoris

11

Saya ingin menggunakan lme4agar sesuai dengan regresi efek campuran dan multcompuntuk menghitung perbandingan berpasangan. Saya memiliki kumpulan data yang kompleks dengan beberapa prediktor kontinu dan kategoris, tetapi pertanyaan saya dapat ditunjukkan dengan menggunakan ChickWeightkumpulan data bawaan sebagai contoh:

m <- lmer(weight ~ Time * Diet + (1 | Chick), data=ChickWeight, REML=F)

Timekontinu dan Dietkategoris (4 level) dan ada beberapa Cewek per diet. Semua anak ayam mulai dengan berat yang sama, tetapi diet mereka (mungkin) memengaruhi laju pertumbuhannya, sehingga Dietintersepnya harus (kurang lebih) sama, tetapi lerengnya mungkin berbeda. Saya bisa mendapatkan perbandingan berpasangan untuk efek intersep Dietseperti ini:

summary(glht(m, linfct=mcp(Diet = "Tukey")))

dan, memang, mereka tidak berbeda secara signifikan, tetapi bagaimana saya bisa melakukan tes analog untuk Time:Dietefeknya? Menempatkan istilah interaksi saja mcpmenghasilkan kesalahan:

summary(glht(m, linfct=mcp('Time:Diet' = "Tukey")))
Error in summary(glht(m, linfct = mcp(`Time:Diet` = "Tukey"))) : 
  error in evaluating the argument 'object' in selecting a method for function
 'summary': Error in mcp2matrix(model, linfct = linfct) : 
Variable(s) Time:Diet have been specified in linfct but cannot be found in model’! 
Dan M.
sumber
Itu memiliki Time*Diet, yang hanya penyederhanaan Time + Diet + Time:Diet. Menggunakan anova(m)atau summary(m)mengonfirmasi bahwa istilah interaksi ada dalam model.
Dan M.

Jawaban:

8

Secara default, lmermemperlakukan level referensi dari prediktor kategorikal sebagai baseline dan memperkirakan parameter untuk level lainnya. Jadi Anda mendapatkan beberapa perbandingan berpasangan di output default dan Anda bisa mendapatkan yang lain dengan menggunakan releveluntuk menentukan level referensi baru dan memasang kembali model. Ini memiliki keuntungan dengan membiarkan Anda menggunakan perbandingan model atau MCMC untuk mendapatkan nilai-p, tetapi tidak mengoreksi beberapa perbandingan (meskipun Anda bisa menerapkan koreksi sendiri setelahnya).

Untuk menggunakannya multcomp, Anda perlu mendefinisikan matriks kontras. Setiap baris dalam matriks kontras mewakili bobot untuk efek yang Anda dapatkan dalam output model default, dimulai dengan Intercept. Jadi jika Anda menginginkan efek yang sudah termasuk dalam output dasar, Anda cukup meletakkan "1" di posisi yang sesuai dengan efek itu. Karena perkiraan parameter relatif terhadap tingkat referensi umum, Anda bisa mendapatkan perbandingan antara dua level lainnya dengan menetapkan bobot satu ke "-1" dan yang lainnya "1". Berikut ini cara kerjanya untuk Time:Dietistilah dalam ChickWeightcontoh:

contrast.matrix <- rbind("Time:Diet1 vs. Time:Diet2" =  c(0, 0, 0, 0, 0, 1, 0, 0),
                           "Time:Diet1 vs. Time:Diet3" =  c(0, 0, 0, 0, 0, 0, 1, 0),
                           "Time:Diet1 vs. Time:Diet4" =  c(0, 0, 0, 0, 0, 0, 0, 1),
                           "Time:Diet2 vs. Time:Diet3" =  c(0, 0, 0, 0, 0, -1, 1, 0),
                           "Time:Diet2 vs. Time:Diet4" =  c(0, 0, 0, 0, 0, -1, 0, 1),
                           "Time:Diet3 vs. Time:Diet4" =  c(0, 0, 0, 0, 0, 0, -1, 1))
summary(glht(m, contrast.matrix))

Caveat emptor: Pendekatan ini tampaknya menggunakan pendekatan normal untuk mendapatkan nilai-p, yang agak anti-konservatif, dan kemudian menerapkan beberapa koreksi untuk beberapa perbandingan. Hasilnya adalah metode ini memberi Anda akses mudah ke sebanyak perkiraan parameter berpasangan dan kesalahan standar seperti yang Anda inginkan, tetapi nilai-p mungkin atau mungkin tidak seperti yang Anda inginkan.

(Terima kasih kepada Scott Jackson dari r-ling-lang-L untuk bantuan dengan ini)

Dan M.
sumber