У меня возникли проблемы с использованием предиката для генерирования прогнозируемых значений из моей смешанной модели с удаленным перехватом.
моделируемый набор данных
logreads <- rep(1:16, 20)
arthropod <- rep(c("mealworm", "spider"), 160)
bird <- rep(c("GY", "NF"), 160)
noop <- rep(c("WOTH293", "WOTH294"), 16)
massin <- rnorm(160, mean=10, sd=5)
m8 <- data.frame(cbind(logreads, arthropod, massin, bird, noop))
colnames(m8) <- c("logreads", "arthropod", "massin", "bird", "noop")
m8$massin <- as.numeric(as.character(m8$massin))
m8$logreads <- as.numeric(as.character(m8$logreads))
модель с удаленным перехватом
library(lme4)
lm1 <- lmer(logreads ~ 0 + arthropod*massin + (1|bird) + (1|noop), data=m8, REML=FALSE)
матрица прогнозирования здания
arthropod <- rep(c("mealworm"), 16)
bird <- rep(c("GY"), 16)
noop <- rep(c("WOTH293"), 16)
massin <- 0:15
pred.mx <- data.frame(cbind(arthropod, massin, bird, noop))
colnames(pred.mx) <- c("arthropod", "massin", "bird", "noop")
pred.mx$massin <- as.numeric(as.character(pred.mx$massin))
расчет прогнозируемых значений
library("merTools")
predictInterval(lm1, newdata=pred.mx, level=0.95, n.sims=999, include.resid.var=FALSE)
Я получаю сообщение об ошибке "Ошибка в model.frame.default (суббары (формула (merMod)), данные = новые данные): переменные длины различаются (найдено для" членистоногих ")"
В другой итерацииw (с реальными данными) я получаю "Ошибка в eval (predvars, data, env): объект 'logreads' не найден"
preds(lm1)
# отметим, что это работает просто отлично
вести нахождения в предикате () отлично работает на той же модели, что и выше, но удаляет команду "+0" ie, которая удаляет перехват
I Полагаю, что, указав «+0», ForegnateInterval () теряет отслеживание столбцов в newdata, но я уверен, что это ошибка в моем коде.
Обратите внимание, что я не возражаю против предупреждающих сообщений, поскольку данные здесь симулируются. Я также обновился до последней версии merTools (0.5), в которой утверждается, что она исправила эту проблему с моделями с удаленным перехватом, но это не так.