Come si può fare un test di ipotesi MCMC su un modello di regressione ad effetti misti con pendenze casuali?


12

La libreria languageR fornisce un metodo (pvals.fnc) per eseguire test di significatività MCMC degli effetti fissi in un modello di regressione ad effetti misti adattandosi usando lmer. Tuttavia, pvals.fnc genera un errore quando il modello lmer include pendenze casuali.

C'è un modo per fare un test di ipotesi MCMC di tali modelli?
Se é cosi, come? (Per essere accettata, una risposta dovrebbe avere un esempio funzionante in R) In caso contrario, c'è un motivo concettuale / di calcolo perché non c'è modo?

Questa domanda potrebbe essere correlata a questa, ma non ho capito bene il contenuto abbastanza per esserne certo.

Modifica 1 : una dimostrazione del concetto che mostra che pvals.fnc () fa ancora "qualcosa" con i modelli lme4, ma che non fa nulla con i modelli a pendenza casuale.

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)

Dice: Errore in pvals.fnc (primingHeid.lmer.rs): il campionamento MCMC non è ancora implementato in lme4_0.999375 per i modelli con parametri di correlazione casuali

Domanda aggiuntiva: pvals.fnc funziona come previsto per il modello di intercettazione casuale? Gli output dovrebbero essere attendibili?


3
(1) Sono sorpreso che pvals.fnc funzioni ancora; Ho pensato che mcmcsamp (su cui si basa pvals.fnc) non funzionasse da un po 'di tempo in lme4. Quale versione di lme4 stai usando? (2) Non esiste alcun motivo concettuale per cui avere pendenze casuali dovrebbe rompere qualsiasi cosa si stia facendo per ottenere un test di significatività (3) La combinazione di test di significatività con MCMC è un po 'incoerente, statisticamente, anche se capisco l'impulso di farlo (ottenere sicurezza intervalli è più sopportabile) (4) l'unica relazione tra questa Q e l'altra è 'MCMC' (cioè praticamente nessuno)
Ben Bolker,

La versione di lme4 che uso dipende dal computer in cui mi trovo. Questa console ha lme4_0.999375-32, ma raramente la utilizzo per analisi. Ho notato diversi mesi fa che pvals.fnc () stava lacerando i risultati di lme4 dopo l'analisi - al momento ho creato un problema per farlo, ma non sembra più essere un problema. Dovrò fare un'altra domanda sul tuo terzo punto nel prossimo futuro.
Russellpierce,

Risposte:


4

Sembra che il tuo messaggio di errore non riguardi le pendenze variabili, si tratta di effetti casuali correlati. Puoi adattarti anche ai non correlati; cioè un modello a effetti misti con effetti casuali indipendenti:

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

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


8

Ecco (almeno la maggior parte di) una soluzione con MCMCglmm.

Innanzitutto si adatta il modello solo intercettazione-varianza equivalente con MCMCglmm:

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

Il confronto si adatta tra MCMCglmme lmer, prima recuperando la mia versione compromessa di 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)

Ora provalo con pendenze casuali:

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

Questo dà una sorta di "valori p MCMC" ... dovrai esplorare da solo e vedere se tutto ha senso ...


Grazie mille Ben. Sembra che mi indicherà la giusta direzione. Devo solo passare un po 'di tempo a leggere l'aiuto e gli articoli correlati per MCMCglmm per vedere se riesco a capire cosa sta succedendo.
Russellpierce,

1
Il modello di pendenze casuali in questo caso ha una correlazione tra la pendenza casuale e l'intercettazione casuale, o in questo quadro tale idea è assurda?
Russellpierce,

Ho modificato il tuo codice qui per rendere più facile la lettura, @Ben; se non ti piace, sentiti libero di tornare indietro con le mie scuse.
gung - Ripristina Monica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.