在 gsummary 表中,我想显示 A 组和 B 组之间几个变量差异的 p 值,并根据年龄和性别进行校正。我发现here我可以在
gtsummary::add_p
中使用ANCOVA测试。但是,我不知道如何在 test_args
中指定我的协变量“年龄”和“性别”。
在下面的示例中,我想计算 var1 和 var2 的 ancova p 值(根据年龄和性别进行校正)。 Var3 是一个具有级别的变量,我想对其执行 chisq.test。
library(dplyr)
library(gtsummary)
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,
type=list(c("var1":"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"), test_args = list(all_tests("ancova") ~ list(by = group, adj.vars = c("age", "sex"))))
我收到以下错误
'...' must be empty
Problematic argument: test_args = (...)
我发现了类似的问题here,但不幸的是没有得到解答。非常感谢任何帮助!
要获得调整后的结果,您需要使用
add_difference()
而不是 add_p()
。差异函数仍将为您提供 p 值,但您需要执行额外的步骤来隐藏差异及其置信区间。
我还通过缩小表格以仅汇总需要调整计算的变量来进行简化。您始终可以使用
tbl_stack()
组合使用 add_p()
创建的结果(而不是 add_difference()
。
library(gtsummary)
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(
include = c("var1", "var2"),
by = group,
type= c("var1", "var2") ~ 'continuous',
statistic = c("var1", "var2") ~ "{mean} ± {sd}"
) %>%
add_difference(
test = c("var1", "var2") ~ "ancova",
adj.vars = c("age", "sex")
) %>%
# hide the difference and ci columns
modify_column_hide(any_of(c("estimate", "ci", "conf.low", "conf.high"))) %>%
# convert to kable to display on stackoverflow
as_kable()
特点 | 1,N = 3 | 2,N = 3 | p 值 |
---|---|---|---|
var1 | 12.10±4.00 | 11.02±2.41 | 0.3 |
var2 | 6.79±1.18 | 5.96±0.43 | 0.2 |
创建于 2024-03-10,使用 reprex v2.1.0