r语言 - 绘制来自 lmer 纵向分析的预测值



我正在使用lme4包(lmer function(分析一些纵向数据,并带有3 Levels:嵌套在家庭中的个体中的测量点。我对围绕特定生活事件的线性和非线性变化曲线感兴趣。我的模型有许多时间预测因子(指示事件发生前后的线性变化,并指示事件发生前后的非线性变化(即平方时间变量(。此外,我有几个不随时间变化的 2 级预测因子(即人格特质(和一些控制变量(例如年龄、性别(。到目前为止,我没有包括任何随机斜率或跨层次的交互。

这是我的模型代码:

model.RI <- lmer(outcome ~ time + female_c + age_c + age_c2 + preLin + preLin.sq + postLin + postLin.sq + per1.c + per2.c + per3.c + per4.c + per5.c + (1 | ID) +  (1 | House))

结果 = 我的因变量

time = year 1, year 2, year 3 ... (until year 9);此变量表示类似测试效果的内容

female_c = gender centered
age_c = age centered
age_c2 = age squared centered

preLin = time variable表示事件的时间(此变量在事件发生后为 0,为 -1,例如事件前一年,事件前两年为 -2 等(

preLin.sq = squared values of preLin

postLin = time variable表示事件发生后的时间(此变量在事件发生前为 0,在事件发生后增加;例如,在事件发生一年后为 +1(

postLin.sq = squared values of postLin
per1.c until per5.c = personality traits on Level 2 (centered)
ID = indicating the individuum
House = indicating the household

我想知道如何绘制这个lmer模型的预测值(例如,使用 ggplot2?我已经使用 R 中的method=gam绘制了变化曲线。这是一种相当数据驱动的方法,无需预先定义曲线是线性的还是二次的或其他什么,即可检查数据。我现在想检查我的参数化 lmer 模型是否与我已经拥有的数据驱动gam-plot相当。你有什么建议如何做到这一点吗?

我很乐意在这方面得到一些帮助!也请随时询问我对我想做什么的解释是否不够准确!

多谢!

点击此链接: 这就是我的 gam 图的样子,我希望在绘制我的 lmer 模型的预测值时得到类似的东西!

您可以使用 ggeffects-package 中的ggpredict()-函数。如果你想绘制时间的预测值(preLin(,你只需写:

ggpredict(model.RI, "preLin")

该函数返回一个数据框(请参阅文章(,您可以在 ggplot 中使用它,但您也可以直接绘制结果:

ggpredict(model.RI, "preLin") %>% plot()

p <- ggpredict(model.RI, "preLin")
plot(p)

您也可以使用 sjPlot-包,但是,对于边际效应/预测值,内部的sjPlot::plot_model()函数只是调用ggeffects::ggpredict(),因此结果基本上是相同的。

模型的另一个注意事项是:如果您有纵向数据,则还应将时间变量作为随机斜率包括在内。我不确定postLin如何直接引用preLin,但如果preLin捕获了您的所有测量值,您至少应该像这样编写模型:

model.RI <- lmer(
outcome ~ time + female_c + age_c + age_c2 + preLin + preLin.sq + 
postLin + postLin.sq + per1.c + per2.c + per3.c + per4.c + per5.c + 
(1 + preLin | ID) +  (1 + preLin | House)
)

如果你还假设每个人的二次趋势(ID(,你甚至可以将平方项添加为随机斜率。

正如您的图例建议使用样条曲线一样,您也可以尝试以下方法:

library(splines)
model.RI <- lmer(
outcome ~ time + female_c + age_c + age_c2 + bs(preLin) 
postLin + postLin.sq + per1.c + per2.c + per3.c + per4.c + per5.c + 
(1 + preLin | ID) +  (1 + preLin | House)
)
p <- ggpredict(model.RI, "preLin")
plot(p)

样条曲线的示例也在我上面提到的网站上进行了演示。

编辑:另一个注意事项与嵌套有关:您目前正在对完全交叉或交叉分类的模型进行建模。如果它是完全嵌套的,随机部分将如下所示:

... + (1 + preLin | House / ID)

(另请参阅此小代码示例(。

相关内容

  • 没有找到相关文章

最新更新