ranchen11 2024-04-26 16:23 采纳率: 22.2%
浏览 113
已结题

使用R语言marginaleffects包进行边际效应图绘制

使用R语言marginaleffects包对logistics回归模型进行边际效应图绘制,自变量存在分类变量和连续变量

  • 写回答

16条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-26 16:23
    关注
    获得0.45元问题酬金

    引自免费微信小程序:皆我百晓生

    在R语言中,要使用marginaleffects包对logistic回归模型进行边际效应图绘制,涉及分类变量和连续变量,可以按照以下步骤操作:

    1. 安装并加载所需库: 确保已安装marginaleffectsggplot2tidyverse库。如果没有,请先安装:

      install.packages(c("marginaleffects", "ggplot2", "tidyverse"))
      

      然后加载这些库:

      library(marginaleffects)
      library(ggplot2)
      library(tidyverse)
      
    2. 拟合logistic回归模型: 假设您的数据集为my_data,因变量为outcome,分类变量为cat_var,连续变量为cont_var。拟合logistic回归模型如下:

      model <- glm(outcome ~ cat_var + cont_var, data = my_data, family = binomial)
      
    3. 计算边际效应: 使用marginaleffects()函数计算所有自变量(包括分类变量)的边际效应。这里将使用by = "cat_var"参数来分别计算每个分类变量水平的边际效应。

      me <- marginaleffects(model, by = "cat_var")
      
    4. 整理数据以便绘图: 将边际效应数据转换为适合绘图的长格式,并添加必要的标签:

      me_plot_data <- me %>%
        summary(by = c("cat_var", "term")) %>%
        group_by(cat_var, term) %>%
        summarize(
          estimate = mean(estimate),
          conf_low = mean(conf.low),
          conf_high = mean(conf.high)
        ) %>%
        mutate(term_label = case_when(
          grepl("cat_var", term) ~ str_replace(term, "cat_var", ""),
          TRUE ~ term
        )) %>%
        ungroup()
      
      me_plot_data$term <- factor(me_plot_data$term, levels = c("cont_var", levels(my_data$cat_var)))
      
    5. 绘制边际效应图: 使用ggplot2创建边际效应图,展示分类变量各水平下的连续变量边际效应及其置信区间:

      ggplot(me_plot_data, aes(x = estimate, y = term_label)) +
        geom_pointrange(aes(xmin = conf_low, xmax = conf_high), shape = 19, size = 0.7) +
        scale_x_continuous(labels = scales::label_percent()) +
        labs(
          x = "Marginal Effect (%)",
          y = NULL,
          title = "Marginal Effects of Continuous Variable on Outcome by Categorical Variable",
          subtitle = paste0("Logistic Regression Model: outcome ~ cat_var + cont_var"),
          caption = "Error bars represent 95% confidence intervals"
        ) +
        theme_bw() +
        theme(
          axis.text.y = element_text(size = 12, hjust = 0.5),
          plot.title = element_text(hjust = 0.5),
          plot.subtitle = element_text(size = 10),
          plot.caption = element_text(size = 8, hjust = 0),
          legend.position = "none"
        )
      

    这段代码首先安装并加载所需的R库,然后拟合logistic回归模型。接着,计算所有自变量的边际效应,并整理数据以便于绘图。最后,使用ggplot2创建边际效应图,展示了分类变量各水平下连续变量边际效应及其置信区间。根据您提供的数据和模型调整上述代码中的变量名和细节即可得到所需的边际效应图。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 创建了问题 4月26日