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

能否在gtsummary中用tbl_summary的add_p或add_difference做单侧t检验

gtsummary单侧t检验实现方法

完全可以通过add_p()和add_difference()两个函数自定义检验逻辑,实现单侧t检验的计算与结果展示,具体实现方法如下:

方法1:通过add_p()实现单侧t检验

add_p()支持传入自定义检验函数,只需封装好单侧t检验的逻辑并返回p值即可调用,示例代码如下:

# 加载依赖包
library(gtsummary)

# 自定义单侧两独立样本t检验函数
one_side_t_test <- function(data, variable, by, ...) {
  # 拆分两组数据
  group_vals <- split(data[[variable]], data[[by]])
  # 执行单侧t检验,alternative可根据需求修改为"less"或"greater"
  test_res <- t.test(group_vals[[1]], group_vals[[2]], alternative = "greater")
  # 返回p值供gtsummary调用
  return(test_res$p.value)
}

# 生成汇总表并添加单侧t检验p值
trial %>%
  select(age, marker, trt) %>%
  tbl_summary(by = trt) %>%
  add_p(test = list(all_continuous() ~ "one_side_t_test"))

方法2:通过add_difference()实现单侧t检验

如果需要同时展示组间差值、单侧置信区间和p值,可以通过add_difference()自定义函数实现,要求函数返回包含estimate(差值)、conf.low(置信区间下限)、conf.high(置信区间上限)、p.value(p值)的结构即可,示例代码如下:

# 自定义带差值和置信区间的单侧t检验函数
one_side_t_diff <- function(data, variable, by, ...) {
  group_vals <- split(data[[variable]], data[[by]])
  test_res <- t.test(group_vals[[1]], group_vals[[2]], alternative = "greater", conf.level = 0.95)
  
  return(
    tibble::tibble(
      estimate = unname(diff(test_res$estimate)),
      conf.low = test_res$conf.int[1],
      conf.high = test_res$conf.int[2],
      p.value = test_res$p.value
    )
  )
}

# 生成汇总表并添加单侧t检验的差值与p值
trial %>%
  select(age, marker, trt) %>%
  tbl_summary(by = trt) %>%
  add_difference(test = list(all_continuous() ~ "one_side_t_diff"))

注意事项

  • 可根据研究假设调整t.test()中的alternative参数,"less"对应备择假设为组1均值小于组2,"greater"对应备择假设为组1均值大于组2
  • 如需实现配对单侧t检验,只需在t.test()中新增paired = TRUE参数即可
  • 自定义函数返回的结果会自动适配gtsummary的默认格式规则,无需额外调整展示逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:15:03