library (gtsummary)
library(tidyverse)
library(knitr)
18 Univariate regressions, reported as a table
18.1 Univariate Regressions - reported as a table
The tbl_uvregression() function produces a table of univariate regression models. The function is a wrapper for tbl_regression(), and as a result, accepts nearly identical function arguments. The function’s results can be modified in similar ways to tbl_regression().
This example uses the built-in trial data set
Show the data set
kable(head(trial,50))
trt | age | marker | stage | grade | response | death | ttdeath |
---|---|---|---|---|---|---|---|
Drug A | 23 | 0.160 | T1 | II | 0 | 0 | 24.00 |
Drug B | 9 | 1.107 | T2 | I | 1 | 0 | 24.00 |
Drug A | 31 | 0.277 | T1 | II | 0 | 0 | 24.00 |
Drug A | NA | 2.067 | T3 | III | 1 | 1 | 17.64 |
Drug A | 51 | 2.767 | T4 | III | 1 | 1 | 16.43 |
Drug B | 39 | 0.613 | T4 | I | 0 | 1 | 15.64 |
Drug A | 37 | 0.354 | T1 | II | 0 | 0 | 24.00 |
Drug A | 32 | 1.739 | T1 | I | 0 | 1 | 18.43 |
Drug A | 31 | 0.144 | T1 | II | 0 | 0 | 24.00 |
Drug B | 34 | 0.205 | T3 | I | 0 | 1 | 10.53 |
Drug B | 42 | 0.513 | T1 | III | 0 | 0 | 24.00 |
Drug B | 63 | 0.060 | T3 | I | 1 | 0 | 24.00 |
Drug B | 54 | 0.831 | T4 | III | 0 | 1 | 14.34 |
Drug B | 21 | 0.258 | T4 | I | 0 | 1 | 12.89 |
Drug B | 48 | 0.128 | T1 | I | 0 | 1 | 22.68 |
Drug B | 71 | 0.445 | T4 | III | 0 | 1 | 8.71 |
Drug A | 38 | 2.083 | T4 | III | 1 | 0 | 24.00 |
Drug B | 49 | 0.157 | T2 | II | 0 | 1 | 15.21 |
Drug A | 57 | 0.066 | T1 | III | 0 | 0 | 24.00 |
Drug A | 46 | 0.325 | T1 | II | 0 | 0 | 24.00 |
Drug A | 47 | 0.266 | T2 | I | 0 | 0 | 24.00 |
Drug A | 52 | 0.719 | T2 | II | 0 | 0 | 24.00 |
Drug A | 61 | 1.713 | T4 | I | 0 | 1 | 16.92 |
Drug A | 38 | 0.096 | T4 | I | 0 | 1 | 23.89 |
Drug B | 34 | 0.105 | T4 | II | 0 | 1 | 6.32 |
Drug B | 49 | 0.043 | T2 | III | 0 | 1 | 15.77 |
Drug A | 63 | 0.981 | T4 | II | 1 | 0 | 24.00 |
Drug B | 67 | 1.156 | T1 | II | 0 | 0 | 24.00 |
Drug B | 68 | 0.105 | T4 | II | 0 | 1 | 15.45 |
Drug A | 78 | 0.175 | T3 | I | 1 | 1 | 17.43 |
Drug B | 36 | 0.309 | T1 | III | 1 | 0 | 24.00 |
Drug A | 37 | 1.869 | T2 | II | 0 | 1 | 20.90 |
Drug B | 53 | 2.008 | T3 | I | 0 | 0 | 24.00 |
Drug A | 36 | 1.894 | T3 | I | 1 | 0 | 24.00 |
Drug A | 51 | 0.160 | T3 | I | 0 | 0 | 24.00 |
Drug A | 48 | 1.209 | T3 | III | NA | 1 | 21.19 |
Drug B | 57 | 0.108 | T1 | II | 0 | 1 | 12.52 |
Drug A | 31 | 0.611 | T1 | II | 1 | 0 | 24.00 |
Drug B | 37 | 0.222 | T4 | III | 0 | 1 | 15.59 |
Drug B | 28 | 0.803 | T4 | II | 0 | 1 | 18.00 |
Drug B | 40 | 0.370 | T3 | II | 0 | 1 | 18.02 |
Drug B | 49 | NA | T1 | III | 1 | 1 | 12.43 |
Drug A | 61 | 0.177 | T4 | III | 0 | 1 | 12.10 |
Drug B | 56 | 1.479 | T3 | I | 1 | 0 | 24.00 |
Drug A | 54 | 0.161 | T4 | III | 1 | 1 | 17.42 |
Drug B | 71 | 0.737 | T1 | I | 1 | 0 | 24.00 |
Drug A | 38 | 0.124 | T1 | III | 1 | 0 | 24.00 |
Drug B | 31 | 0.092 | T2 | II | 0 | 0 | 24.00 |
Drug B | 48 | 0.385 | T1 | II | 0 | 1 | 12.19 |
Drug B | NA | 0.210 | T4 | II | 0 | 1 | 10.02 |
Perform univariate analyses
%>%
trial
select(response, age, grade) %>%
tbl_uvregression(
method = glm,
y = response,
method.args = list(family = binomial),
exponentiate = TRUE,
pvalue_fun = ~style_pvalue(.x, digits = 2)
%>%
) add_global_p() %>% # add global p-value
add_nevent() %>% # add number of events of the outcome
add_q() %>% # adjusts global p-values for multiple testing
bold_p() %>% # bold p-values under a given threshold (default 0.05)
bold_p(t = 0.10, q = TRUE) %>% # now bold q-values under the threshold of 0.10
bold_labels()
Characteristic | N | Event N | OR1 | 95% CI1 | p-value | q-value2 |
---|---|---|---|---|---|---|
Age | 183 | 58 | 1.02 | 1.00, 1.04 | 0.091 | 0.18 |
Grade | 193 | 61 | 0.93 | 0.93 | ||
I | — | — | ||||
II | 0.95 | 0.45, 2.00 | ||||
III | 1.10 | 0.52, 2.29 | ||||
1 OR = Odds Ratio, CI = Confidence Interval | ||||||
2 False discovery rate correction for multiple testing |