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

使用gtsummary执行ANCOVA时调整差值符号/方向异常问题

问题解答

核心原因是两个分析的对比方向完全相反:

  • lm()模型默认以Sex因子的第一个水平作为参考组,输出的效应值是「第二个水平 - 第一个水平」的差值(比如假设Sex水平是Female、Male,lm算的是Male - Female的差异)。
  • gtsummary的add_difference()函数,当你设置by = Sex时,默认对比方向是第一个分组水平减去第二个分组水平(也就是Female - Male),刚好和lm()的对比方向反过来,所以最终估计值的符号完全相反,但绝对值一致。

验证方法

你可以先查看Sex的因子水平顺序,确认两组的对比逻辑:

levels(df$Sex)

对比输出的水平顺序,就能明确两个方法各自的对比方向。

解决方法

如果想让gtsummary的结果和lm()保持一致,有两种方式:

  1. 在add_difference()中指定参考组为第二个水平:
df |>
  dplyr::select(FMD_chg,V2_FMD_Base, BMI, Age, Sex)  |>
  tbl_summary(
    by = Sex,
    include = -c(V2_FMD_Base,BMI, Age),
    missing = "no",
    statistic = all_continuous() ~ "{mean} ({sd})",digits = list(~c(2,2))) |>
  add_difference(adj.vars = c(V2_FMD_Base,Age, BMI), test.args = list(ref = 2)) |>
  bold_labels()
  1. 调整Sex的因子水平顺序,让lm()和gtsummary的参考组一致:
df$Sex <- relevel(df$Sex, ref = "你想要的参考组水平")

内容的提问来源于stack exchange,提问作者CamCaan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:34:56