能否在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
相关产品推荐
相关产品推荐

