如何在R的gtsummary中计算多分类变量组间各类别比例差异及95%CI
解决多分类变量组间比例差异及置信区间计算问题
默认情况下add_difference()函数对多分类变量只会输出整体的组间检验结果,不会自动计算每个类别与另一组的比例差异及置信区间。要实现三分类变量ses_status每个类别在男女组间的比例差异计算,可通过以下两种方式处理:
方法一:两两对比所有类别
通过指定test参数为pairwise.prop.test,实现多分类变量的两两比例差异检验,并输出对应置信区间:
# 加载所需包 library(gtsummary) library(tidyverse) # 构造数据集 dt <- data.frame( gender = as.factor(rep(c("M","F", "M"), 10)), smoke = as.factor(rep(c("Yes","No"),15)), ses_status = as.factor(rep(c("low", "high","middle"),10)) ) # 生成统计表格并添加差异计算 dt %>% tbl_summary(by = gender, include = c(ses_status, smoke)) %>% add_difference( include = c(ses_status, smoke), # 指定多分类变量用两两比例检验 test = list(ses_status ~ "pairwise.prop.test"), # 格式化p值和差异估计值 pvalue_fun = ~style_pvalue(.x, digits = 3), estimate_fun = ~style_ratio(.x, digits = 3) ) %>% # 调整表格表头样式 modify_header(label = "**变量**") %>% bold_labels()
这段代码会输出ses_status三个类别两两之间的组间比例差异、95%置信区间,以及经过Bonferroni调整的p值,同时保留二元变量smoke的差异结果。
方法二:指定参考类别计算差异
如果只需要每个类别与某一参考类别的组间差异,可通过contrast和reference参数设置:
dt %>% tbl_summary(by = gender, include = c(ses_status, smoke)) %>% # 计算多分类变量与参考类别的差异 add_difference( include = ses_status, test = list(ses_status ~ "prop.test"), contrast = list(ses_status ~ "reference"), reference = list(ses_status ~ "low") # 指定low为参考类别 ) %>% # 单独处理二元变量smoke的差异 add_difference(include = smoke)
此方法会输出middle vs low、high vs low在男女组间的比例差异及置信区间,适合有明确参考类别的分析场景。
内容的提问来源于stack exchange,提问作者Bikram Adhitya Adhikari
相关产品推荐
相关产品推荐

