如何为匹配样本的月度支出折线图添加配对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
相关产品推荐
相关产品推荐

