我试图在分组数据上运行多个混合效果模型。以下是代码:
library(dplyr)
library(lme4)
dat.tx.a <- mvrnorm(n=250, mu=c(30, 20, 28),
Sigma=matrix(c(25.0, 17.5, 12.3,
17.5, 25.0, 17.5,
12.3, 17.5, 25.0), nrow=3, byrow=TRUE))
dat.tx.b <- mvrnorm(n=250, mu=c(30, 20, 22),
Sigma=matrix(c(25.0, 17.5, 12.3,
17.5, 25.0, 17.5,
12.3, 17.5, 25.0), nrow=3, byrow=TRUE))
dat <- data.frame(rbind(dat.tx.a, dat.tx.b))
names(dat) = c("measure.1", "measure.2", "measure.3")
dat <- data.frame(subject.id=factor(1:500), tx=rep(c("A", "B"), each=250), dat)
rm(dat.tx.a, dat.tx.b)
dat <- reshape(dat, varying=c("measure.1", "measure.2", "measure.3"),
idvar="subject.id", direction="long")
df.model<-dat %>%
group_by(tx) %>%
do (model1=lmer(measure~(1|subject.id), data=.)) %>%
do (model2=lmer(measure~time+(1|subject.id), data=.))
以下是错误消息:
Error in as.data.frame.default(x[[i]], optional = TRUE) :
cannot coerce class "structure("lmerMod", package = "lme4")" to a data.frame
如果删除运行model2的行,代码将起作用。似乎数据框只接受一列作为模型列表?非常感谢。
答案 0 :(得分:2)
只需将多个模型传递给do()
:
df.model<-dat %>%
group_by(tx) %>%
do (model1=lmer(measure~(1|subject.id), data=.),
model2=lmer(measure~time+(1|subject.id), data=.))
另请注意,在您的示例中,您使用的是MASS
包。