Ich möchte zwei verschiedene Zeitvariablen modellieren, von denen einige in meinen Daten stark kollinear sind (Alter + Kohorte = Periode). Dabei hatte ich einige Probleme mit lmer
und und Interaktionen von poly()
, aber es ist wahrscheinlich nicht darauf beschränkt lmer
, dass ich mit nlme
IIRC die gleichen Ergebnisse erzielt habe.
Offensichtlich fehlt mein Verständnis dafür, was die poly () - Funktion bewirkt. Ich verstehe, was poly(x,d,raw=T)
funktioniert, und ich dachte, ohne raw=T
es entstehen orthogonale Polynome (ich kann nicht sagen, dass ich wirklich verstehe, was das bedeutet), was die Anpassung erleichtert, aber Sie die Koeffizienten nicht direkt interpretieren lässt.
Ich habe gelesen, dass die Vorhersagen gleich sein sollten, da ich die Vorhersagefunktion verwende.
Dies ist jedoch nicht der Fall, selbst wenn die Modelle normal konvergieren. Ich verwende zentrierte Variablen und dachte zuerst, dass das orthogonale Polynom möglicherweise zu einer höheren Korrelation fester Effekte mit dem kollinearen Interaktionsterm führt, aber es scheint vergleichbar. Ich habe hier zwei Modellzusammenfassungen eingefügt .
Diese Darstellungen veranschaulichen hoffentlich das Ausmaß des Unterschieds. Ich habe die Vorhersagefunktion verwendet, die nur im Entwickler verfügbar ist. Version von lme4 ( hier davon gehört ), aber die festen Effekte sind in der CRAN-Version gleich (und sie scheinen auch von selbst aus zu sein, z. B. ~ 5 für die Interaktion, wenn mein DV einen Bereich von 0-4 hat).
Der letzte Anruf war
cohort2_age =lmer(churchattendance ~
poly(cohort_c,2,raw=T) * age_c +
ctd_c + dropoutalive + obs_c + (1+ age_c |PERSNR), data=long.kg)
Die Vorhersage war nur ein fester Effekt auf gefälschte Daten (alle anderen Prädiktoren = 0), wobei ich den in den Originaldaten vorhandenen Bereich als Extrapolation = F markierte.
predict(cohort2_age,REform=NA,newdata=cohort.moderates.age)
Ich kann bei Bedarf mehr Kontext bereitstellen (ich habe es nicht leicht geschafft, ein reproduzierbares Beispiel zu erstellen, kann mich aber natürlich mehr anstrengen), aber ich denke, dies ist eine grundlegendere Bitte: Erklären Sie poly()
mir die Funktion, bitte schön.