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)