You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用marginaleffects在同图绘制自变量增减1个标准差的边际效应

合并边际效应图并优化标签(基于marginaleffects包)

问题说明

需要在同一张图中展示自变量hp增加1个标准差和减少1个标准差时的边际效应,已通过marginaleffects包实现分图绘制,现需合并图形并优化标签可读性。

示例模型与基础计算

首先构建线性模型并计算hp的标准差:

library(marginaleffects)
library(ggplot2)

# 构建模型
mod <- lm(mpg ~ hp * disp + factor(am), data = mtcars)

# 计算hp的标准差
sd(mtcars$hp)
# 输出结果:[1] 68.56287

原分图实现代码

之前已分别绘制两种情况的边际效应图:

# HP增加1个标准差的边际效应图
plot1 <- plot_comparisons(mod, variables = list(hp = 68.56287), condition = "disp")
plot1

# HP减少1个标准差的边际效应图
plot2 <- plot_comparisons(mod, variables = list(hp = -68.56287), condition = "disp")
plot2

合并图形并优化标签的解决方案

通过获取绘图数据框,合并后用ggplot重新绘制,同时优化标签:

# 获取绘图数据(不直接绘图)
plot1_data <- plot_comparisons(mod, variables = list(hp = 68.56287), condition = "disp", draw = FALSE)
plot2_data <- plot_comparisons(mod, variables = list(hp = -68.56287), condition = "disp", draw = FALSE)

# 添加有实际意义的分组标签
plot1_data$hp_change <- "HP增加1个标准差"
plot2_data$hp_change <- "HP减少1个标准差"

# 合并数据
combined_data <- rbind(plot1_data, plot2_data)

# 绘制优化后的合并图
ggplot(combined_data, aes(x = disp, y = estimate, color = hp_change, fill = hp_change)) +
  geom_line(linewidth = 1) +
  # 置信区间丝带,取消颜色映射避免与线条冲突
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high, color = NULL), alpha = 0.2) +
  # 自定义标签
  labs(
    x = "排量(disp)",
    y = "边际效应估计值",
    color = "HP的变化",
    fill = "HP的变化",
    title = "HP增减1个标准差时的边际效应随排量的变化",
    subtitle = "基于mtcars数据集的线性回归模型"
  ) +
  theme_minimal()

标签优化要点

  • 用有实际含义的文本替代原有的数字分组标识,让图例直观易懂
  • 通过labs()函数统一自定义坐标轴、图例、标题的文本内容
  • 使用theme_minimal()简化图表风格,聚焦核心信息

内容的提问来源于stack exchange,提问作者Victor Shin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:25:17