lmer 对象的预测函数出错
error with predict function with lmer object
我正在尝试使用 lmer
而不是 nlme
模型重现 Roland's code 的情节,但我在 predict
函数中遇到错误:
library(nlme)
library(lme4)
library(ggplot2)
fm2 <- lmer(distance ~ age + Sex + (1|Subject), data = Orthodont)
newdat <- expand.grid(Sex=unique(Orthodont$Sex),
age=c(min(Orthodont$age),
max(Orthodont$age)))
p <- ggplot(Orthodont, aes(x=age, y=distance, colour=Sex)) +
geom_point(size=3) +
geom_line(aes(y=predict(fm2), group=Subject, size="Subjects")) +
geom_line(data=newdat, aes(y=predict(fm2, level=0, newdata=newdat), size="Population")) +
scale_size_manual(name="Predictions", values=c("Subjects"=0.5, "Population"=3)) +
theme_bw(base_size=22)
这是我得到的错误:
Error in eval(predvars, data, env) : object 'Subject' not found
In addition: Warning message:
In predict.merMod(fm2, level = 0, newdata = newdat) :
unused arguments ignored
如果你想绘制 subject-level 个预测,你需要在你的预测框架中包含 Subject
:
pframe <- with(Orthodont,
expand.grid(Sex=unique($Sex),
age=range(age),
Subject=unique(Subject))
)
或者您可以在 predict
调用中包含 re.form = ~0
:这等同于(忽略!)您当前代码中的 level=0
规范,它仅适用于 lme
...
我正在尝试使用 lmer
而不是 nlme
模型重现 Roland's code 的情节,但我在 predict
函数中遇到错误:
library(nlme)
library(lme4)
library(ggplot2)
fm2 <- lmer(distance ~ age + Sex + (1|Subject), data = Orthodont)
newdat <- expand.grid(Sex=unique(Orthodont$Sex),
age=c(min(Orthodont$age),
max(Orthodont$age)))
p <- ggplot(Orthodont, aes(x=age, y=distance, colour=Sex)) +
geom_point(size=3) +
geom_line(aes(y=predict(fm2), group=Subject, size="Subjects")) +
geom_line(data=newdat, aes(y=predict(fm2, level=0, newdata=newdat), size="Population")) +
scale_size_manual(name="Predictions", values=c("Subjects"=0.5, "Population"=3)) +
theme_bw(base_size=22)
这是我得到的错误:
Error in eval(predvars, data, env) : object 'Subject' not found
In addition: Warning message:
In predict.merMod(fm2, level = 0, newdata = newdat) :
unused arguments ignored
如果你想绘制 subject-level 个预测,你需要在你的预测框架中包含 Subject
:
pframe <- with(Orthodont,
expand.grid(Sex=unique($Sex),
age=range(age),
Subject=unique(Subject))
)
或者您可以在 predict
调用中包含 re.form = ~0
:这等同于(忽略!)您当前代码中的 level=0
规范,它仅适用于 lme
...