Je souhaite modéliser deux variables temporelles différentes, dont certaines sont fortement colinéaires dans mes données (âge + cohorte = période). Ce faisant, j'ai rencontré des problèmes avec lmer
et et les interactions de poly()
, mais ce n'est probablement pas limité à lmer
, j'ai obtenu les mêmes résultats avec l' nlme
IIRC.
De toute évidence, ma compréhension de ce que fait la fonction poly () fait défaut. Je comprends ce qui poly(x,d,raw=T)
fait et je pensais que sans raw=T
cela, cela fait des polynômes orthogonaux (je ne peux pas dire que je comprends vraiment ce que cela signifie), ce qui facilite l'ajustement, mais ne vous permet pas d'interpréter directement les coefficients.
J'ai lu que parce que j'utilise la fonction de prédiction, les prédictions devraient être les mêmes.
Mais ce n'est pas le cas, même lorsque les modèles convergent normalement. J'utilise des variables centrées et j'ai d'abord pensé que peut-être le polynôme orthogonal conduit à une corrélation à effet fixe plus élevée avec le terme d'interaction colinéaire, mais il semble comparable. J'ai collé deux modèles de résumés ici .
Espérons que ces graphiques illustrent l'ampleur de la différence. J'ai utilisé la fonction prédire qui n'est disponible que dans le dev. version de lme4 (entendu à ce sujet ici ), mais les effets fixes sont les mêmes dans la version CRAN (et ils semblent également éteints par eux-mêmes, par exemple ~ 5 pour l'interaction lorsque mon DV a une plage de 0-4).
L'appel lmer était
cohort2_age =lmer(churchattendance ~
poly(cohort_c,2,raw=T) * age_c +
ctd_c + dropoutalive + obs_c + (1+ age_c |PERSNR), data=long.kg)
La prédiction était des effets fixes uniquement, sur de fausses données (tous les autres prédicteurs = 0) où j'ai marqué la plage présente dans les données originales comme extrapolation = F.
predict(cohort2_age,REform=NA,newdata=cohort.moderates.age)
Je peux fournir plus de contexte si nécessaire (je n'ai pas réussi à produire un exemple reproductible facilement, mais je peux bien sûr essayer plus fort), mais je pense que c'est un moyen plus simple: expliquez- poly()
moi la fonction, très bien s'il vous plaît.