代码之家  ›  专栏  ›  技术社区  ›  KIM

使用sJplot::Plot_mode为多个结果绘制多个交互图

  •  0
  • KIM  · 技术社区  · 2 年前

    我想使用从多个结果数据生成多个交互图 sjPlot::plot_model .

    例如,我正在使用一个数据集 MathAchive 从…起 nlme 并加载这些包

    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::映射

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

    但我在使用时收到错误 purrr::映射 喜欢下面

    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"))
    

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

    1 回复  |  直到 2 年前
        1
  •  1
  •   stefan    2 年前

    解决问题的一种选择是申请 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