是否可以提取 gtsummary 中执行的统计测试的完整输出?

Is it possible to extract the full output for the statistical tests performed in gtsummary?

Background/aim

我正在使用 gtsummary 来呈现 tables,其中还包括软件包执行的统计测试。我想在 table 中补充有关手稿文本中统计检验的其他信息。例如,gtsummary 已经用 anova 测试了组间的均值差异,我想在文本中报告测试的 F 值和值的度数。有什么方法可以从 gtsummary 对象中提取此信息,还是我必须单独再次 运行 统计测试并从那里提取它?即,运行 aov() 并从输出复制粘贴?

使用方差分析作为统计检验的示例情况

library(tidyverse)
library(gtsummary)
theme_gtsummary_mean_sd()

gtTable <- mtcars %>% 
  select(cyl, mpg) %>% 
  tbl_summary(by = cyl) %>% 
  add_p()

oneWay <- aov(mpg ~ cyl, data = mtcars)
summary(oneWay)
#>             Df Sum Sq Mean Sq F value   Pr(>F)    
#> cyl          1  817.7   817.7   79.56 6.11e-10 ***
#> Residuals   30  308.3    10.3                     
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Table

应该 是可能的,但不幸的是,目前 aov() 结果不可能。我会在下一个版本中实现,你可以关注这个 GitHub Issue 来跟踪发布的进度。 https://github.com/ddsjoberg/gtsummary/issues/956

这是一个使用 t 检验的示例,目前可以使用。

library(gtsummary)
packageVersion("gtsummary")
#> [1] '1.4.2'

tbl <-
  trial %>%
  select(age, trt) %>%
  tbl_summary(by = trt,
              missing = "no") %>%
  add_p(all_continuous() ~ "t.test")

# report any statistics in `tbl$table_body` with `inline_text()`
tbl$table_body
#> # A tibble: 1 x 18
#>   variable test_name var_type   var_label row_type label stat_1 stat_2 test_result
#>   <chr>    <chr>     <chr>      <chr>     <chr>    <chr> <chr>  <chr>  <list>     
#> 1 age      t.test    continuous Age       label    Age   46 (3~ 48 (3~ <named lis~
#> # ... with 9 more variables: estimate <dbl>, statistic <dbl>, parameter <dbl>,
#> #   conf.low <dbl>, conf.high <dbl>, p.value <dbl>, estimate1 <dbl>,
#> #   estimate2 <dbl>, alternative <chr>

# the columns about the t-test come from `t.test(...) %>% broom::tidy()`
t.test(age ~  trt, data = trial) %>% broom::tidy()
#> # A tibble: 1 x 10
#>   estimate estimate1 estimate2 statistic p.value parameter conf.low conf.high
#>      <dbl>     <dbl>     <dbl>     <dbl>   <dbl>     <dbl>    <dbl>     <dbl>
#> 1   -0.438      47.0      47.4    -0.209   0.834      184.    -4.57      3.69
#> # ... with 2 more variables: method <chr>, alternative <chr>

# t-statistic
inline_text(tbl, variable = "age", column = "statistic") %>% style_sigfig()
#>       t 
#> "-0.21"
# degrees of freedom
inline_text(tbl, variable = "age", column = "parameter") %>% style_number()
#>    df 
#> "184"

reprex package (v2.0.1)

于 2021-08-10 创建