如何使用 R 包“gtsummary”在摘要 table 中添加卡方效应大小 Cramer's V?

How to add the Chi-square effect size Cramer's V in the summary table using R package “gtsummary”?

问题

我正在使用 gtsummary table,其中包括均值和频率的统计检验。我想将效果大小包括到 table 中并遇到了 。该代码也适用于 Cohen 的 d,但我正在努力为 Cramer 的 V 修改它。似乎 cramer_v() 函数需要调用现成的应急 table,而不是使用原始数据.有什么方法可以计算并在 gtsummary table?

中包含卡方的 Cramer's V

例子

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

my_ES_test <- function(data, variable, by, ...) {
  rstatix::cohens_d(data, as.formula(glue::glue("{variable} ~ {by}")))$effsize
}

gtTable <- mtcars %>% 
  select(hp, vs, am) %>% 
  tbl_summary(by = vs) %>% 
  add_p() %>% 
  add_stat(fns = all_continuous() ~ my_ES_test) %>% 
  modify_header(add_stat_1 ~ "Effect size")
print(gtTable)

contTable <- table(mtcars$vs, mtcars$am)
chisq.test(contTable, correct = FALSE)
#> 
#>  Pearson's Chi-squared test
#> 
#> data:  contTable
#> X-squared = 0.90688, df = 1, p-value = 0.3409
cramer_v(contTable)
#> [1] 0.1042136

我在输出中添加了一个示例,其中包括 Cramer 的 V table。编程愉快!

library(gtsummary)

my_ES_test <- function(data, variable, by, ...) {
  rstatix::cohens_d(data, as.formula(glue::glue("{variable} ~ {by}")))$effsize
}
my_cramer_v <- function(data, variable, by, ...) {
  table(data[[variable]], data[[by]]) %>%
    rstatix::cramer_v()
}

gtTable <- 
  mtcars %>% 
  select(hp, vs, am) %>% 
  tbl_summary(by = vs) %>% 
  add_p() %>% 
  add_stat(
    fns = list(all_continuous() ~ my_ES_test,
               all_categorical() ~ my_cramer_v)) %>% 
  modify_header(add_stat_1 ~ "**Effect size**")

reprex package (v2.0.1)

于 2021-09-07 创建

仅供参考,Cohen's D 具有内置支持,因此您无需创建自定义方法。您可以在此处查看完整列表 https://www.danieldsjoberg.com/gtsummary/reference/tests.html