La ocurrencia no tan infrecuente cuando se trata de modelos mixtos máximos complejos (estimar todos los efectos aleatorios posibles para datos y modelo dados) es perfecta (+1 o -1) o una correlación casi perfecta entre algunos efectos aleatorios. Para el propósito de la discusión, observemos el siguiente modelo y resumen del modelo
Model: Y ~ X*Cond + (X*Cond|subj)
# Y = logit variable
# X = continuous variable
# Condition = values A and B, dummy coded; the design is repeated
# so all participants go through both Conditions
# subject = random effects for different subjects
Random effects:
Groups Name Variance Std.Dev. Corr
subject (Intercept) 0.85052 0.9222
X 0.08427 0.2903 -1.00
CondB 0.54367 0.7373 -0.37 0.37
X:CondB 0.14812 0.3849 0.26 -0.26 -0.56
Number of obs: 39401, groups: subject, 219
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.49686 0.06909 36.14 < 2e-16 ***
X -1.03854 0.03812 -27.24 < 2e-16 ***
CondB -0.19707 0.06382 -3.09 0.00202 **
X:CondB 0.22809 0.05356 4.26 2.06e-05 ***
La supuesta razón detrás de estas correlaciones perfectas es que hemos creado un modelo que es demasiado complejo para los datos que tenemos. El consejo común que se da en estas situaciones es (por ejemplo, Matuschek et al., 2017; papel ) para fijar los coeficientes sobreparamizados a 0, porque estos modelos degenerados tienden a disminuir la potencia. Si observamos un cambio marcado en los efectos fijos en un modelo reducido, deberíamos aceptarlo; Si no hay cambio, entonces no hay problema en aceptar el original.
Sin embargo, supongamos que no estamos interesados solo en los efectos fijos controlados por RE (efectos aleatorios), sino también en la estructura de RE. En el caso dado, sería teóricamente correcto asumir que Intercept
y la pendiente X
tiene una correlación negativa distinta de cero. Siguen varias preguntas:
¿Qué hacer en tales situaciones? ¿Deberíamos informar la correlación perfecta y decir que nuestros datos no son "suficientemente buenos" para estimar la correlación "real"? ¿O deberíamos informar el modelo de correlación 0? ¿O deberíamos intentar establecer alguna otra correlación a 0 con la esperanza de que la "importante" ya no sea perfecta? No creo que haya respuestas 100% correctas aquí, me gustaría escuchar sus opiniones.
¿Cómo escribir el código que fija la correlación de 2 efectos aleatorios específicos a 0, sin influir en las correlaciones entre otros parámetros?
fuente
blme
,MCMCglmm
,rstanarm
,brms
...)Respuestas:
Matrices de covarianza de efectos aleatorios singulares
Obtener una estimación de correlación de efecto aleatorio de +1 o -1 significa que el algoritmo de optimización alcanza "un límite": las correlaciones no pueden ser superiores a +1 o inferiores a -1. Incluso si no hay errores o advertencias de convergencia explícitos, esto potencialmente indica algunos problemas con la convergencia porque no esperamos que las correlaciones verdaderas se encuentren en el límite. Como dijiste, esto generalmente significa que no hay suficientes datos para estimar todos los parámetros de manera confiable. Matuschek y col. 2017 dice que en esta situación el poder puede verse comprometido.
Otra forma de alcanzar un límite es obtener una estimación de varianza de 0: ¿Por qué obtengo una varianza cero de un efecto aleatorio en mi modelo mixto, a pesar de alguna variación en los datos?
¿Entonces lo que hay que hacer?
Si no hay suficientes datos para estimar todos los parámetros de un modelo de manera confiable, entonces deberíamos considerar simplificar el modelo. Tomando su modelo de ejemplo
X*Cond + (X*Cond|subj)
, hay varias formas posibles de simplificarlo:Elimine uno de los efectos aleatorios, generalmente la correlación de orden superior:
Deshágase de todos los parámetros de correlación:
Actualización: como señala @Henrik, la
||
sintaxis solo eliminará las correlaciones si todas las variables a la izquierda son numéricas. SiCond
están involucradas variables categóricas (como ), uno debería usar su convenienteafex
paquete (o soluciones manuales engorrosas). Vea su respuesta para más detalles.Deshágase de algunos de los parámetros de correlación dividiendo el término en varios, por ejemplo:
lme4
lograr esto. Consulte la respuesta de @BenBolker en SO para obtener una demostración de cómo lograr esto a través de un pirateo inteligente.Al contrario de lo que dijiste, no creo que Matuschek et al. 2017 recomienda específicamente # 4. La esencia de Matuschek et al. 2017 y Bates et al. 2015 parece ser que uno comienza con el modelo máximo a la Barr et al. 2013 y luego disminuye la complejidad hasta que la matriz de covarianza sea de rango completo. (Además, a menudo recomendarían reducir aún más la complejidad para aumentar la potencia). Actualización: en contraste, Barr et al. recomendar reducir SOLAMENTE la complejidad si el modelo no converge; están dispuestos a tolerar matrices de covarianza singulares. Ver la respuesta de @ Henrik.
Si uno está de acuerdo con Bates / Matuschek, entonces creo que está bien probar diferentes formas de disminuir la complejidad para encontrar el que hace el trabajo mientras hace "el menor daño". Mirando mi lista anterior, la matriz de covarianza original tiene 10 parámetros; # 1 tiene 6 parámetros, # 2 tiene 4 parámetros, # 3 tiene 7 parámetros. Es imposible decir qué modelo eliminará las correlaciones perfectas sin ajustarlas.
Pero, ¿qué pasa si estás interesado en este parámetro?
La discusión anterior trata la matriz de covarianza de efectos aleatorios como un parámetro molesto. Plantea una pregunta interesante sobre qué hacer si está específicamente interesado en un parámetro de correlación que debe "abandonar" para obtener una solución significativa de rango completo.
Tenga en cuenta que fijar el parámetro de correlación en cero no necesariamente generará BLUP (
ranef
) que no están correlacionados; de hecho, es posible que ni siquiera se vean tan afectados (ver la respuesta de @ Placidia para una demostración ). Entonces, una opción sería mirar las correlaciones de los BLUP e informar eso.Otra opción, quizás menos atractiva, sería utilizar tratar
subject
como un efecto fijoY~X*cond*subj
, obtener las estimaciones para cada sujeto y calcular la correlación entre ellos. Esto es equivalente a ejecutarY~X*cond
regresiones separadas para cada sujeto por separado y obtener las estimaciones de correlación de ellos.Consulte también la sección sobre modelos singulares en las preguntas frecuentes sobre el modelo mixto de Ben Bolker:
fuente
(Machine||Worker)
lmer
estimaciones una varianza más que para(Machine|Worker)
. Entonces, lo quelmer
hace||
con los factores no se puede describir con 'esto solo elimina las correlaciones entre los factores, pero no entre los niveles de un factor categórico'. Se altera la estructura de efectos aleatorios de una manera algo raro (que se expande(Machine||Worker)
a(1|Worker) + (0+Machine|Worker)
, por lo tanto, la varianza adicional). Siéntase libre de cambiar mi edición. Mi punto principal es que en estas declaraciones la distinción entre covariables numéricas y categóricas necesita ser aclarada.machines2 <- subset(Machines, Machine %in% c("A", "B")); summary(lmer(score ~ Machine + (Machine || Worker), data=machines2))
. En general, no funciona con factores debido a esta expansión y la forma en que seR
abordan los factoresmodel.matrix
.ranef
valores para estudiar la correlación entre los efectos aleatorios. No estoy muy interesado en este tema, pero sé que generalmente no se recomienda trabajar con valores extraídosranef
, sino con correlaciones y variaciones estimadas. ¿Cuál es tu opinión sobre eso? Además, no sé cómo se podría explicar al revisor que la correlación en el modelo no se postuló, pero aún así calculamos la correlación de los valores extraídos. Eso no tiene sentidoEstoy de acuerdo con todo lo dicho en la respuesta de ameba que proporciona un gran resumen de la discusión actual sobre este tema. Intentaré agregar algunos puntos adicionales y, de lo contrario, me referiré al folleto de mi reciente curso de modelo mixto que también resume estos puntos.
La supresión de los parámetros de correlación (opciones 2 y 3 en la respuesta de ameba)
||
solo funciona para covariables numéricaslmer
y no para factores. Esto se discute en detalle con el código de Reinhold Kliegl .Sin embargo, mi
afex
paquete proporciona la funcionalidad para suprimir la correlación también entre los factores si el argumentoexpand_re = TRUE
en la llamada amixed()
(ver también la funciónlmer_alt()
). Esencialmente lo hace implementando el enfoque discutido por Reinhold Kliegl (es decir, transfigurando los factores en covariables numéricas y especificando la estructura de efectos aleatorios en esos).Un simple ejemplo:
Para aquellos que no lo saben
afex
, la funcionalidad principal para los modelos mixtos es proporcionar valores p para los efectos fijos, por ejemplo:Dale Barr de Barr et al. (2013) el documento es más cauteloso al recomendar reducir la estructura de efectos aleatorios que la presentada en la respuesta de ameba. En un reciente intercambio de Twitter escribió:
Por lo tanto, se recomienda precaución.
Como uno de los revisores, también puedo proporcionar una idea de por qué nosotros, Bates et al. (2015) el documento permaneció inédito. Yo y los otros dos revisores (que firmamos, pero permanecerán sin nombre aquí) tuvimos algunas críticas con el enfoque de PCA (parece no tener principios y no hay evidencia de que sea superior en términos de poder). Además, creo que los tres criticaron que el documento no se centró en la cuestión de cómo especificar la estructura de efectos aleatorios, sino que también intenta introducir GAMM. Por lo tanto, el artículo de Bates et al (2015) se transformó en Matuschek et al. (2017) documento que aborda el tema de la estructura de efectos aleatorios con simulaciones y Baayen et al. (2017) documento que presenta GAMM.
Mi revisión completa de Bates et al. borrador se puede encontrar aquí . IIRC, las otras revisiones tenían puntos principales similares.
fuente
lmer_alt
básicamente funciona exactamente iguallmer
(o inclusoglmer
) con la única diferencia de que permite la||
sintaxis. Así que no estoy seguro de por qué querrías evitarloafex
a toda costa. Incluso debería funcionar sin adjuntar (es decir,afex::lmer_alt(...)
).cbind
a los datos. Luego, el término de efectos aleatorios en la fórmula se reemplaza por uno nuevo en el que cada una de las columnas recién creadas se concatena con un +. Ver líneas 690 a 730 en github.com/singmann/afex/blob/master/R/mixed.R||
, este es un punto realmente importante, gracias por mencionarlo y explicármelo (edité mi respuesta para reflejarlo). Me gusta esta funcionalidad delmer_alt
enafex
. Solo mencionaré aquí, para completar, que para obtener el mismo resultado con unalmer
llamada vainilla sin ningún preprocesamiento adicional, por ejemplo, se puede especificar(1+dummy(Machine,'B')+dummy(Machine,'C') || Worker)
. Esto claramente se vuelve muy engorroso cuando la variable categórica tiene muchos niveles.dummy()
solo funciona con los contrastes de tratamiento predeterminados y no cuando los efectos aleatorios usan contrastes de suma a cero (que se debe usar en caso de que el modelo tenga interacciones). Puede, por ejemplo, ver si compara los componentes de varianza en el ejemplo anterior para lalmer_alt
llamada con lamixed
llamada.Yo también he tenido este problema cuando uso la estimación de máxima verosimilitud: solo uso el algoritmo Goldstein IGLS implementado a través del software MLwiN y no LME4 en R. Sin embargo, en todos y cada uno de los casos el problema se resolvió cuando cambié a la estimación MCMC usando el mismo software. Incluso he tenido una correlación superior a 3 que se resolvió cuando cambié la estimación. Usando IGLS, la correlación se calcula después de la estimación como la covarianza dividida por el producto de la raíz cuadrada del producto de las varianzas asociadas, y esto no tiene en cuenta la incertidumbre en cada una de las estimaciones constituyentes.
El software IGLS no 'sabe' que la covarianza implica una correlación y solo calcula estimaciones de una función de varianza constante, lineal, cuadrática, etc. Por el contrario, el enfoque MCMC se basa en la suposición de muestras de una distribución normal multivariada que corresponde a variaciones y covarianzas con buenas propiedades y propagación de errores completos, de modo que la incertidumbre en la estimación de las covarianzas se tiene en cuenta en la estimación de las variaciones. y viceversa.
MLwin posee la cadena de estimación MCMC con estimaciones IGLS y la matriz de covarianza de varianza definida no negativa podría necesitar ser alterada cambiando la covarianza a cero desde el principio antes de comenzar el muestreo.
Para un ejemplo trabajado ver
Desarrollar modelos multinivel para analizar la contextualidad, la heterogeneidad y el cambio utilizando MLwiN 3, Volumen 1 (actualizado en septiembre de 2017); El volumen 2 también está en RGate
https://www.researchgate.net/publication/320197425_Vol1Training_manualRevisedSept2017
Apéndice del Capítulo 10
fuente