How to generate effect size [90%CI] in the summary table using R package “gtsummary”?

会有一股神秘感。 提交于 2021-01-24 09:35:29

问题


I am working on creating summary table using the R package "gtsummary". This is actually very good. The add_stat function gives you a lot of freedom to include add-ons. For example, in my area we want to inform the effect size with confidence interval (ES [90% CI]). So, I would like help to include the CI range. The code I implemented is working, but without digit control and without the CI range.

# Packages ----------------------------------------------------------------
library(gtsummary)
library(gt)
library(dplyr)
library(purrr)

# Example 1 ---------------------------------------------------------------
# fn returns ES value
my_EStest <- function(data, variable, by, ...) {
  effsize::cohen.d(data[[variable]] ~ as.factor(data[[by]]), 
                   conf.level=.90, pooled=TRUE, paired=FALSE, 
                   hedges.correction=TRUE)$estimate
}

add_ES <-
  trial %>%
  select(trt, age) %>%
  tbl_summary(by = trt, missing = "no",
              statistic = list(all_continuous() ~ "{mean} ({sd})"),
              digits = list(all_continuous() ~ c(1,1))) %>%
  add_p(test = everything() ~ t.test) %>%
  add_stat(
    fns = everything() ~ my_EStest,
    fmt_fun = style_pvalue,
    header = "**ES**"
  )
add_ES

# counterproof
effsize::cohen.d(age ~ trt, data = trial, conf.level=.90, return.dm=TRUE, pooled=TRUE, paired=FALSE, hedges.correction=TRUE)

回答1:


I think the easiest way to do this is to add the confidence interval along with the estimate already formatted.

You update my_EStest function to return an already formatted statistic including both the estimate and the confidence interval. Does this output work for you?

library(tidyverse)
library(gtsummary)

my_EStest <- function(data, variable, by, ...) {
  # Cohen's D
  d <- effsize::cohen.d(data[[variable]] ~ as.factor(data[[by]]), 
                   conf.level=.90, pooled=TRUE, paired=FALSE, 
                   hedges.correction=TRUE)

  # Formatting statistic with CI
  est <- style_sigfig(d$estimate)
  ci <- style_sigfig(d$conf.int) %>% paste(collapse = ", ")

  # returning estimate with CI together
  str_glue("{est} ({ci})")
}

add_ES <-
  trial %>%
  select(trt, age) %>%
  tbl_summary(by = trt, missing = "no",
              statistic = list(all_continuous() ~ "{mean} ({sd})"),
              digits = list(all_continuous() ~ c(1,1))) %>%
  add_p(test = everything() ~ t.test) %>%
  add_stat(
    fns = everything() ~ my_EStest,
    fmt_fun = NULL,
    header = "**ES (90% CI)**"
  ) %>%
  modify_footnote(add_stat_1 ~ "Cohen's D (90% CI)")



来源:https://stackoverflow.com/questions/62137514/how-to-generate-effect-size-90ci-in-the-summary-table-using-r-package-gtsumm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!