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

如何使用R包gtsummary在汇总表中添加卡方检验效应量Cramer's V?

解决方案

修改自定义效应量计算函数,增加变量类型适配逻辑:连续变量输出Cohen's d,分类变量自动构造列联表输出Cramer's V,修改后完整可运行代码如下:

library(tidyverse)
library(rstatix)
library(gtsummary)
theme_gtsummary_mean_sd()

my_ES_test <- function(data, variable, by, ...) {
  # 提取当前变量和分组变量的向量
  x <- data[[variable]]
  y <- data[[by]]
  
  # 连续变量计算Cohen's d
  if (is.numeric(x)) {
    return(rstatix::cohens_d(data, as.formula(glue::glue("{variable} ~ {by}")))$effsize)
  } 
  # 分类变量计算Cramer's V
  else {
    cont_table <- table(x, y)
    return(rstatix::cramer_v(cont_table))
  }
}

gtTable <- mtcars %>% 
  select(hp, vs, am) %>% 
  tbl_summary(by = vs) %>% 
  add_p() %>% 
  # 所有变量都应用自定义效应量函数
  add_stat(fns = everything() ~ my_ES_test) %>% 
  modify_header(add_stat_1 ~ "Effect size") %>% 
  # 可选:统一效应量显示2位小数
  modify_fmt_fun(add_stat_1 ~ ~style_number(., digits = 2))

gtTable
效果说明

生成的表格中:

  • 连续变量hp对应的效应量为Cohen's d值
  • 分类变量am对应的效应量为Cramer's V值,和单独计算的0.10结果一致

内容的提问来源于stack exchange,提问作者André

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:06:03