使用 sJplot::plot_model 绘制多个交互图以获得多个结果

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

我想使用

sjPlot::plot_model
从多个结果数据生成多个交互图。

例如,我正在使用来自

nlme
的数据集 MathAchive 并加载这些包

library(nlme)
library(lme4)
library(sjPlot)
library(broom.mixed)

我的目标是:

  • 对结果 MatchAch 和 SES 逐一运行回归模型
  • 顶部在模型中包含少数族裔和性别之间的互动
  • 然后绘制结果 MatchAch 和 SES 的交互作用

我想要的结果应该如下所示,但我想应用 DRY 原则并且更喜欢使用

purrr::map

mod_math <- 
  lmer(MathAch ~ Minority*Sex + (1| School), 
             data = MathAchieve) 
plot_model(mod_math, type = "int")

mod_ses <- 
  lmer(SES ~ Minority*Sex + (1| School), 
       data = MathAchieve) 
plot_model(mod_ses, type = "int")

我可以使用

purrr::map

获得多个整洁的结果
MathAchieve |> 
  select(MathAch, SES) |>
  map(~ lmer(.x ~ Minority*Sex + (1| School), 
             data = MathAchieve)) |>
  map(~tidy(.x))

但是我在使用

purrr::map
时收到错误,如下所示

MathAchieve |> 
  select(MathAch, SES) |>
  map(~ lmer(.x ~ Minority*Sex + (1| School), 
             data = MathAchieve)) |>
  map(~ plot_model(.x, type = "int"))

MathAchieve |> 
  select(MathAch, SES) |>
  map(~ lmer(.x ~ Minority*Sex + (1| School), 
             data = MathAchieve) |>
        plot_model(., type = "int"))

我应该怎样做才能从具有多个结果的模型中获得多个交互图?

r purrr lme4 sjplot
1个回答
0
投票

解决问题的一个选项是将

map
应用于结果变量名称的向量,并使用
reformulate
创建公式:

library(nlme)
library(lme4)
library(sjPlot)
library(broom.mixed)
library(purrr)

c("MathAch", "SES") |>
  map(~ lmer(
    reformulate("Minority * Sex + (1 | School)", .x),
    data = MathAchieve
  )) |>
  map(~ plot_model(.x, type = "int")) |> 
  set_names(c("MathAch", "SES"))
#> $MathAch

#> 
#> $SES

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