Voglio modellare due diverse variabili temporali, alcune delle quali sono fortemente collineari nei miei dati (età + coorte = periodo). In questo modo mi sono imbattuto in alcuni problemi con ee lmer
interazioni di poly()
, ma probabilmente non è limitato a lmer
, ho ottenuto gli stessi risultati con nlme
IIRC.
Ovviamente manca la mia comprensione di ciò che fa la funzione poly (). Capisco cosa poly(x,d,raw=T)
fa e ho pensato senza di raw=T
esso rende polinomi ortogonali (non posso dire di capire davvero cosa significhi), il che rende più semplice l'adattamento, ma non consente di interpretare direttamente i coefficienti.
Ho letto che poiché sto usando la funzione di previsione, le previsioni dovrebbero essere le stesse.
Ma non lo sono, anche quando i modelli convergono normalmente. Sto usando variabili centrate e per prima cosa ho pensato che forse il polinomio ortogonale porta a una maggiore correlazione di effetti fissi con il termine di interazione collineare, ma sembra comparabile. Ho incollato due riepiloghi di modelli qui .
Si spera che questi grafici illustrino l'entità della differenza. Ho usato la funzione predict che è disponibile solo nello sviluppatore. versione di lme4 (ne ho sentito parlare qui ), ma gli effetti fissi sono gli stessi nella versione CRAN (e sembrano anche spenti da soli, ad esempio ~ 5 per l'interazione quando il mio DV ha un intervallo di 0-4).
La chiamata più lenta era
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 previsione era solo effetti fissi, su dati falsi (tutti gli altri predittori = 0) in cui ho contrassegnato l'intervallo presente nei dati originali come estrapolazione = F.
predict(cohort2_age,REform=NA,newdata=cohort.moderates.age)
Posso fornire più contesto se necessario (non sono riuscito a produrre facilmente un esempio riproducibile, ma ovviamente posso fare di più), ma penso che questo sia un motivo di base: spiegami la poly()
funzione, per favore, per favore.