如何在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"))) )
关键调整点
test_args语法修正:直接针对目标变量(var1、var2)传递协变量参数,不用all_tests这类错误语法- 移除多余参数:删掉
by = group,add_p会自动识别分组 - 优化变量类型指定:用
c(var1, var2, age)明确列出连续变量,避免原写法("var1":"age")不小心包含var3
内容的提问来源于stack exchange,提问作者Evy
相关产品推荐
相关产品推荐

