如何在tbl_regression(gtsummary)中正确显示1-HR的置信区间顺序?
解决tbl_regression生成疫苗效力(VE)表格时置信区间顺序反转的问题
问题核心在于:当你用1 - HR计算VE时,HR的置信区间上下限会对应VE的上下限反转——HR的下限对应VE的上限,HR的上限对应VE的下限。直接用estimate_fun仅转换点估计,不会调整CI的顺序,导致显示的CI顺序错误。
正确解决方案
通过modify_table_body先调整估计值和CI的数值及顺序,再格式化输出:
library(gtsummary) # 假设已拟合Cox模型m1_cox tbl_ve <- tbl_regression(m1_cox, exponentiate = TRUE) %>% # 修改表格主体,转换为VE并调整CI顺序 modify_table_body( ~ .x %>% mutate( estimate = 1 - estimate, # 转换点估计为VE # 交换CI上下限并转换为VE的CI:HR上限→VE下限,HR下限→VE上限 temp = conf.low, conf.low = 1 - conf.high, conf.high = 1 - temp ) %>% select(-temp) ) %>% # 格式化所有数值保留2位小数 modify_fmt_fun( columns = c(estimate, conf.low, conf.high), fmt_fun = ~ round(.x, 2) ) %>% # 修改表头为疫苗效力 modify_header(estimate = "**疫苗效力(VE)**")
步骤解释
tbl_regression(m1_cox, exponentiate = TRUE):先生成HR及其CI的基础表格(这一步是必要的,因为Cox模型默认输出系数,exponentiate参数将系数转换为HR)。modify_table_body:- 将
estimate字段转换为1 - HR,得到VE的点估计值。 - 通过临时变量交换CI上下限,并转换为VE的CI:
1 - HR上限作为VE的下限,1 - HR下限作为VE的上限,确保CI顺序正确。
- 将
modify_fmt_fun:统一格式化estimate、conf.low、conf.high字段的数值,保留2位小数。modify_header:将表头修改为更直观的“疫苗效力(VE)”,提升表格可读性。
这样处理后,表格会显示正确顺序的VE及其置信区间(下限CI - 上限CI)。
内容的提问来源于stack exchange,提问作者Tamara Barusová
相关产品推荐
相关产品推荐

