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

如何在gtsummary的add_p中为ANCOVA指定协变量?

解决gtsummary中ANCOVA协变量校正的报错问题

报错原因是test_args的语法使用错误:

  • all_tests("ancova")不是gtsummary指定测试参数的正确写法
  • 多传了by = group参数,add_p会自动继承tbl_summary里的分组变量,完全没必要重复指定

下面是修正后的完整代码:

library(dplyr)
library(gtsummary)

set.seed(123) # 加随机种子确保结果可复现
df <- data.frame(
  group = c(2, 1, 1, 2, 1, 2), 
  var1 = rnorm(6, mean = 10, sd = 3), 
  var2 = rnorm(6, mean = 6, sd = 1), 
  var3 = c(0, 4, 1, 3, 1, 1), 
  age = c(50, 32, 26, 46, 38, 62), 
  sex = c(1, 0, 1, 1, 1, 0)
)

df %>% 
  tbl_summary(
    by = group, 
    # 明确指定连续变量,避免原写法误包含var3
    type = list(c(var1, var2, age) ~ "continuous", sex ~ "categorical"),
    statistic = list(
      c(var1, var2, age) ~ "{mean} ± {sd}", 
      var3 ~ "{median} ({p25}, {p75})"
    )
  ) %>%
  add_p(
    test = list(c(var1, var2) ~ "ancova", var3 ~ "chisq.test"),
    # 直接给var1、var2的ANCOVA指定协变量
    test_args = list(c(var1, var2) ~ list(adj.vars = c("age", "sex")))
  )

关键调整点

  1. test_args语法修正:直接针对目标变量(var1、var2)传递协变量参数,不用all_tests这类错误语法
  2. 移除多余参数:删掉by = group,add_p会自动识别分组
  3. 优化变量类型指定:用c(var1, var2, age)明确列出连续变量,避免原写法("var1":"age")不小心包含var3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:42:44