Bagaimana seseorang dapat melakukan tes hipotesis MCMC pada model regresi efek campuran dengan lereng acak?

12

Bahasa perpustakaan R menyediakan metode (pvals.fnc) untuk melakukan pengujian signifikansi MCMC dari efek tetap dalam model regresi efek campuran yang cocok menggunakan lmer. Namun, pvals.fnc memberikan kesalahan ketika model lmer menyertakan lereng acak.

Apakah ada cara untuk melakukan uji hipotesis MCMC dari model-model seperti itu?
Jika ya, bagaimana caranya? (Untuk diterima jawaban harus memiliki contoh yang berhasil di R) Jika tidak, apakah ada alasan konseptual / perhitungan mengapa tidak ada cara?

Pertanyaan ini mungkin terkait dengan yang satu ini tetapi saya tidak mengerti konten di sana cukup baik untuk memastikan.

Sunting 1 : Bukti konsep yang menunjukkan bahwa pvals.fnc () masih melakukan 'sesuatu' dengan model lme4, tetapi tidak melakukan apa pun dengan model kemiringan acak.

library(lme4)
library(languageR)
#the example from pvals.fnc
data(primingHeid) 
# remove extreme outliers
primingHeid = primingHeid[primingHeid$RT < 7.1,]
# fit mixed-effects model
primingHeid.lmer = lmer(RT ~ RTtoPrime * ResponseToPrime + Condition + (1|Subject) + (1|Word), data = primingHeid)
mcmc = pvals.fnc(primingHeid.lmer, nsim=10000, withMCMC=TRUE)
#Subjects are in both conditions...
table(primingHeid$Subject,primingHeid$Condition)
#So I can fit a model that has a random slope of condition by participant
primingHeid.lmer.rs = lmer(RT ~ RTtoPrime * ResponseToPrime + Condition + (1+Condition|Subject) + (1|Word), data = primingHeid)
#However pvals.fnc fails here...
mcmc.rs = pvals.fnc(primingHeid.lmer.rs)

Dikatakan: Kesalahan dalam pvals.fnc (primingHeid.lmer.rs): MCMC sampling belum diterapkan di lme4_0.999375 untuk model dengan parameter korelasi acak

Pertanyaan tambahan: Apakah pvals.fnc berfungsi seperti yang diharapkan untuk model intersep acak? Haruskah hasilnya dipercaya?

russellpierce
sumber
3
(1) Saya terkejut bahwa pances.fnc masih berfungsi sama sekali; Saya pikir mcmcsamp (yang bergantung pada pances.fnc) telah non-fungsional di lme4 cukup lama. Apa versi lme4 yang Anda gunakan? (2) Tidak ada alasan konseptual mengapa memiliki kemiringan acak harus memecah apa pun yang dilakukan seseorang untuk mendapatkan tes signifikansi (3) Menggabungkan pengujian signifikansi dengan MCMC sedikit tidak koheren, secara statistik, meskipun saya memahami keinginan untuk melakukannya (mendapatkan kepercayaan diri) interval lebih dapat didukung) (4) satu-satunya hubungan antara tanya jawab ini adalah 'MCMC' (yaitu tidak ada, praktis)
Ben Bolker
Versi lme4 yang saya gunakan tergantung pada komputer tempat saya duduk. Konsol ini memiliki lme4_0.999375-32, tetapi saya jarang menggunakan yang ini untuk analisis. Saya perhatikan beberapa bulan yang lalu bahwa pvals.fnc () merobek hasil lme4 setelah analisis - saya membangun pekerjaan untuk itu pada saat itu, tetapi tampaknya tidak menjadi masalah lagi. Saya harus mengajukan pertanyaan lain pada poin ke-3 Anda dalam waktu dekat.
russellpierce

Jawaban:

4

Sepertinya pesan kesalahan Anda bukan tentang memvariasikan lereng, ini tentang efek acak berkorelasi. Anda bisa cocok dengan yang tidak berkorelasi juga; yaitu, model efek campuran dengan efek acak independen:

Linear mixed model fit by REML
Formula: Reaction ~ Days + (1 | Subject) + (0 + Days | Subject)
Data: sleepstudy

dari http://www.stat.wisc.edu/~bates/IMPS2008/lme4D.pdf

Patrick McCann
sumber
8

Inilah (setidaknya sebagian besar) solusi dengan MCMCglmm.

Pertama, pas dengan model intercept-variance-only yang setara dengan MCMCglmm:

library(MCMCglmm)
primingHeid.MCMCglmm = MCMCglmm(fixed=RT ~ RTtoPrime * ResponseToPrime + Condition, 
                                random=~Subject+Word, data = primingHeid)

Membandingkan antara MCMCglmmdan lmer, pertama mengambil versi saya yang diretas arm::coefplot:

source(url("http://www.math.mcmaster.ca/bolker/R/misc/coefplot_new.R"))
  ## combine estimates of fixed effects and variance components
pp  <- as.mcmc(with(primingHeid.MCMCglmm, cbind(Sol, VCV)))
  ## extract coefficient table
cc1 <- coeftab(primingHeid.MCMCglmm,ptype=c("fixef", "vcov"))
  ## strip fixed/vcov indicators to make names match with lmer output
rownames(cc1) <- gsub("(Sol|VCV).", "", rownames(cc1))
  ## fixed effects -- v. similar
coefplot(list(cc1[1:5,], primingHeid.lmer))
  ## variance components -- quite different.  Worth further exploration?
coefplot(list(cc1[6:8,], coeftab(primingHeid.lmer, ptype="vcov")),
         xlim=c(0,0.16), cex.pts=1.5)

Sekarang coba dengan lereng acak:

primingHeid.rs.MCMCglmm = MCMCglmm(fixed=RT ~ RTtoPrime * ResponseToPrime + Condition,
                                   random=~Subject+Subject:Condition+Word, 
                                   data = primingHeid)        
summary(primingHeid.rs.MCMCglmm)

Ini memang memberikan semacam "nilai MCMC" ... Anda harus menjelajah sendiri dan melihat apakah semuanya masuk akal ...

Ben Bolker
sumber
Terima kasih banyak, Ben. Sepertinya ini akan mengarahkan saya ke arah yang benar. Saya hanya perlu meluangkan waktu membaca bantuan dan artikel terkait untuk MCMCglmm untuk melihat apakah saya dapat membungkus kepala saya dengan apa yang terjadi.
russellpierce
1
Apakah model lereng acak dalam kasus ini memiliki korelasi antara kemiringan acak dan intersep acak, atau dalam kerangka kerja ini gagasan seperti itu tidak masuk akal?
russellpierce
Saya mengubah kode Anda di sini untuk membuatnya lebih mudah dibaca, @Ben; jika Anda tidak menyukainya, jangan ragu untuk mengembalikannya dengan permintaan maaf saya.
gung - Reinstate Monica