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

tbl_regression生成Logistic回归OR置信区间与SPSS等结果差异咨询

gtsummary包Logistic回归输出置信区间差异问题

问题场景

使用如下代码调用tbl_regression生成单因素Logistic回归表:

glm.fit.TAG=glm(asian2$sICH ~ asian2$TAG, family=binomial) #mô hình 1
TAGtable <- tbl_regression(glm.fit.TAG, exponentiate = TRUE)%>%
 add_glance_source_note()

代码运行得到的展示结果为:OR=1.92,95%CI 1.41-2.67。
该结果与SPSS、R中logRegBin函数的输出存在小幅差异,后两者结果完全一致:OR=1.92,95%CI 1.40-2.64。上述差异在使用gtsummary包生成所有回归表时均会出现,初步推测为gtsummary计算机制中的舍入规则差异导致。
核心疑问:若真实置信区间边界非常接近1,gtsummary是否会返回错误结果,需要对应实用解决方案。

原因与实用建议

  • 该类小幅差异不属于计算错误,不会出现CI边界接近1时返回本质错误结果的情况。差异来源分为两部分:一是不同工具默认的置信区间计算方法存在细微区别(比如部分工具用剖面似然法计算CI,部分用Wald法),二是gtsummary默认的舍入规则和SPSS、logRegBin不同,默认不是对CI上下界直接按固定小数位四舍五入,而是做了格式化适配,才会出现末位数字的差异。
  • 验证底层数值一致性:直接调用as_tibble(TAGtable)提取表格存储的未舍入原始值,可观测到底层计算结果和其他工具的差异远小于展示值的差异,gtsummary不会修改传入的glm模型对象的原始计算结果,所有差异均来自展示层的格式化处理。
  • 对齐其他工具的输出格式:如果需要让gtsummary的展示结果和SPSS、logRegBin完全一致,可在tbl_regression中显式指定固定小数位的舍入规则,示例代码如下:
    TAGtable <- tbl_regression(
      glm.fit.TAG, 
      exponentiate = TRUE,
      estimate_fun = ~style_number(.x, digits = 2),
      ci_fun = ~style_number(.x, digits = 2)
    ) %>% add_glance_source_note()
    
    强制对OR值、CI上下界统一按2位小数四舍五入后,输出结果即可和其他工具对齐。
  • 针对CI边界接近1的特殊场景,可通过两种方式规避展示歧义:
    • 自定义CI计算逻辑:直接从原始glm对象提取你信任的CI计算结果(比如用confint()计算剖面似然CI,或confint.default()计算Wald CI),通过add_ci()函数传入自定义结果覆盖默认计算值,完全掌握CI的计算逻辑。
    • 增加边界值展示精度:对边界接近1的结果,将CI的展示小数位调整为3位,避免因2位小数舍入导致的“CI跨1/不跨1”的定性判断偏差。
  • 快速校验方法:对存疑的结果,直接运行summary(glm.fit.TAG)查看模型原始输出的系数、标准误、Wald检验结果,和gtsummary存储的原始值做对比,即可快速确认是否存在计算错误。

内容的提问来源于stack exchange,提问作者Nhân Võ Thế

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:48:56