Me gustaría usar lme4
para ajustar una regresión de efectos mixtos y multcomp
calcular las comparaciones por pares. Tengo un conjunto de datos complejo con múltiples predictores continuos y categóricos, pero mi pregunta se puede demostrar utilizando el ChickWeight
conjunto de datos incorporado como ejemplo:
m <- lmer(weight ~ Time * Diet + (1 | Chick), data=ChickWeight, REML=F)
Time
es continuo y Diet
es categórico (4 niveles) y hay múltiples pollitos por dieta. Todos los polluelos comenzaron con aproximadamente el mismo peso, pero sus dietas (pueden) afectar su tasa de crecimiento, por lo que las Diet
intersecciones deben ser (más o menos) iguales, pero las pendientes pueden ser diferentes. Puedo obtener las comparaciones por pares para el efecto de intercepción de Diet
esta manera:
summary(glht(m, linfct=mcp(Diet = "Tukey")))
y, de hecho, no son significativamente diferentes, pero ¿cómo puedo hacer una prueba análoga para el Time:Diet
efecto? Simplemente poner el término de interacción en mcp
produce un error:
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’!
fuente
Time*Diet
, que es solo una simplificación deTime + Diet + Time:Diet
. Usandoanova(m)
osummary(m)
confirma que el término de interacción está en el modelo.Respuestas:
Por defecto,
lmer
trata el nivel de referencia de un predictor categórico como la línea de base y estima los parámetros para los otros niveles. Por lo tanto, obtiene algunas comparaciones por pares en la salida predeterminada y puede obtener las demás utilizandorelevel
para definir un nuevo nivel de referencia y volver a ajustar el modelo. Esto tiene la ventaja de permitirle usar comparaciones de modelos o MCMC para obtener los valores p, pero no corrige las comparaciones múltiples (aunque podría aplicar su propia corrección después).Para usar
multcomp
, debe definir la matriz de contraste. Cada fila en la matriz de contraste representa los pesos de los efectos que obtiene en la salida del modelo predeterminado, comenzando con la Intercepción. Entonces, si desea un efecto que ya esté incluido en la salida básica, simplemente ponga un "1" en la posición correspondiente a ese efecto. Dado que las estimaciones de los parámetros son relativas a un nivel de referencia común, puede obtener comparaciones entre cualquiera de los otros dos niveles estableciendo el peso de uno en "-1" y del otro "1". Así es como funcionaría para losTime:Diet
términos en elChickWeight
ejemplo:Advertencia: este enfoque parece utilizar la aproximación normal para obtener valores de p, que es algo anticonservador, y luego aplica alguna corrección para comparaciones múltiples. El resultado es que este método le brinda acceso fácil a tantas estimaciones de parámetros por pares y errores estándar como desee, pero los valores p pueden o no ser lo que desea.
(Gracias a Scott Jackson de r-ling-lang-L por su ayuda con esto)
fuente