lmer 对象的预测函数出错

发布于 2025-01-09 15:22:13 字数 1036 浏览 0 评论 0原文

我正在尝试使用 lmer 而不是 重现 Roland 的代码 中的情节>nlme 模型,但我在使用 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

I'm trying to reproduce the plot from Roland's code with lmer instead of nlme model but I'm getting an error with the predict function:

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)

This is the error I get:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吃不饱 2025-01-16 15:22:13

如果您想绘制主题级别的预测,则需要在预测框架中包含 Subject

pframe <- with(Orthodont,
  expand.grid(Sex=unique($Sex),
              age=range(age),
              Subject=unique(Subject))
)

或者,您可以在 中包含 re.form = ~0 Predict 调用:这相当于(忽略!)当前代码中的 level=0 规范,仅适用于 lme ...

If you want to plot subject-level predictions, you would need to include Subject in your prediction frame:

pframe <- with(Orthodont,
  expand.grid(Sex=unique($Sex),
              age=range(age),
              Subject=unique(Subject))
)

Alternately you could include re.form = ~0 in your predict call: this is equivalent to the (ignored!) level=0 specification in your current code, which only works for lme ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文