O lmer () pode usar splines como efeitos aleatórios?

19

Digamos que estamos trabalhando em um modelo de efeitos aleatórios de alguns dados de contagem ao longo do tempo e queremos controlar algumas tendências. Normalmente, você faria algo como:

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

para incluir uma forma quadrática para t. É possível usar algumas técnicas de suavização mais sofisticadas, como um LOESS mais suave ou splines para modelar esse relacionamento?

Fomite
fonte

Respostas:

25

Se o que você mostrar funcionar para uma lmerfórmula para um termo de efeitos aleatórios, você poderá usar as funções do pacote splines que acompanha o R para configurar as funções básicas relevantes.

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

Dependendo do que você deseja fazer, você também deve examinar o pacote gamm4 e o pacote mgcv . O primeiro está formalizando essencialmente o bs()bit na lmer()chamada acima e permite que a seleção de suavidade seja realizada como parte da análise. O último com função gam()permite algum grau de flexibilidade na adaptação de modelos como este (se eu entendo o que você está tentando fazer). Parece que você quer tendências separadas dentro ID? Uma abordagem de efeitos mais fixos seria algo como:

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

Efeitos aleatórios podem ser incluídos nos gam()modelos usando os s(foo, bs = "re")termos de tipo em fooque estaria IDno seu exemplo. Se faz sentido combinar o bytermo ideia com um efeito aleatório é algo para se pensar e não algo que eu esteja qualificado para comentar.

Restabelecer Monica - G. Simpson
fonte