Gostaria de construir previsões para um modelo misto (logística via glmer) em um novo conjunto de dados usando apenas os efeitos fixos, mantendo os efeitos aleatórios em 0. Mas estou tendo problemas para configurar a matriz do modelo para poder calculá-los.
Como a classe mer não tem um método de previsão e como desejo omitir os efeitos aleatórios das previsões no novo conjunto de dados, acho que preciso construir uma matriz de modelo para os efeitos fixos da mesma estrutura usada no original modelo, mas usando os novos dados. Em seguida, multiplique pelos coeficientes de efeito fixo no modelo.
A parte de efeito fixo da minha fórmula de modelo contém fatores e termos de interação entre efeitos fixos numéricos, por isso é um pouco mais complicado do que apenas extrair as variáveis fixas da matriz. por exemplo, preciso garantir que a expansão do contraste de fator seja a mesma do original, os termos de interação sejam listados corretamente etc.
Portanto, minha pergunta é: qual é a abordagem geral mais direta para a construção de uma nova matriz de modelo que imita a estrutura da matriz de modelo original usada na criação do modelo?
Eu tentei model.matrix (my.model, data = newdata), mas isso parece retornar a matriz do modelo original, não uma baseada em newdata.
Código de amostra:
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
Tentei outros métodos, como extrair os termos da fórmula e criar uma nova fórmula a partir dela, mas parecia excessivamente complicado e frágil no manuseio de fatores e termos de interação.
Como faço para que mod.mat.cake2 seja uma matriz de modelo de efeito fixo com base na fórmula em m, mas usando valores de cake2? Ou existe uma maneira mais fácil de obter previsões apenas de efeito fixo de um modelo mais recente?
Toda ajuda é apreciada. Obrigado.
fonte
lm()
e extrair a matriz de modelo do ajuste e aplicá-lo ao coeficientes do modelo do ajuste anterior.Respostas:
Talvez isso seja trapaça, mas
Nota:
lme4.0
aqui, que é a versão R-forja de "velho" (CRAN)lme4
: você pode substituirlme4
porlme4.0
no código acimaa nova versão (r-forge / development) de
lme4
tem umpredict
método: nesse casofunciona bem (
re.form=NA
define todos os efeitos aleatórios para zero, equivalentes aoslevel=0
antigospredict.lme
)fonte