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

如何使用gtsummary实现ANOVA组间比较并自动添加显著性标记

解决方案

完全可以在gtsummary框架内完成全流程计算与标注,无需切换SPSS手动处理,核心通过add_stat()函数联动emmeans包自动计算带Bonferroni校正的ANOVA事后检验结果,再生成自定义显著性标记即可。

依赖包

需要提前安装加载以下包:

  • gtsummary:生成统计表格
  • emmeans:计算事后检验校正p值
  • tidyverse:数据处理

实现代码

# 加载依赖
library(gtsummary)
library(emmeans)
library(tidyverse)

# --------------------------
# 步骤1:自定义显著性标记生成函数
# 规则可根据需求调整,当前规则:
# 组1 vs 组2显著标注 *
# 组1 vs 组3显著标注 †
# 组2 vs 组3显著标注 ‡
# p值阈值可自定义,如<0.01可加额外标记
# --------------------------
get_bonf_sig <- function(data, variable, by, ...) {
  # 拟合单因素ANOVA模型
  aov_fit <- aov(as.formula(paste0(variable, " ~ ", by)), data = data)
  # 计算Bonferroni校正的两两比较p值
  pw_res <- emmeans(aov_fit, as.formula(paste0("pairwise ~ ", by)), adjust = "bonferroni")
  pw_pvals <- as.data.frame(pw_res$contrasts)$p.value
  
  sig_marks <- c()
  if (pw_pvals[1] < 0.05) sig_marks <- c(sig_marks, "*")
  if (pw_pvals[2] < 0.05) sig_marks <- c(sig_marks, "†")
  if (pw_pvals[3] < 0.05) sig_marks <- c(sig_marks, "‡")
  
  return(paste(sig_marks, collapse = ""))
}

# --------------------------
# 步骤2:生成带标记的最终表格
# 替换dat为你自己的数据集即可
# --------------------------
dat %>%
  tbl_summary(
    by = group_factor,
    # 连续变量输出均值(标准差),和SPSS描述性统计格式一致
    statistic = all_continuous() ~ "{mean} ({sd})"
  ) %>%
  # 添加总体ANOVA的p值
  add_p(test = all_continuous() ~ "anova") %>%
  # 添加两两比较显著性标记列
  add_stat(
    fns = all_continuous() ~ get_bonf_sig,
    new_col_name = "sig",
    label = list(sig ~ "两两显著性")
  ) %>%
  # 自定义表头与脚注,匹配论文发表要求
  modify_header(
    sig ~ "显著性标记",
    p.value ~ "总体p值"
  ) %>%
  modify_footnote(
    sig ~ "* 组1与组2比较p<0.05;† 组1与组3比较p<0.05;‡ 组2与组3比较p<0.05,所有p值经Bonferroni校正"
  )

自定义调整说明

  • 若需要将标记直接附在特征名或统计量后,无需单独列,可通过modify_table_styling()函数将标记列与目标列合并即可
  • 若需要调整校正方法,将adjust = "bonferroni"替换为"tukey"、"holm"等参数即可匹配不同检验要求
  • 显著性阈值可自由调整,如增加p<0.01对应**的规则,只需修改get_bonf_sig函数内的判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:54:07