如何在gtsummary的tbl_regression表中报告小于0.001的精确p值?
在gtsummary的tbl_regression中显示精确极小p值
要解决tbl_regression里极小p值被自动替换为<0.001的问题,我们可以通过自定义p值格式化函数完全控制显示格式,绕过style_pvalue的限制。下面是具体实现方案:
1. 编写自定义p值格式化函数
你可以根据需求定制逻辑,比如对极小p值用科学计数法展示精确值,常规p值保留指定位数:
# 自定义p值格式:极小值用科学计数法(6位有效数字),常规值保留3位 custom_pvalue <- function(x) { dplyr::case_when( x < 0.001 ~ sprintf("%.6e", x), # 科学计数法输出精确值 TRUE ~ gtsummary::style_pvalue(x, digits = 3) # 常规p值按默认风格处理 ) }
如果想要所有p值统一用科学计数法显示,函数可以更简洁:
# 所有p值用科学计数法显示(5位有效数字) custom_pvalue_all_sci <- function(x) sprintf("%.5e", x)
2. 将自定义函数应用到tbl_regression
有两种方式把这个函数应用到你的回归表格中:
方式一:生成表格时直接指定
调用tbl_regression()时,通过pvalue_fun参数传入自定义函数:
library(gtsummary) data(trial) # 拟合示例模型 model <- glm(response ~ trt + age + marker, data = trial, family = binomial) # 生成表格并应用自定义p值格式 tbl_regression( model, pvalue_fun = custom_pvalue # 传入自定义函数 )
方式二:修改已生成的表格
如果已经生成了默认表格,可用modify_table_styling()修改p值列的格式:
# 先生成默认表格 tbl <- tbl_regression(model) # 修改p值列的显示格式 tbl %>% modify_table_styling( columns = p.value, # 指定要修改的列 fmt_fun = custom_pvalue # 应用自定义格式化函数 )
为什么不用style_pvalue?
style_pvalue()的默认逻辑是当p值小于threshold = 0.001时自动显示为<0.001,且digits参数只能控制常规p值的显示位数,无法输出极小p值的精确数值。自定义函数则完全打破了这个限制,让你可以按需自由定义显示格式。
内容的提问来源于stack exchange,提问作者GMJ
相关产品推荐
相关产品推荐

