Me gustaría construir predicciones para un modelo mixto (logística a través de glmer) en un nuevo conjunto de datos usando solo los efectos fijos, manteniendo los efectos aleatorios en 0. Pero tengo problemas para configurar la matriz del modelo para poder calcularlos.
Dado que la clase mer no tiene un método de predicción, y dado que quiero omitir los efectos aleatorios para las predicciones en el nuevo conjunto de datos, creo que necesito construir una matriz modelo para los efectos fijos de la misma estructura utilizada en el original modelo, pero utilizando los nuevos datos. Luego multiplique por los coeficientes de efectos fijos en el modelo.
La parte de efectos fijos de mi fórmula modelo contiene factores y términos de interacción entre efectos fijos numéricos, por lo que es un poco más complicado que simplemente extraer las variables fijas de la matriz. Por ejemplo, necesito asegurarme de que el factor de expansión de contraste sea el mismo que el original, que los términos de interacción estén correctamente listados, etc.
Entonces, mi pregunta es: ¿cuál es el enfoque general más directo para construir una nueva matriz modelo que imite la estructura de la matriz modelo original utilizada para crear el modelo?
He intentado model.matrix (my.model, data = newdata) pero parece que devuelve la matriz del modelo original, no una basada en newdata.
Código de muestra:
library(lme4)
cake2 <- head(cake) # cake2 is "new" data frame for future predictions
# recipe is a fixed effect factor, temp is fixed effect numeric, replicate is random effect
m <- lmer(angle ~ temp + recipe + (1 | replicate), data=cake)
summary(m)
nrow(cake2) # but new data frame has 6 rows
nrow(cake) # original data frame has 270 rows
# attempt to make new model matrix using different data frame
mod.mat.cake2 <- model.matrix(m, data=cake2)
nrow(mod.mat.cake2) # 270 rows, same as orig data frame
Probé otros métodos, como extraer los términos de la fórmula y construir una nueva fórmula a partir de eso, pero parecía demasiado complicado y frágil en el manejo de factores y términos de interacción.
¿Cómo puedo hacer que mod.mat.cake2 sea una matriz de modelo de efectos fijos basada en la fórmula en m, pero usando valores de cake2? ¿O hay una manera más fácil de obtener predicciones solo de efectos fijos de un modelo anterior?
Toda ayuda es apreciada. Gracias.
lm()
y extraer la matriz del modelo del ajuste, y aplicarlo al coeficientes del modelo del ajuste anterior.