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

如何在R中计算两组不等样本的中位数差值及95%置信区间

R语言实现两组中位数差值及95%置信区间计算方案

以下方法均支持两组样本量不等的场景,可直接适配你现有的tableone工作流:

方法一:自助法手动实现(灵活性高,可自定义输出格式)

步骤1:加载依赖包

library(tableone)
library(boot)

步骤2:定义自助统计函数,计算两组中位数差值

# 函数可根据需求调整差值的组别顺序,以下示例为pp组减对照组
calc_med_diff <- function(data, indices) {
  sample_df <- data[indices, ]
  med_pp <- median(sample_df$waiting.time[sample_df$group == "pp"], na.rm = TRUE)
  med_ctrl <- median(sample_df$waiting.time[sample_df$group == "对照组"], na.rm = TRUE)
  return(med_pp - med_ctrl)
}

步骤3:运行自助抽样计算置信区间

# 设置随机种子保证结果可复现
set.seed(123)
# R为自助抽样重复次数,需稳定结果可调整为5000/10000
boot_result <- boot(data = data, statistic = calc_med_diff, R = 1000)
# 提取差值点估计与95%百分位置信区间
med_diff <- boot_result$t0
ci_95 <- boot.ci(boot_result, type = "perc")$percent[c(4,5)]
# 格式化为和tableone一致的输出样式
diff_output <- sprintf("%.2f (%.2f, %.2f)", med_diff, ci_95[1], ci_95[2])

步骤4:合并到tableone输出

# 运行你原有代码生成基础统计表格
tab <- print(
  CreateTableOne(vars = "waiting.time", strata = "group", data = data, addOverall = TRUE),
  nonnormal = "waiting.time"
)
# 打印合并结果
print(tab)
cat("中位数差值(pp组-对照组)及95%CI:", diff_output, "\n")

如果需要直接把差值结果嵌入到tableone的表格中导出,可直接修改tab对象的对应行,结合knitr::kable等工具即可生成和参考图一致的展示效果。

方法二:调用现成包直接计算

如果不需要自定义逻辑,可直接用wrs2包的medpb2函数一键计算:

library(wrs2)
# 直接返回中位数差值与95%自助法置信区间
med_result <- medpb2(waiting.time ~ group, data = data, nboot = 1000)
print(med_result)

注意事项

  • 数据存在缺失值时,建议提前清理或在中位数计算时保留na.rm = TRUE参数
  • 差值的组别顺序可根据需求调整,修改calc_med_diff函数的返回值顺序即可
  • 自助抽样重复次数建议不低于1000次,结果精度要求高可适当调高数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:57:03