Есть ли способ экстраполировать предсказанные данные от Lmer - PullRequest
2 голосов
/ 28 февраля 2012

Я использую lmer для подгонки модели многоуровневой полиномиальной регрессии с несколькими фиксированными эффектами (включая переменные для конкретного субъекта, такие как возраст, кратковременная память и т. Д.) И двумя наборами случайных эффектов (Предмет и Предмет: Условие ). Теперь я хотел бы предсказать данные для гипотетического субъекта с определенными свойствами (возраст, кратковременная память и т. Д.). Я подгоняю модель (m) и создал новый фрейм данных (pred), который содержит мою гипотетическую тему, но когда я попытался predict(m, pred), я получил ошибку:

Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "mer"

Я знаю, что мог бы использовать метод грубой силы для извлечения фиксированных эффектов из моей модели и умножения всего этого, но есть ли более элегантное решение?

1 Ответ

2 голосов
/ 12 августа 2015

Этот тип экстраполированного прогнозирования можно легко выполнить с помощью пакета merTools для R: http://www.github.com/jknowles/merTools

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

Вот краткий пример кода:

library(merTools)
m1 <- lmer(Reaction ~ Days + (1|Subject), data = sleepstudy)
predOut <- predictInterval(m1, newdata = sleepstudy, n.sims = 100)
# extrapolated data
extrapData <- sleepstudy[1:10,]
extrapData$Days <- 20
extrapPred <- predictInterval(m1, newdata = extrapData)
...