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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:12:36