¿Puede lmer () usar splines como efectos aleatorios?

19

Supongamos que estamos trabajando en un modelo de efectos aleatorios de algunos datos de conteo a lo largo del tiempo, y queremos controlar algunas tendencias. Normalmente, harías algo como:

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

para incluir una forma cuadrática para t. ¿Es posible utilizar algunas técnicas de suavizado más sofisticadas como un suavizador LOESS o splines para modelar esa relación?

Fomite
fuente

Respuestas:

25

Si lo que muestra funciona para una lmerfórmula para un término de efectos aleatorios, entonces debería poder usar funciones del paquete de splines que viene con R para configurar las funciones básicas relevantes.

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

Dependiendo de lo que quieras hacer, también debes mirar el paquete gamm4 y el paquete mgcv . El primero es esencialmente formalizar el bs()bit en la lmer()llamada anterior y permite que se realice la selección de suavidad como parte del análisis. El último con función gam()permite cierto grado de flexibilidad en el ajuste de modelos como este (si entiendo lo que está tratando de hacer). Parece que quieres tendencias separadas dentro ID? Un enfoque de efectos más fijos sería algo como:

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

Los efectos aleatorios se pueden incluir en gam()modelos usando los s(foo, bs = "re")términos de tipo donde fooestaría IDen su ejemplo. Si tiene sentido combinar el bytérmino idea con un efecto aleatorio es algo en lo que pensar y no algo en lo que esté calificado para comentar.

Restablece a Mónica - G. Simpson
fuente