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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:17:11