Chcę modelować dwie różne zmienne czasowe, z których niektóre są silnie współliniowe w moich danych (wiek + kohorta = okres). Robiąc to, miałem problemy z lmer
interakcjami i poly()
, ale prawdopodobnie nie jest to ograniczone lmer
, otrzymałem takie same wyniki z nlme
IIRC.
Oczywiście brakuje mi zrozumienia tego, co robi funkcja poli (). Rozumiem, co poly(x,d,raw=T)
robi i pomyślałem, że bez raw=T
niego powstają wielomiany ortogonalne (nie mogę powiedzieć, że naprawdę rozumiem, co to oznacza), co ułatwia dopasowanie, ale nie pozwala na bezpośrednią interpretację współczynników.
I czytać , bo używam funkcji przewidywania, prognozy powinny być takie same.
Ale tak nie jest, nawet jeśli modele zbiegają się normalnie. Używam zmiennych wyśrodkowanych i najpierw pomyślałem, że może wielomian ortogonalny prowadzi do wyższej korelacji efektu stałego z kolinearnym terminem interakcji, ale wydaje się, że jest porównywalny. Wkleiłem tutaj dwa podsumowania modeli .
Te wykresy mają nadzieję ilustrują zakres różnicy. Użyłem funkcji przewidywania, która jest dostępna tylko w dev. wersja lme4 (słyszałem o tym tutaj ), ale ustalone efekty są takie same w wersji CRAN (i same również wydają się wyłączone, np. ~ 5 dla interakcji, gdy mój DV ma zakres 0-4).
Lmer był
cohort2_age =lmer(churchattendance ~
poly(cohort_c,2,raw=T) * age_c +
ctd_c + dropoutalive + obs_c + (1+ age_c |PERSNR), data=long.kg)
Prognozę poprawiono tylko w przypadku efektów, na fałszywych danych (wszystkie inne predyktory = 0), gdzie zaznaczyłem zakres obecny w oryginalnych danych jako ekstrapolacja = F.
predict(cohort2_age,REform=NA,newdata=cohort.moderates.age)
Mogę podać więcej kontekstu, jeśli zajdzie taka potrzeba (nie udało mi się łatwo stworzyć powtarzalnego przykładu, ale oczywiście mogę się bardziej postarać), ale myślę, że jest to bardziej podstawowy zarzut: wyjaśnij mi tę poly()
funkcję, proszę bardzo.
Surowe wielomiany
Wielomiany ortogonalne (obcięte, nielipcowane w Imgur )
źródło