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

如何为匹配样本的月度支出折线图添加配对Bootstrap置信区间

为匹配样本的月度支出趋势折线图添加Bootstrap置信区间阴影

核心思路

利用配对Bootstrap得到的各组月度均值分布,批量计算分位数置信区间,再通过ggplot2的geom_ribbon自动绘制阴影区域,无需手动逐个时间点处理。

步骤与代码示例

假设你已经完成配对Bootstrap重采样,得到了包含所有重采样样本中处理组/对照组月度支出均值的数据集。以下是完整的处理与绘图流程:

1. 整理Bootstrap结果为长格式

先将宽格式的Bootstrap结果转换为长格式,方便后续分组计算置信区间:

library(tidyr)
library(dplyr)

# 假设boot_results是你的配对Bootstrap输出,列名格式为treat_month1、control_month2等
boot_long <- boot_results %>%
  pivot_longer(
    cols = everything(),
    names_to = c("group", "month"),
    names_sep = "_month",
    values_to = "boot_mean"
  ) %>%
  mutate(month = as.integer(month))

2. 计算各组月度置信区间

对每个组别、每个月份,基于Bootstrap均值分布计算95%置信区间的上下限:

ci_data <- boot_long %>%
  group_by(group, month) %>%
  summarise(
    lower_ci = quantile(boot_mean, 0.025),
    upper_ci = quantile(boot_mean, 0.975),
    .groups = "drop"
  )

3. 合并基础均值与置信区间数据

将原始匹配样本的月度均值(用于绘制折线)与置信区间数据合并:

# 假设mean_data是你已有的基础均值数据,结构为group、month、mean_expend
plot_data <- mean_data %>%
  left_join(ci_data, by = c("group", "month"))

4. 绘制折线图+置信区间阴影

用ggplot2一次性完成折线与阴影的绘制:

library(ggplot2)

ggplot(plot_data, aes(x = month, y = mean_expend, color = group)) +
  # 绘制置信区间阴影,alpha控制透明度
  geom_ribbon(
    aes(ymin = lower_ci, ymax = upper_ci, fill = group),
    alpha = 0.2,
    color = NA  # 去掉阴影边框,避免干扰折线
  ) +
  # 绘制趋势折线
  geom_line(linewidth = 1) +
  # 图表美化
  labs(
    x = "月份",
    y = "月度平均支出",
    color = "组别",
    fill = "组别"
  ) +
  theme_minimal()

关键说明

  • geom_ribbon会自动根据每个组、每个月份的lower_ci和upper_ci值批量生成阴影区域,无需手动逐个时间点添加。
  • 若你的Bootstrap结果是boot包输出的t矩阵,可先通过as.data.frame(boot_obj$t)转换为数据框,再按上述流程处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:03:19