Как сгенерировать размер эффекта [90% ДИ] в сводной таблице с помощью пакета R "gtsummary"?

Я работаю над созданием сводной таблицы с использованием пакета R "gtsummary". На самом деле это очень хорошо. Функция add_stat дает вам большую свободу для включения надстроек. Например, в моем районе мы хотим сообщить размер эффекта с помощью доверительного интервала (ES [90% CI]). Итак, я хотел бы помочь включить диапазон CI. Реализованный мной код работает, но без цифрового управления и без диапазона CI.

# 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 ответ

Решение

Я думаю, что самый простой способ сделать это - добавить доверительный интервал вместе с уже отформатированной оценкой.

Вы обновляете my_EStestфункция для возврата уже отформатированной статистики, включая оценку и доверительный интервал. Этот вывод работает для вас?

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)")

Другие вопросы по тегам