如何在 lmer 拟合的三向交互作用下使用 R 预测主预测器的斜率
Posted
技术标签:
【中文标题】如何在 lmer 拟合的三向交互作用下使用 R 预测主预测器的斜率【英文标题】:How to use R to predict slope of the main predictor under an three-way interaction fitted by lmer 【发布时间】:2021-12-08 17:32:18 【问题描述】:我有一个线性混合效应模型,具有由以下代码拟合的三向交互:
m <- lmer(cog ~ PRS*poly(Age, 2, raw=T)*Score
+ gender + Edu + fam + factor(Time)
+ (1|family/DBID),
data = test_all, REML = F)
在此模型中,PRS、分数和年龄的多项式具有两度(线性 + 二次)之间存在三向交互作用。对于这种三向交互,我怎样才能获得一个变量的边际效应(斜率),以其他变量为条件?例如,当年龄 = 50 且得分 = 1 时,PRS 的斜率是多少?
其次,我尝试使用以下代码来绘制这种三向交互:
plot <- ggpredict(m, ci.lvl=0.95, c("PRS [all]", "Age [60, 65, 70, 75, 80]", "Score[0, 0.321, 0.695, 1.492, 1.914, 3.252]"))
plot(m)
交互图最终显示,但 R 没有给出置信区间。错误信息是Error: Confidence intervals could not be computed.
如何用置信区间绘制这种三向交互?
【问题讨论】:
您可以通过添加minimal reproducible example 来提高在这里找到帮助的机会。添加 MRE 和所需输出的示例(以代码形式,而不是表格和图片)使其他人更容易找到和测试您的问题的答案。这样你就可以帮助别人帮助你!附言这里是a good overview on how to ask a good question 请提供足够的代码,以便其他人更好地理解或重现问题。 你试过sjPlot::plot_model(m, type="int")
吗?它使用 ggplot2 和 geom_ribbon 来显示置信带,我发现这个函数对于可视化交互非常有用。 Afaik,它也适用于 3 向交互和 lmer
-models 但我可能从未尝试过将两者结合起来。
【参考方案1】:
您可以使用the marginaleffects
package 来执行此操作(免责声明:我是
维护者):
library(marginaleffects)
library(lme4)
mod <- lmer(mpg ~ hp * am * vs + (1 | cyl), data = mtcars)
mfx <- marginaleffects(mod, newdata = typical(vs = 0, am = 1, cyl = 4))
summary(mfx)
## Average marginal effects
## type Term Effect Std. Error z value Pr(>|z|) 2.5 % 97.5 %
## 1 response am 4.10167 2.13391 1.9221 0.0545884 -0.08072 8.28406
## 2 response hp -0.03724 0.01378 -2.7016 0.0069001 -0.06426 -0.01022
## 3 response vs -0.61237 3.52755 -0.1736 0.8621833 -7.52625 6.30151
##
## Model type: lmerMod
## Prediction type: response
【讨论】:
以上是关于如何在 lmer 拟合的三向交互作用下使用 R 预测主预测器的斜率的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用lm函数拟合多元线性回归模型假定预测变量之间有交互作用R语言使用effects包的effect函数查看交互作用对于回归模型预测响应变量的影响
R语言使用lm函数拟合多元线性回归模型假定预测变量没有交互作用(Multiple linear regression)
R语言使用lm函数拟合多元线性回归模型假定预测变量之间有交互作用(Multiple linear regression with interactions)
R语言lm函数拟合多元线性回归模型(无交互作用)并诊断模型diagnostics使用plot函数打印回归模型的Q-Q图残差拟合图标度-位置图残差与杠杆关系图