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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:43:10