rand() из lmerTest: как бороться с отсутствующими значениями?

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

Когда я бегу rand() чтобы получить p-значение, связанное с каждым случайным слагаемым, я получаю следующую ошибку:

Error in anova.merMod(object = object, ... = ...) : models were not all fitted to the same size of dataset

Это потому, что один из моих случайных терминов включает пропущенные значения, а другие нет.

Мой вопрос: в пределах rand функция, как я могу справиться с различиями в размерах наборов данных? Есть ли аргумент, который позволяет автоматически опускать NA? Я пытался просмотреть страницу справки для этой функции, но документация очень ограничена.

Спасибо!

1 ответ

Решение

Вот пример, использующий пример данных из lmerTest пакет. В примере мы хотим запустить этот код

library(lmerTest)
m <- lmer(Preference ~ sens2+Homesize+(1+sens2|Consumer), data=carrots)
rand(m)

Сначала мы определяем, какие переменные доступны для самой большой из моделей. Я использую трубу и функции из tidyverse ниже, но вы можете сделать то же самое с with, Все переменные из полной модели должны быть включены сюда

cc <- carrots %>% select(Preference, sens2, Homesize, Consumer) %>% complete.cases()

cc теперь содержит вектор логики со строками, которые содержат полные наборы наблюдений. Это те, которые мы должны использовать на протяжении всего анализа. Мы уверены, что это правда, добавив subset аргумент

m <- lmer(Preference ~ sens2+Homesize+(1+sens2|Consumer), subset=cc, data=carrots)
Другие вопросы по тегам