Может ли lmer () использовать сплайны в качестве случайных эффектов?

19

Скажем, мы работаем над моделью случайных эффектов некоторых данных подсчета во времени, и мы хотим контролировать некоторые тенденции. Обычно вы делаете что-то вроде:

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

включить квадратную форму для t. Можно ли использовать более сложные методы сглаживания, такие как сглаживание по УХОДУ или сплайны, для моделирования этих отношений?

фомиты
источник

Ответы:

25

Если то, что вы показываете, работает с lmerформулой для термина со случайными эффектами, тогда вы сможете использовать функции из пакета сплайнов , поставляемого с R, для настройки соответствующих базовых функций.

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

В зависимости от того, что вы хотите сделать, вы также должны смотреть на gamm4 пакет и mgcv пакета. Первый по существу формализует bs()бит в lmer()вызове выше и позволяет выполнять выбор плавности как часть анализа. Последний с функцией gam()обеспечивает некоторую степень гибкости при подгонке моделей, подобных этой (если я понимаю, что вы пытаетесь сделать). Похоже, вы хотите отдельные тенденции внутри ID? Подход с более фиксированными эффектами будет выглядеть примерно так:

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

Случайные эффекты могут быть включены в gam()модели , используя s(foo, bs = "re")термины типа , где fooбы IDв вашем примере. Имеет ли смысл объединять byтермин идея со случайным эффектом - это то, о чем стоит подумать, а не то, что я имею право комментировать.

Восстановить Монику - Дж. Симпсон
источник