使用gtsummary包实现多变量Kruskal-Wallis检验并展示均数±标准差
解决方案
1. 核心问题修正
你之前的代码错误在于Kruskal-Wallis检验的公式方向写反,且未结合gtsummary的统计量自定义逻辑。以下是完整实现步骤:
2. 加载依赖包
library(gtsummary) library(dplyr)
3. 数据预处理(针对连续变量Age)
Kruskal-Wallis检验要求分组变量为分类类型,需先将连续变量Age按分位数分组:
df1 <- df1 %>% mutate(Age_group = cut(Age, breaks = quantile(Age), include.lowest = TRUE, labels = c("Q1", "Q2", "Q3", "Q4")))
4. 生成目标表格
使用gtsummary生成包含**均数±标准差(mean±SD)**和Kruskal-Wallis检验p值的表格:
# 构建统计表格 result_tbl <- tbl_summary( data = df1, by = c(Gender, Year_study, Age_group), # 指定分组变量 include = D_score, # 仅展示D_score的统计量 statistic = list(all_continuous() ~ "{mean} ± {sd}"), # 自定义统计量格式 digits = list(D_score ~ c(1, 1)) # 设置小数位数 ) %>% add_p( test = list(all_continuous() ~ "kruskal.test"), # 指定Kruskal-Wallis检验 pvalue_fun = function(x) style_pvalue(x, digits = 3) # 格式化p值 ) %>% modify_header(label ~ "**指标**") %>% modify_caption("不同分组下D_score的统计特征与Kruskal-Wallis检验结果") # 输出表格 result_tbl
灵活调整说明
若你实际需求是将D_score作为分组变量,检验Age等变量在不同D_score组的分布,只需调整参数:将by = D_score,include = c(Age, Gender, Year_study),同时保持连续变量的统计量设置即可。
内容的提问来源于stack exchange,提问作者Esraa Alfadul
相关产品推荐
相关产品推荐

