我有一些纵向数据,想要在指定时间得到预测平均值。该模型包括2个项、它们的交互和时间变量的样条项。当我试图获取预测平均值时,出现“mm %*% fixef(m4)非一致参数”的错误。
我使用了lmer的睡眠数据集来说明我的问题。首先,我导入数据并创建一个名为“age”的变量用于交互。
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)
在这一点上,我遇到了错误:Error in mm %*% fixef(m4) : non-conformable arguments
我可以使用预测来得到平均值。
newdat$pred <- predict(m4, newdata=newdat, re.form=NA)
这段代码可以正常工作,但我希望能够计算置信区间,因此我需要一个相容的矩阵。
我在某个地方看到过这个问题可能是lmer创建了别名(我找不到那篇文章)。该评论是针对类似任务无法使用effect()函数而发出的。我无法完全理解如何克服这个问题。此外,我记得那篇文章有点旧了,希望别名问题可能已经不再相关。
如果有人有关于我可能做错的建议,我将感激您的反馈。谢谢。
fixed-effect model matrix is rank deficient so dropping 1 column / coefficient
。这意味着模型中固定效应的数量少于mm
中的数量,这就是为什么你会收到错误消息的原因。 - aosmith