C'est plus une question conceptuelle, mais comme je l'utilise, R
je ferai référence aux packages de R
. Si l'objectif est d'adapter un modèle linéaire à des fins de prédiction, puis de faire des prédictions là où les effets aléatoires pourraient ne pas être disponibles, y a-t-il un avantage à utiliser un modèle à effets mixtes, ou faut-il plutôt utiliser un modèle à effet fixe?
Par exemple, si j'ai des données sur le poids par rapport à la taille avec d'autres informations, et que je construis le modèle suivant en utilisant lme4
, où le sujet est un facteur à niveaux ( ):
mod1 <- lmer(weight ~ height + age + (1|subject), data=df, REML=F)
Ensuite, je veux pouvoir prédire le poids du modèle en utilisant de nouvelles données de taille et d'âge. De toute évidence, la variance par sujet dans les données originales est saisie dans le modèle, mais est-il possible d'utiliser ces informations dans la prédiction? Disons que j'ai de nouvelles données sur la taille et l'âge et que je veux prédire le poids, je peux le faire comme suit:
predict(mod1,newdata=newdf) # newdf columns for height, age, subject
Cela utilisera predict.merMod
, et je peux soit inclure une colonne pour les (nouveaux) sujets newdf
, soit définir re.form =~0
. Dans le premier cas, on ne sait pas exactement ce que le modèle fait avec les «nouveaux» facteurs sujets, et dans le second cas, la variance par sujet capturée dans le modèle sera-t-elle simplement ignorée (moyenne sur) pour la prédiction?
Dans les deux cas, il me semble qu'un modèle linéaire à effet fixe pourrait être plus approprié. En effet, si ma compréhension est correcte, alors un modèle à effet fixe devrait prédire les mêmes valeurs que le modèle mixte, si l'effet aléatoire n'est pas utilisé dans la prédiction. Cela devrait-il être le cas? Ce R
n'est pas le cas, par exemple:
mod1 <- lmer(weight ~ height + age + (1|subject), data=df, REML=F)
predict(mod1,newdata=newdf, re.form=~0) # newdf columns for height, age, subject
donne des résultats différents pour:
mod2 <- lm(weight ~ height + age, data=df)
predict(mod2,newdata=newdf) # newdf columns for height, age