У меня есть некоторые продольные данные, из которых я хотел бы получить прогнозируемые средние значения в определенное время. Модель включает 2 члена, их взаимодействие и сплайновый член для временной переменной. Когда я пытаюсь получить предсказанное среднее значение, я получаю сообщение «Ошибка в мм %*% fixef(m4): несоответствующие аргументы».
Я использовал набор данных о сне от lmer, чтобы проиллюстрировать свою проблему. Сначала я импортирую данные и создаю переменную «возраст» для своего взаимодействия.
sleep <- as.data.frame(sleepstudy) #get the sleep data
# create fake variable for age with 3 levels
set.seed(1234567)
sleep$age <- as.factor(sample(1:3,length(sleep),rep=TRUE))
Затем я запускаю свою модель lmer
library(lme4)
library(splines)
m4 <- lmer(Reaction ~ Days + ns(Days, df=4) + age + Days:age + (Days | Subject), sleep)
Наконец, я создаю данные и матрицу, необходимые для получения предсказанных средних значений.
#new data frame for predicted means
d <- c(0:9) # make a vector of days = 0 to 9 to obtain predictions for each day
newdat <- as.data.frame(cbind(Days=d, age=rep(c(1:3),length(d))))
newdat$Days <- as.numeric(as.character(newdat$Days))
newdat$age <- as.factor(newdat$age)
# create a matrix
mm<-model.matrix(~Days + ns(Days, df=4) + age + Days:age, newdat)
newdat$pred<-mm%*%fixef(m4)
Именно в этот момент я получаю сообщение об ошибке: Ошибка в мм %*% fixef(m4): несоответствующие аргументы
Я могу использовать прогноз, чтобы получить средства
newdat$pred <- predict(m4, newdata=newdat, re.form=NA)
который отлично работает, но я хочу иметь возможность рассчитать доверительный интервал, поэтому мне нужна созвучная матрица.
Я где-то читал, что проблема может заключаться в том, что lmer создает псевдонимы (не могу найти этот пост). Этот комментарий был сделан по поводу невозможности использования эффекта() для аналогичной задачи. Не совсем понял как победить эту проблему. Более того, я помню, что этот пост был немного старым, и я надеялся, что проблема псевдонима больше не актуальна.
Если у кого-то есть предложения о том, что я могу делать неправильно, я был бы признателен за обратную связь. Спасибо.
fixed-effect model matrix is rank deficient so dropping 1 column / coefficient
. Это означает, что количество фиксированных эффектов в модели меньше числа вmm
, поэтому вы получаете сообщение об ошибке. - person aosmith   schedule 12.12.2015