如何在R的tbl_svysummary表中添加卡方与t检验置信区间
问题描述
我用tbl_svysummary基于加权数据集Beta18.1Pond生成了描述性分析表Tabla2,并通过add_p()为连续变量添加svy.t.test的P值、为分类变量添加svy.adj.chisq.test的P值,代码如下:
Tabla2 <- tbl_svysummary(data = Beta18.1Pond, by = CTBC, missing = "no", digits = list(all_continuous() ~ c(2,2)), include = c(SR, QS23, QS23R, QSSEXO, QS500, QS501U, QS501C, QS50328, QS505A, QS505B, QS505C, QS505D, QS506, QS2425N, QS25AA, QS26, QS27R, QS102, QS109, HV270, Region, HV025, HV009, HV115, CTBC)) %>% add_p(test = list(all_continuous() ~ "svy.t.test", all_categorical() ~ "svy.adj.chisq.test"), include = everything()) %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Conocimiento sobre tuberculosis pulmonar**") %>% modify_caption("**Tabla 2. Análisis descriptivo**") Tabla2
现在需要在表格中添加卡方检验对应的比例差置信区间,以及t检验的均值差置信区间,该怎么实现?
解决方案
要实现这个需求,可使用gtsummary包的add_difference()函数,它专门用于计算组间差异的置信区间,且支持加权调查数据的统计方法:
1. 核心逻辑
- 分类变量:指定
test = "svy.prop.test",计算加权组间比例差及其95%置信区间,与svy.adj.chisq.test的统计逻辑匹配;若需调整协变量,可通过adj.vars参数指定。 - 连续变量:指定
test = "svy.t.test",计算加权组间均值差及其95%置信区间,与已添加的t检验P值对应。
修改后的完整代码
将add_difference()加入管道流程,同时调整表头让表格结构更清晰:
Tabla2 <- tbl_svysummary(data = Beta18.1Pond, by = CTBC, missing = "no", digits = list(all_continuous() ~ c(2,2)), include = c(SR, QS23, QS23R, QSSEXO, QS500, QS501U, QS501C, QS50328, QS505A, QS505B, QS505C, QS505D, QS506, QS2425N, QS25AA, QS26, QS27R, QS102, QS109, HV270, Region, HV025, HV009, HV115, CTBC)) %>% # 添加P值 add_p(test = list(all_continuous() ~ "svy.t.test", all_categorical() ~ "svy.adj.chisq.test"), include = everything()) %>% # 添加组间差异置信区间 add_difference(test = list(all_continuous() ~ "svy.t.test", all_categorical() ~ "svy.prop.test"), include = everything(), digits = all_difference() ~ c(2,2)) %>% # 统一差异值小数位数 # 调整表头 modify_header(label ~ "**Variable**", p.value ~ "**P值**", diff ~ "**组间差异 (95% CI)**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Conocimiento sobre tuberculosis pulmonar**") %>% modify_caption("**Tabla 2. Análisis descriptivo**") Tabla2
补充说明
add_difference()会自动识别Beta18.1Pond为加权调查对象(svydesign类),无需额外配置加权参数。- 若分类变量需要调整协变量(与
svy.adj.chisq.test对应),可在add_difference()中添加adj.vars = c(变量1, 变量2)参数,例如:add_difference(test = all_categorical() ~ "svy.prop.test", adj.vars = c(HV025, Region), ...)。
内容的提问来源于stack exchange,提问作者RE2000
相关产品推荐
相关产品推荐

