Czy lmer () może używać splajnów jako efektów losowych?

19

Załóżmy, że pracujemy nad modelem efektów losowych niektórych danych zliczanych w czasie i chcemy kontrolować niektóre trendy. Zwykle zrobiłbyś coś takiego:

lmer(counts ~ dependent_variable + (1+t+I(t^2)|ID), family="poisson")

zawierać kwadratowy kształt dla t. Czy można zastosować bardziej wyrafinowane techniki wygładzania, takie jak wygładzanie LOESS lub splajny, aby modelować ten związek?

Fomite
źródło

Odpowiedzi:

25

Jeśli to, co pokazujesz, działa dla lmerformuły dla terminu efektów losowych, powinieneś być w stanie użyć funkcji z pakietu splajnów dostarczonego z R do skonfigurowania odpowiednich funkcji podstawowych.

require("lme4")
require("splines")
lmer(counts ~ dependent_variable + (bs(t) | ID), family="poisson")

W zależności od tego, co chcesz zrobić, powinieneś także spojrzeć na pakiet gamm4 i pakiet mgcv . Ten pierwszy zasadniczo formalizuje bs()bit w lmer()powyższym wywołaniu i pozwala na dokonanie wyboru gładkości w ramach analizy. Ten drugi z funkcją gam()pozwala na pewien stopień elastyczności w dopasowywaniu modeli takich jak ten (jeśli rozumiem, co próbujesz zrobić). Wygląda na to, że chcesz mieć w sobie odrębne trendy ID? Bardziej ustalonym podejściem do efektów byłoby coś takiego:

gam(counts ~ dependent_variable + ID + s(t, by = ID) , family="poisson")

W gam()modelach można włączać losowe efekty , używając s(foo, bs = "re")typów, które foobyłyby IDw twoim przykładzie. To, czy sensowne jest połączenie bypojęcia pomysł z przypadkowym efektem, jest czymś do przemyślenia, a nie czymś, co mogę kwalifikować się do komentowania.

Przywróć Monikę - G. Simpson
źródło