在绘制 lmer 模型(在 R 中)时,如何包含数据框中的数据?

问题描述 投票:0回答:1

1 时间而不是时间 4

我计算了一个多级模型并包括(以及其他 IV),

time4
time^4
。现在,我想绘制时间对我的 DV 的影响。但是,我想包含模型中未包含的变量“时间”。基本上,我只需要更改轴标签...... 生成的图表应如下所示:

plot_model(rq1_model2, type = "pred", show.values = TRUE)

Perceived Learning predicted by time^4 (Graph, Picture)

我只想包含固定效应并保持模型简单。

我该怎么做?

2 在图中添加第二个图表

此外,我想在同一窗口/图中包含第二个类似模型以进行比较。第二个图表只能描绘从 0 开始的时间值(第一个值的时间为负值)。 实际上,该模型仅包含 time4-values 的值,指的是从 0 开始的时间值。

感谢您提前提供任何想法!

3 我已经尝试过的

plot_model(rq1_model2, type = "pred", show.values = TRUE)

但我不知道如何将数据框中的数据添加到模型中。

我还尝试将变量 time 包含在“^4”而不是 time4 中(我之前计算了变量)。然而,结果并不正确。

我的型号:

rq1_model2 <- lmerTest::lmer(proc_learn ~ ... + time4 + (1| code),
                             data = data, REML = FALSE)

另一种选择是仅包含数据框中的数据。但随后我仍然需要获取回归结果并插入变量时间。我可以看到将回归结果导出到数据框中并添加可变时间。但是,我不知道如何获得回归图。

一个最小的可重复示例(感谢@Ben Bolker)

library(lmerTest)
ss <- transform(sleepstudy, Days4 = Days^4)
m <- lmer(Reaction ~ Days4 + (1|Subject), ss) 
r ggplot2 plot regression mlm
1个回答
0
投票

恐怕这相当复杂,但它可能会达到你想要的效果。

设置示例,拟合两个模型

library(lmerTest)
ss <- within(sleepstudy,
{
    Dayminus <- Days - 4
    Days4 <- Dayminus^4
})
m1 <- lmer(Reaction ~ Days4 + (1|Subject), ss)
m2 <- update(m1, subset = (Dayminus > 0))

设置新的数据框进行预测

您可以根据原始数据进行预测,但如果您的原始数据稀疏/无序等,这会更好。您还必须将模型中的任何非焦点值设置为它们的 mean 值(或无论您想使用什么参考值)。

library(ggplot2)
pframe <- with(ss,
               data.frame(Dayminus = seq(min(Dayminus), max(Dayminus),
                                         length.out = 101)))
pframe <- transform(pframe, Days4 = Dayminus^4)

做出预测;获取SE并构建CI

设置一个效用函数,因为我们必须做同样的事情两次。

mkpred <- function(m) {
    pp <- predict(m, newdata = pframe, se.fit = TRUE, re.form = NA)
    pframe <- with(pp,
                   cbind(pframe, ## uses external pframe
                         data.frame(pred = fit,
                                    lwr = fit - 1.96*se.fit,
                                    upr = fit + 1.96*se.fit)))
    return(pframe)
}
pred1frame <- mkpred(m1)
pred2frame <- mkpred(m2)
## restrict predictions for the second model to positive values of 'Dayminus'
pred2frame <- pred2frame[pred2frame$Dayminus>0,]

创建情节

为每个模型画一条线和一条半透明丝带。 (如果您有多个模型,或者如果您想要自动图例,则需要将两个数据框与一个因子变量进行行绑定,该变量表示

model 1
model 2
...)

ggplot(pred1frame, aes(Dayminus, pred)) +
    geom_line() +
    geom_line(data=pred2frame, col = "red") +
    geom_ribbon(aes(ymin=lwr, ymax = upr), alpha = 0.2, color=NA, fill = "black") +
    geom_ribbon(data =pred2frame,
                aes(ymin=lwr, ymax = upr), alpha = 0.2, color=NA, fill = "red") 

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.