我计算了一个多级模型并包括(以及其他 IV),
time4
为 time^4
。现在,我想绘制时间对我的 DV 的影响。但是,我想包含模型中未包含的变量“时间”。基本上,我只需要更改轴标签......
生成的图表应如下所示:
plot_model(rq1_model2, type = "pred", show.values = TRUE)
我只想包含固定效应并保持模型简单。
我该怎么做?
此外,我想在同一窗口/图中包含第二个类似模型以进行比较。第二个图表只能描绘从 0 开始的时间值(第一个值的时间为负值)。 实际上,该模型仅包含 time4-values 的值,指的是从 0 开始的时间值。
感谢您提前提供任何想法!
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)
另一种选择是仅包含数据框中的数据。但随后我仍然需要获取回归结果并插入变量时间。我可以看到将回归结果导出到数据框中并添加可变时间。但是,我不知道如何获得回归图。
library(lmerTest)
ss <- transform(sleepstudy, Days4 = Days^4)
m <- lmer(Reaction ~ Days4 + (1|Subject), ss)
恐怕这相当复杂,但它可能会达到你想要的效果。
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)
设置一个效用函数,因为我们必须做同样的事情两次。
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")