merToolsвести прогнозирование () для модели с вложенным случайным эффектом
Есть лиpredictInterval()
отmerTools
пакет не похож на вложенные случайные эффекты? Например, используяmsleep
набор данных изggplot2
пакет:
library("lme4")
library("merTools")
library("ggplot2")
mod <- lmer(sleep_total ~ bodywt + (1|vore/order), data=msleep)
predInt <- predictInterval(merMod=mod, newdata=msleep)
Возвращает ошибку:
Error in '[.data.frame'(newdata, , j) : undefined columns selected
Это нормально работает без проблем:
mod <- lmer(sleep_total ~ bodywt + (1|vore) + (1|order), data=msleep)
predInt <- predictInterval(merMod=mod, newdata=msleep)
(Ну на самом деле это дает предупреждение оNA
уровни в переменных случайных эффектов, но меня это не касается)
Как обсуждалось в комментариях к ответу Бена Болкера ниже, новая версияmerTools
учитывает вложенные случайные эффекты. Однако, когда я пытаюсь предсказать данные, содержащие новые уровни вложенного случайного эффекта, я получаю ошибки.
Это работает:
mod <- lmer(sleep_total ~ bodywt + (1|vore/order), data=msleep)
predInt <- predictInterval(merMod=mod, newdata=msleep)
И это работает, хотя и с парой предупреждений (дополнительную информацию о предупреждениях * см. Ниже):
mod <- lmer(sleep_total ~ bodywt + (1|vore) + (1|order), data=msleep)
msleep2 <- msleep %>% mutate(vore = "omni")
predInt <- predictInterval(merMod=mod, newdata=msleep2)
Но это не работает
mod <- lmer(sleep_total ~ bodywt + (1|vore/order), data=msleep)
msleep2 <- msleep %>% mutate(vore = "omni")
predInt <- predictInterval(merMod=mod, newdata=msleep2)
Со следующей ошибкой:
Error in `[.data.frame`(tmp, alllvl) : undefined columns selected
In addition: Warning message:
In predictInterval(merMod = mod, newdata = msleep3) :
newdata is tbl_df or tbl object from dplyr package and has been
coerced to a data.frame
И здесь,"omni"
на самом деле не новый уровеньvore
, но в сочетании сorder
создает новые вложенные комбинации переменных.
Если я использую"new"
или что-нибудь еще, что не является наблюдаемым уровнемvore
, Я получаю аналогичные результаты: он работает для не вложенной версии модели, но не для вложенной версии.
* Кроме того, я должен быть обеспокоен предупреждением, данным вторым фрагментом модели выше:
> mod <- lmer(sleep_total ~ bodywt + (1|vore) + (1|order), data=msleep)
> msleep2 <- msleep %>% mutate(vore = "omni")
> predInt <- predictInterval(merMod=mod, newdata=msleep2)
Warning messages:
1: In predictInterval(merMod = mod, newdata = msleep2) :
newdata is tbl_df or tbl object from dplyr package and has been
coerced to a data.frame
2: In chol.default(sigma, pivot = TRUE) :
the matrix is either rank-deficient or indefinite
Я собираюсь предположить, что второй результатvore
принимая одно и то же значение для каждого наблюдения, но это не должно быть проблемой для прогноза, не так ли? Я мог видеть, что это проблема, если переменная принимала то же значение, когда я подбирал модель, но не думаю, что это должно быть проблемой при прогнозировании новых наблюдений?