Say we’re working on a random effects model of some count data over time, and we want to control for some trends. Normally, you’d do something like:
lmer(counts ~ dependent_variable + (1+t+I(t^2)|ID), family="poisson")
to include a quadratic shape for
t. Is it possible to use some more sophisticated smoothing techniques like a LOESS smoother or splines to model that relationship?
If what you show works for a
lmer formula for a random effects term then you should be able to use functions from the splines package that comes with R to set up the relevant basis functions.
require("lme4") require("splines") lmer(counts ~ dependent_variable + (bs(t) | ID), family="poisson")
Depending on what you want to do, you should also look at the gamm4 package and the mgcv package. The former is essentially formalising the
bs() bit in the
lmer() call above and allows smoothness selection to be performed as part of the analysis. The latter with function
gam() allows for some degree of flexibility in fitting models like this (if I understand what you are trying to do). It looks like you want separate trends within
ID? A more fixed effects approach would be something like:
gam(counts ~ dependent_variable + ID + s(t, by = ID) , family="poisson")
Random effects can be included in
gam() models using the
s(foo, bs = "re") type terms where
foo would be
ID in your example. Whether it makes sense to combine the
by term idea with a random effect is something to think about and not something I am qualified to comment on.