¿Cómo se puede hacer una prueba de hipótesis MCMC en un modelo de regresión de efectos mixtos con pendientes aleatorias?

12

La biblioteca languageR proporciona un método (pvals.fnc) para hacer pruebas de significancia MCMC de los efectos fijos en un modelo de regresión de efectos mixtos usando lmer. Sin embargo, pvals.fnc da un error cuando el modelo lmer incluye pendientes aleatorias.

¿Hay alguna manera de hacer una prueba de hipótesis MCMC de tales modelos?
¿Si es así, cómo? (Para ser aceptado, una respuesta debe tener un ejemplo trabajado en R) Si no, ¿hay una razón conceptual / de cálculo por la que no hay forma?

Esta pregunta podría estar relacionada con esta, pero no entendí el contenido allí lo suficientemente bien como para estar seguro.

Edición 1 : Una prueba de concepto que muestra que pvals.fnc () todavía hace 'algo' con los modelos lme4, pero que no hace nada con los modelos de pendiente aleatoria.

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: Error en pvals.fnc (primingHeid.lmer.rs): el muestreo MCMC aún no está implementado en lme4_0.999375 para modelos con parámetros de correlación aleatoria

Pregunta adicional: ¿Funciona pvals.fnc como se esperaba para el modelo de intercepción aleatoria? ¿Deben ser confiables las salidas?

russellpierce
fuente
3
(1) Me sorprende que pvals.fnc todavía funcione en absoluto; Pensé que mcmcsamp (en el que se basa pvals.fnc) no había funcionado en lme4 durante bastante tiempo. ¿Qué versión de lme4 estás usando? (2) No hay una razón conceptual por la cual tener pendientes aleatorias deba romper lo que sea que uno esté haciendo para obtener una prueba de significación (3) Combinar las pruebas de significación con MCMC es un poco incoherente, estadísticamente, aunque entiendo la necesidad de hacerlo (obtener confianza intervalos es más compatible) (4) la única relación entre este Q y el otro es 'MCMC' (es decir, ninguno, prácticamente)
Ben Bolker
La versión de lme4 que uso depende de la computadora en la que estoy sentado. Esta consola tiene lme4_0.999375-32, pero rara vez uso esta para el análisis. Me di cuenta hace varios meses que pvals.fnc () estaba desgarrando los resultados de lme4 después del análisis: construí una solución temporal en ese momento, pero ya no parece ser un problema. Tendré que hacer otra pregunta sobre su tercer punto en el futuro cercano.
russellpierce

Respuestas:

4

Parece que su mensaje de error no se trata de pendientes diferentes, se trata de efectos aleatorios correlacionados. También puede adaptarse a lo no correlacionado; es decir, un modelo de efectos mixtos con efectos aleatorios independientes:

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

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

Patrick McCann
fuente
8

Aquí hay (al menos la mayoría de) una solución con MCMCglmm.

Primero ajuste el modelo equivalente de solo intercepción de varianza con MCMCglmm:

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

Comparando ajustes entre MCMCglmmy lmer, primero recuperando mi versión pirateada de 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)

Ahora pruébalo con pendientes aleatorias:

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

Esto proporciona algún tipo de "valores p de MCMC" ... tendrá que explorar por sí mismo y ver si todo tiene sentido ...

Ben Bolker
fuente
Muchas gracias Ben. Parece que me indicará en la dirección correcta. Solo necesito pasar un tiempo leyendo la ayuda y los artículos relacionados para MCMCglmm para ver si puedo entender lo que está sucediendo.
russellpierce
1
¿El modelo de pendientes aleatorias en este caso tiene una correlación entre la pendiente aleatoria y la intercepción aleatoria, o en este marco es una idea sin sentido?
russellpierce
Ajusté su código aquí para que sea más fácil de leer, @Ben; si no te gusta, puedes retroceder con mis disculpas.
gung - Restablece a Monica