lmerTest:::anova использует ленивую загрузку наборов данных?
Столкнулся с этой проблемой, пытаясь получить эмпирическое распределение степеней свободы КР...
Это кажется довольно опасным поведением? Это ошибка?
Воспроизводимый пример:
## import lmerTest package
library(lmerTest)
## an object of class merModLmerTest
m <- lmer(Informed.liking ~ Gender+Information+Product +(1|Consumer), data=ham)
# simulate data from fitted model
simData=ham
simData$Informed.liking=unlist(simulate(m))
# fit model to simulated data
m1 <- lmer(Informed.liking ~ Gender+Information+Product +(1|Consumer), data=simData)
stats:::anova(m1)
lmerTest:::anova(m1)
# simulate again, WITHOUT refitting
simData$Informed.liking=unlist(simulate(m))
stats:::anova(m1) # same as before
lmerTest:::anova(m1) # not same as before!
1 ответ
Мой ответ не представляет собой твердый ответ, а скорее расширенный комментарий:
это выглядит довольно плохо - фактически я обнаружил сегодня, что почти все анализы, которые я провел в проекте, который находился на грани представления, должны быть переделаны из-за связанного поведения lmerTest
,
Проблема, с которой я столкнулся, заключалась в том, что я использовал короткую функцию, которая соответствует модели с lmer
а затем возвращается coef(summary(model))
простые вещи, две строки кода. Однако вход для этой функции был назван data
и у меня также был датафрейм под названием data
в рабочей области. Кажется, что хотя во время подгонки с lmer
локальная переменная из области действия функции была правильно использована во время summary
рабочее пространство data
Была использована переменная (которая часто отличалась от того, какой кадр данных передавался в функцию), что приводило к неверным значениям t и степеням свободы, приводящим к неверным значениям p (однако оценки и их стандартная ошибка были в порядке).
Итак, отвечая на ваш вопрос:
Это кажется довольно опасным поведением? Это ошибка?
Это действительно опасно, и я бы определенно назвал это ошибкой.