Skip to contents

Output is a concatenated list of model information and model

Usage

regression_model(
  data,
  outcome.str,
  auto.mode = FALSE,
  formula.str = NULL,
  args.list = NULL,
  fun = NULL,
  vars = NULL,
  ...
)

regression_model_uv(
  data,
  outcome.str,
  args.list = NULL,
  fun = NULL,
  vars = NULL,
  ...
)

regression_model_list(
  data,
  outcome.str,
  fun.descr,
  fun = NULL,
  formula.str = NULL,
  args.list = NULL,
  vars = NULL,
  ...
)

regression_model_uv_list(
  data,
  outcome.str,
  fun.descr,
  fun = NULL,
  formula.str = NULL,
  args.list = NULL,
  vars = NULL,
  ...
)

Arguments

data

data

outcome.str

name of outcome variable

auto.mode

Make assumptions on function dependent on outcome data format. Overwrites other arguments.

formula.str

custom formula glue string. Default is NULL.

args.list

custom character string to be converted using argsstring2list() or list of arguments. Default is NULL.

fun

name of custom function. Default is NULL.

vars

character vector of variables to include

...

ignored

fun.descr

Description of chosen function matching description in "supported_functions()"

Value

object of standard class for fun

object of standard class for fun

list

list

Examples

gtsummary::trial |>
  regression_model(outcome.str = "age")
#> 
#> Call:
#> (function (formula, data, subset, weights, na.action, method = "qr", 
#>     model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, 
#>     contrasts = NULL, offset, ...) 
#> {
#>     ret.x <- x
#>     ret.y <- y
#>     cl <- match.call()
#>     mf <- match.call(expand.dots = FALSE)
#>     m <- match(c("formula", "data", "subset", "weights", "na.action", 
#>         "offset"), names(mf), 0L)
#>     mf <- mf[c(1L, m)]
#>     mf$drop.unused.levels <- TRUE
#>     mf[[1L]] <- quote(stats::model.frame)
#>     mf <- eval(mf, parent.frame())
#>     if (method == "model.frame") 
#>         return(mf)
#>     else if (method != "qr") 
#>         warning(gettextf("method = '%s' is not supported. Using 'qr'", 
#>             method), domain = NA)
#>     mt <- attr(mf, "terms")
#>     y <- model.response(mf, "numeric")
#>     w <- as.vector(model.weights(mf))
#>     if (!is.null(w) && !is.numeric(w)) 
#>         stop("'weights' must be a numeric vector")
#>     offset <- model.offset(mf)
#>     mlm <- is.matrix(y)
#>     ny <- if (mlm) 
#>         nrow(y)
#>     else length(y)
#>     if (!is.null(offset)) {
#>         if (!mlm) 
#>             offset <- as.vector(offset)
#>         if (NROW(offset) != ny) 
#>             stop(gettextf("number of offsets is %d, should equal %d (number of observations)", 
#>                 NROW(offset), ny), domain = NA)
#>     }
#>     if (is.empty.model(mt)) {
#>         x <- NULL
#>         z <- list(coefficients = if (mlm) matrix(NA_real_, 0, 
#>             ncol(y)) else numeric(), residuals = y, fitted.values = 0 * 
#>             y, weights = w, rank = 0L, df.residual = if (!is.null(w)) sum(w != 
#>             0) else ny)
#>         if (!is.null(offset)) {
#>             z$fitted.values <- offset
#>             z$residuals <- y - offset
#>         }
#>     }
#>     else {
#>         x <- model.matrix(mt, mf, contrasts)
#>         z <- if (is.null(w)) 
#>             lm.fit(x, y, offset = offset, singular.ok = singular.ok, 
#>                 ...)
#>         else lm.wfit(x, y, w, offset = offset, singular.ok = singular.ok, 
#>             ...)
#>     }
#>     class(z) <- c(if (mlm) "mlm", "lm")
#>     z$na.action <- attr(mf, "na.action")
#>     z$offset <- offset
#>     z$contrasts <- attr(x, "contrasts")
#>     z$xlevels <- .getXlevels(mt, mf)
#>     z$call <- cl
#>     z$terms <- mt
#>     if (model) 
#>         z$model <- mf
#>     if (ret.x) 
#>         z$x <- x
#>     if (ret.y) 
#>         z$y <- y
#>     if (!qr) 
#>         z$qr <- NULL
#>     z
#> })(formula = age ~ trt + marker + stage + grade + response + 
#>     death + ttdeath, data = structure(list(trt = structure(c(1L, 
#> 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
#> 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 
#> 1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 
#> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 
#> 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 
#> 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 
#> 2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 
#> 1L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 
#> 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 
#> 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 
#> 2L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 
#> 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
#> 2L, 1L, 2L, 1L, 1L, 1L, 1L), levels = c("Drug A", "Drug B"), class = "factor", label = "Chemotherapy Treatment"), 
#>     age = structure(c(23, 9, 31, NA, 51, 39, 37, 32, 31, 34, 
#>     42, 63, 54, 21, 48, 71, 38, 49, 57, 46, 47, 52, 61, 38, 34, 
#>     49, 63, 67, 68, 78, 36, 37, 53, 36, 51, 48, 57, 31, 37, 28, 
#>     40, 49, 61, 56, 54, 71, 38, 31, 48, NA, 83, 52, 32, 53, 69, 
#>     60, 45, 39, NA, 38, 36, 71, 31, 43, 57, 53, 25, 44, 25, 30, 
#>     51, 40, NA, 43, 21, 54, 67, 43, 54, 41, 34, 34, 6, 39, 36, 
#>     58, 27, 47, NA, 50, 61, 47, 52, 51, 68, 33, 65, 34, 38, 60, 
#>     10, 49, 56, 50, 60, 49, 54, 39, 48, 65, 47, 61, 34, NA, NA, 
#>     58, 26, 44, 17, 68, 57, 66, 44, NA, 67, 48, 62, 35, 53, 53, 
#>     66, 55, 57, 47, 58, 43, 45, 44, 63, 59, 44, 53, 51, 28, 65, 
#>     63, 76, 61, 33, 48, 42, 36, 55, 20, 26, 50, 47, 74, 50, 31, 
#>     45, 51, 66, 76, 47, 48, 56, 70, 46, 43, 41, 41, 19, 49, 43, 
#>     43, 75, 52, 42, 37, 45, 35, 67, 38, 44, 45, 39, 46, NA, 42, 
#>     60, 31, 45, 38, NA, 19, 69, 66, NA, 64), label = "Age"), 
#>     marker = structure(c(0.16, 1.107, 0.277, 2.067, 2.767, 0.613, 
#>     0.354, 1.739, 0.144, 0.205, 0.513, 0.06, 0.831, 0.258, 0.128, 
#>     0.445, 2.083, 0.157, 0.066, 0.325, 0.266, 0.719, 1.713, 0.096, 
#>     0.105, 0.043, 0.981, 1.156, 0.105, 0.175, 0.309, 1.869, 2.008, 
#>     1.894, 0.16, 1.209, 0.108, 0.611, 0.222, 0.803, 0.37, NA, 
#>     0.177, 1.479, 0.161, 0.737, 0.124, 0.092, 0.385, 0.21, 0.475, 
#>     1.628, 0.583, NA, 0.702, 1.206, 2.213, 1.406, 0.101, 0.013, 
#>     2.032, 1.046, 0.408, 2.636, 1.263, NA, 2.447, 1.041, 0.531, 
#>     0.924, 1.087, 0.733, 2.157, 0.333, 1.527, 2.238, 0.153, 0.305, 
#>     0.131, 0.386, 1.645, 1.321, 0.229, 0.615, 1.976, 1.941, 0.22, 
#>     3.874, 0.982, 1.68, 1.091, 0.169, 0.511, 2.141, 0.599, NA, 
#>     0.389, 0.005, 0.075, 1.491, 0.358, 1.709, 0.056, 1.354, 2.522, 
#>     0.387, 0.592, 0.243, 0.215, 1.207, 0.29, 0.718, 0.589, 0.003, 
#>     1.328, 0.308, 0.691, 3.249, 0.039, 1.804, 0.238, 2.702, 1.441, 
#>     0.27, NA, NA, 0.062, 2.19, 0.976, 3.062, 0.124, 0.045, 1.892, 
#>     0.711, 1.079, 1.061, 0.239, 0.361, 0.033, 1.133, 1.225, 1.418, 
#>     3.751, 3.02, 0.086, 0.772, 1.882, 2.725, 2.41, 0.352, 0.895, 
#>     0.215, 0.141, 2.288, 1.658, 1.255, 1.306, 0.081, 0.667, 0.046, 
#>     0.662, 1.985, 1.063, 1.55, 0.015, 0.056, NA, 0.51, 0.929, 
#>     2.345, 0.25, 0.816, 0.022, 0.16, 0.547, 3.642, 0.092, 1.2, 
#>     1.512, 2.124, NA, 0.862, 0.182, 1.075, 0.021, 0.402, 0.063, 
#>     1.129, 0.61, NA, 0.717, 0.205, 0.946, 0.386, 0.37, 1.148, 
#>     NA, 0.136, 0.439, 1.148), label = "Marker Level (ng/mL)"), 
#>     stage = structure(c(1L, 2L, 1L, 3L, 4L, 4L, 1L, 1L, 1L, 3L, 
#>     1L, 3L, 4L, 4L, 1L, 4L, 4L, 2L, 1L, 1L, 2L, 2L, 4L, 4L, 4L, 
#>     2L, 4L, 1L, 4L, 3L, 1L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 4L, 4L, 
#>     3L, 1L, 4L, 3L, 4L, 1L, 1L, 2L, 1L, 4L, 1L, 2L, 2L, 3L, 3L, 
#>     2L, 4L, 1L, 4L, 2L, 4L, 1L, 4L, 1L, 4L, 1L, 1L, 1L, 4L, 1L, 
#>     2L, 2L, 2L, 1L, 4L, 4L, 2L, 2L, 4L, 4L, 3L, 2L, 4L, 3L, 2L, 
#>     4L, 1L, 2L, 1L, 4L, 3L, 3L, 1L, 3L, 2L, 3L, 2L, 2L, 3L, 4L, 
#>     4L, 3L, 3L, 2L, 3L, 2L, 2L, 3L, 2L, 1L, 1L, 3L, 4L, 1L, 4L, 
#>     3L, 3L, 2L, 4L, 2L, 1L, 2L, 1L, 4L, 3L, 3L, 3L, 2L, 1L, 2L, 
#>     1L, 2L, 2L, 1L, 3L, 2L, 1L, 1L, 1L, 3L, 3L, 4L, 1L, 2L, 2L, 
#>     1L, 3L, 4L, 2L, 4L, 2L, 1L, 2L, 3L, 1L, 3L, 4L, 2L, 2L, 1L, 
#>     2L, 2L, 3L, 1L, 2L, 2L, 1L, 1L, 3L, 2L, 3L, 1L, 1L, 2L, 4L, 
#>     2L, 4L, 4L, 2L, 3L, 4L, 3L, 4L, 4L, 1L, 1L, 4L, 4L, 4L, 1L, 
#>     2L, 2L, 2L, 4L, 3L, 3L, 2L, 2L, 4L, 3L), levels = c("T1", 
#>     "T2", "T3", "T4"), class = "factor", label = "T Stage"), 
#>     grade = structure(c(2L, 1L, 2L, 3L, 3L, 1L, 2L, 1L, 2L, 1L, 
#>     3L, 1L, 3L, 1L, 1L, 3L, 3L, 2L, 3L, 2L, 1L, 2L, 1L, 1L, 2L, 
#>     3L, 2L, 2L, 2L, 1L, 3L, 2L, 1L, 1L, 1L, 3L, 2L, 2L, 3L, 2L, 
#>     2L, 3L, 3L, 1L, 3L, 1L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 
#>     1L, 3L, 1L, 2L, 2L, 3L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 3L, 2L, 
#>     1L, 3L, 3L, 3L, 2L, 3L, 3L, 1L, 2L, 1L, 1L, 1L, 1L, 3L, 1L, 
#>     3L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 1L, 
#>     3L, 1L, 2L, 2L, 1L, 2L, 2L, 3L, 1L, 3L, 3L, 1L, 1L, 1L, 2L, 
#>     3L, 3L, 2L, 1L, 3L, 2L, 1L, 2L, 2L, 2L, 1L, 3L, 3L, 2L, 3L, 
#>     1L, 1L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 3L, 2L, 
#>     2L, 2L, 2L, 2L, 1L, 1L, 3L, 2L, 2L, 1L, 2L, 1L, 2L, 3L, 2L, 
#>     1L, 1L, 1L, 3L, 1L, 1L, 2L, 1L, 1L, 3L, 3L, 1L, 3L, 2L, 1L, 
#>     3L, 1L, 2L, 1L, 1L, 3L, 1L, 2L, 1L, 2L, 2L, 2L, 3L, 2L, 2L, 
#>     3L, 2L, 3L, 3L, 2L, 1L, 2L, 3L, 3L, 1L), levels = c("I", 
#>     "II", "III"), class = "factor", label = "Grade"), response = structure(c(0L, 
#>     1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
#>     1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 
#>     0L, 0L, 1L, 0L, NA, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 
#>     1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 
#>     0L, 0L, 0L, NA, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 
#>     0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 
#>     0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, NA, 0L, 0L, 1L, 
#>     0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 
#>     0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 
#>     1L, 1L, NA, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, NA, 1L, 0L, 
#>     0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 
#>     0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, NA, 0L, 1L, 
#>     0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, NA, 0L, 
#>     1L, 1L, 0L, 0L), label = "Tumor Response"), death = structure(c(0L, 
#>     0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
#>     0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 
#>     1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 
#>     0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
#>     0L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
#>     1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
#>     1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 
#>     1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
#>     0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 
#>     0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 
#>     0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 
#>     1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 
#>     0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 
#>     1L, 0L, 1L, 0L), label = "Patient Died"), ttdeath = structure(c(24, 
#>     24, 24, 17.64, 16.43, 15.64, 24, 18.43, 24, 10.53, 24, 24, 
#>     14.34, 12.89, 22.68, 8.71, 24, 15.21, 24, 24, 24, 24, 16.92, 
#>     23.89, 6.32, 15.77, 24, 24, 15.45, 17.43, 24, 20.9, 24, 24, 
#>     24, 21.19, 12.52, 24, 15.59, 18, 18.02, 12.43, 12.1, 24, 
#>     17.42, 24, 24, 24, 12.19, 10.02, 18.23, 10.42, 24, 24, 19.34, 
#>     12.21, 14.46, 19.34, 10.16, 13.15, 10.12, 24, 22.77, 24, 
#>     24, 22.13, 24, 20.62, 23.23, 7.38, 24, 24, 24, 24, 24, 19.22, 
#>     7.27, 23.88, 16.23, 24, 14.06, 24, 24, 24, 16.44, 23.81, 
#>     24, 18.37, 11.44, 20.94, 5.33, 22.92, 10.33, 24, 24, 14.54, 
#>     19.14, 24, 21.19, 16.07, 9.97, 24, 24, 24, 19.75, 16.67, 
#>     11.18, 18.29, 24, 17.56, 17.45, 24, 22.86, 13.68, 24, 24, 
#>     17.46, 24, 24, 24, 24, 24, 13, 9.73, 15.65, 24, 3.53, 20.35, 
#>     23.41, 16.47, 24, 24, 14.65, 17.81, 24, 21.83, 24, 24, 21.49, 
#>     12.68, 24, 24, 24, 24, 10.07, 24, 24, 24, 8.37, 20.33, 24, 
#>     24, 21.33, 12.63, 13.08, 24, 15.1, 20.14, 10.55, 24, 24, 
#>     24, 24, 23.6, 24, 19.98, 15.55, 23.72, 22.41, 19.54, 16.57, 
#>     24, 24, 24, 21.91, 24, 12.53, 24, 18.63, 14.82, 16.46, 24, 
#>     9.24, 17.77, 24, 24, 9.92, 16.16, 10.51, 20.81, 24, 16.44, 
#>     24, 22.4, 11.76, 24, 21.6, 24, 19.81, 24), label = "Months to Death/Censor")), class = c("tbl_df", 
#> "tbl", "data.frame"), row.names = c(NA, -200L)))
#> 
#> Coefficients:
#> (Intercept)    trtDrug B       marker      stageT2      stageT3      stageT4  
#>     45.9247      -0.4052      -0.1435       2.0519       2.4437      -3.1573  
#>     gradeII     gradeIII     response        death      ttdeath  
#>      0.1750       1.6855       4.9885       3.0775      -0.1394  
#> 
gtsummary::trial |>
  regression_model(
    outcome.str = "age",
    auto.mode = FALSE,
    fun = "stats::lm",
    formula.str = "{outcome.str}~.",
    args.list = NULL
  )
#> 
#> Call:
#> (function (formula, data, subset, weights, na.action, method = "qr", 
#>     model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, 
#>     contrasts = NULL, offset, ...) 
#> {
#>     ret.x <- x
#>     ret.y <- y
#>     cl <- match.call()
#>     mf <- match.call(expand.dots = FALSE)
#>     m <- match(c("formula", "data", "subset", "weights", "na.action", 
#>         "offset"), names(mf), 0L)
#>     mf <- mf[c(1L, m)]
#>     mf$drop.unused.levels <- TRUE
#>     mf[[1L]] <- quote(stats::model.frame)
#>     mf <- eval(mf, parent.frame())
#>     if (method == "model.frame") 
#>         return(mf)
#>     else if (method != "qr") 
#>         warning(gettextf("method = '%s' is not supported. Using 'qr'", 
#>             method), domain = NA)
#>     mt <- attr(mf, "terms")
#>     y <- model.response(mf, "numeric")
#>     w <- as.vector(model.weights(mf))
#>     if (!is.null(w) && !is.numeric(w)) 
#>         stop("'weights' must be a numeric vector")
#>     offset <- model.offset(mf)
#>     mlm <- is.matrix(y)
#>     ny <- if (mlm) 
#>         nrow(y)
#>     else length(y)
#>     if (!is.null(offset)) {
#>         if (!mlm) 
#>             offset <- as.vector(offset)
#>         if (NROW(offset) != ny) 
#>             stop(gettextf("number of offsets is %d, should equal %d (number of observations)", 
#>                 NROW(offset), ny), domain = NA)
#>     }
#>     if (is.empty.model(mt)) {
#>         x <- NULL
#>         z <- list(coefficients = if (mlm) matrix(NA_real_, 0, 
#>             ncol(y)) else numeric(), residuals = y, fitted.values = 0 * 
#>             y, weights = w, rank = 0L, df.residual = if (!is.null(w)) sum(w != 
#>             0) else ny)
#>         if (!is.null(offset)) {
#>             z$fitted.values <- offset
#>             z$residuals <- y - offset
#>         }
#>     }
#>     else {
#>         x <- model.matrix(mt, mf, contrasts)
#>         z <- if (is.null(w)) 
#>             lm.fit(x, y, offset = offset, singular.ok = singular.ok, 
#>                 ...)
#>         else lm.wfit(x, y, w, offset = offset, singular.ok = singular.ok, 
#>             ...)
#>     }
#>     class(z) <- c(if (mlm) "mlm", "lm")
#>     z$na.action <- attr(mf, "na.action")
#>     z$offset <- offset
#>     z$contrasts <- attr(x, "contrasts")
#>     z$xlevels <- .getXlevels(mt, mf)
#>     z$call <- cl
#>     z$terms <- mt
#>     if (model) 
#>         z$model <- mf
#>     if (ret.x) 
#>         z$x <- x
#>     if (ret.y) 
#>         z$y <- y
#>     if (!qr) 
#>         z$qr <- NULL
#>     z
#> })(formula = age ~ ., data = structure(list(trt = structure(c(1L, 
#> 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
#> 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 
#> 1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 
#> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 
#> 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 
#> 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 
#> 2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 
#> 1L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 
#> 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 
#> 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 
#> 2L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 
#> 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
#> 2L, 1L, 2L, 1L, 1L, 1L, 1L), levels = c("Drug A", "Drug B"), class = "factor", label = "Chemotherapy Treatment"), 
#>     age = structure(c(23, 9, 31, NA, 51, 39, 37, 32, 31, 34, 
#>     42, 63, 54, 21, 48, 71, 38, 49, 57, 46, 47, 52, 61, 38, 34, 
#>     49, 63, 67, 68, 78, 36, 37, 53, 36, 51, 48, 57, 31, 37, 28, 
#>     40, 49, 61, 56, 54, 71, 38, 31, 48, NA, 83, 52, 32, 53, 69, 
#>     60, 45, 39, NA, 38, 36, 71, 31, 43, 57, 53, 25, 44, 25, 30, 
#>     51, 40, NA, 43, 21, 54, 67, 43, 54, 41, 34, 34, 6, 39, 36, 
#>     58, 27, 47, NA, 50, 61, 47, 52, 51, 68, 33, 65, 34, 38, 60, 
#>     10, 49, 56, 50, 60, 49, 54, 39, 48, 65, 47, 61, 34, NA, NA, 
#>     58, 26, 44, 17, 68, 57, 66, 44, NA, 67, 48, 62, 35, 53, 53, 
#>     66, 55, 57, 47, 58, 43, 45, 44, 63, 59, 44, 53, 51, 28, 65, 
#>     63, 76, 61, 33, 48, 42, 36, 55, 20, 26, 50, 47, 74, 50, 31, 
#>     45, 51, 66, 76, 47, 48, 56, 70, 46, 43, 41, 41, 19, 49, 43, 
#>     43, 75, 52, 42, 37, 45, 35, 67, 38, 44, 45, 39, 46, NA, 42, 
#>     60, 31, 45, 38, NA, 19, 69, 66, NA, 64), label = "Age"), 
#>     marker = structure(c(0.16, 1.107, 0.277, 2.067, 2.767, 0.613, 
#>     0.354, 1.739, 0.144, 0.205, 0.513, 0.06, 0.831, 0.258, 0.128, 
#>     0.445, 2.083, 0.157, 0.066, 0.325, 0.266, 0.719, 1.713, 0.096, 
#>     0.105, 0.043, 0.981, 1.156, 0.105, 0.175, 0.309, 1.869, 2.008, 
#>     1.894, 0.16, 1.209, 0.108, 0.611, 0.222, 0.803, 0.37, NA, 
#>     0.177, 1.479, 0.161, 0.737, 0.124, 0.092, 0.385, 0.21, 0.475, 
#>     1.628, 0.583, NA, 0.702, 1.206, 2.213, 1.406, 0.101, 0.013, 
#>     2.032, 1.046, 0.408, 2.636, 1.263, NA, 2.447, 1.041, 0.531, 
#>     0.924, 1.087, 0.733, 2.157, 0.333, 1.527, 2.238, 0.153, 0.305, 
#>     0.131, 0.386, 1.645, 1.321, 0.229, 0.615, 1.976, 1.941, 0.22, 
#>     3.874, 0.982, 1.68, 1.091, 0.169, 0.511, 2.141, 0.599, NA, 
#>     0.389, 0.005, 0.075, 1.491, 0.358, 1.709, 0.056, 1.354, 2.522, 
#>     0.387, 0.592, 0.243, 0.215, 1.207, 0.29, 0.718, 0.589, 0.003, 
#>     1.328, 0.308, 0.691, 3.249, 0.039, 1.804, 0.238, 2.702, 1.441, 
#>     0.27, NA, NA, 0.062, 2.19, 0.976, 3.062, 0.124, 0.045, 1.892, 
#>     0.711, 1.079, 1.061, 0.239, 0.361, 0.033, 1.133, 1.225, 1.418, 
#>     3.751, 3.02, 0.086, 0.772, 1.882, 2.725, 2.41, 0.352, 0.895, 
#>     0.215, 0.141, 2.288, 1.658, 1.255, 1.306, 0.081, 0.667, 0.046, 
#>     0.662, 1.985, 1.063, 1.55, 0.015, 0.056, NA, 0.51, 0.929, 
#>     2.345, 0.25, 0.816, 0.022, 0.16, 0.547, 3.642, 0.092, 1.2, 
#>     1.512, 2.124, NA, 0.862, 0.182, 1.075, 0.021, 0.402, 0.063, 
#>     1.129, 0.61, NA, 0.717, 0.205, 0.946, 0.386, 0.37, 1.148, 
#>     NA, 0.136, 0.439, 1.148), label = "Marker Level (ng/mL)"), 
#>     stage = structure(c(1L, 2L, 1L, 3L, 4L, 4L, 1L, 1L, 1L, 3L, 
#>     1L, 3L, 4L, 4L, 1L, 4L, 4L, 2L, 1L, 1L, 2L, 2L, 4L, 4L, 4L, 
#>     2L, 4L, 1L, 4L, 3L, 1L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 4L, 4L, 
#>     3L, 1L, 4L, 3L, 4L, 1L, 1L, 2L, 1L, 4L, 1L, 2L, 2L, 3L, 3L, 
#>     2L, 4L, 1L, 4L, 2L, 4L, 1L, 4L, 1L, 4L, 1L, 1L, 1L, 4L, 1L, 
#>     2L, 2L, 2L, 1L, 4L, 4L, 2L, 2L, 4L, 4L, 3L, 2L, 4L, 3L, 2L, 
#>     4L, 1L, 2L, 1L, 4L, 3L, 3L, 1L, 3L, 2L, 3L, 2L, 2L, 3L, 4L, 
#>     4L, 3L, 3L, 2L, 3L, 2L, 2L, 3L, 2L, 1L, 1L, 3L, 4L, 1L, 4L, 
#>     3L, 3L, 2L, 4L, 2L, 1L, 2L, 1L, 4L, 3L, 3L, 3L, 2L, 1L, 2L, 
#>     1L, 2L, 2L, 1L, 3L, 2L, 1L, 1L, 1L, 3L, 3L, 4L, 1L, 2L, 2L, 
#>     1L, 3L, 4L, 2L, 4L, 2L, 1L, 2L, 3L, 1L, 3L, 4L, 2L, 2L, 1L, 
#>     2L, 2L, 3L, 1L, 2L, 2L, 1L, 1L, 3L, 2L, 3L, 1L, 1L, 2L, 4L, 
#>     2L, 4L, 4L, 2L, 3L, 4L, 3L, 4L, 4L, 1L, 1L, 4L, 4L, 4L, 1L, 
#>     2L, 2L, 2L, 4L, 3L, 3L, 2L, 2L, 4L, 3L), levels = c("T1", 
#>     "T2", "T3", "T4"), class = "factor", label = "T Stage"), 
#>     grade = structure(c(2L, 1L, 2L, 3L, 3L, 1L, 2L, 1L, 2L, 1L, 
#>     3L, 1L, 3L, 1L, 1L, 3L, 3L, 2L, 3L, 2L, 1L, 2L, 1L, 1L, 2L, 
#>     3L, 2L, 2L, 2L, 1L, 3L, 2L, 1L, 1L, 1L, 3L, 2L, 2L, 3L, 2L, 
#>     2L, 3L, 3L, 1L, 3L, 1L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 
#>     1L, 3L, 1L, 2L, 2L, 3L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 3L, 2L, 
#>     1L, 3L, 3L, 3L, 2L, 3L, 3L, 1L, 2L, 1L, 1L, 1L, 1L, 3L, 1L, 
#>     3L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 1L, 
#>     3L, 1L, 2L, 2L, 1L, 2L, 2L, 3L, 1L, 3L, 3L, 1L, 1L, 1L, 2L, 
#>     3L, 3L, 2L, 1L, 3L, 2L, 1L, 2L, 2L, 2L, 1L, 3L, 3L, 2L, 3L, 
#>     1L, 1L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 3L, 2L, 
#>     2L, 2L, 2L, 2L, 1L, 1L, 3L, 2L, 2L, 1L, 2L, 1L, 2L, 3L, 2L, 
#>     1L, 1L, 1L, 3L, 1L, 1L, 2L, 1L, 1L, 3L, 3L, 1L, 3L, 2L, 1L, 
#>     3L, 1L, 2L, 1L, 1L, 3L, 1L, 2L, 1L, 2L, 2L, 2L, 3L, 2L, 2L, 
#>     3L, 2L, 3L, 3L, 2L, 1L, 2L, 3L, 3L, 1L), levels = c("I", 
#>     "II", "III"), class = "factor", label = "Grade"), response = structure(c(0L, 
#>     1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
#>     1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 
#>     0L, 0L, 1L, 0L, NA, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 
#>     1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 
#>     0L, 0L, 0L, NA, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 
#>     0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 
#>     0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, NA, 0L, 0L, 1L, 
#>     0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 
#>     0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 
#>     1L, 1L, NA, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, NA, 1L, 0L, 
#>     0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 
#>     0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, NA, 0L, 1L, 
#>     0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, NA, 0L, 
#>     1L, 1L, 0L, 0L), label = "Tumor Response"), death = structure(c(0L, 
#>     0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
#>     0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 
#>     1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 
#>     0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
#>     0L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
#>     1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
#>     1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 
#>     1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
#>     0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 
#>     0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 
#>     0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 
#>     1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 
#>     0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 
#>     1L, 0L, 1L, 0L), label = "Patient Died"), ttdeath = structure(c(24, 
#>     24, 24, 17.64, 16.43, 15.64, 24, 18.43, 24, 10.53, 24, 24, 
#>     14.34, 12.89, 22.68, 8.71, 24, 15.21, 24, 24, 24, 24, 16.92, 
#>     23.89, 6.32, 15.77, 24, 24, 15.45, 17.43, 24, 20.9, 24, 24, 
#>     24, 21.19, 12.52, 24, 15.59, 18, 18.02, 12.43, 12.1, 24, 
#>     17.42, 24, 24, 24, 12.19, 10.02, 18.23, 10.42, 24, 24, 19.34, 
#>     12.21, 14.46, 19.34, 10.16, 13.15, 10.12, 24, 22.77, 24, 
#>     24, 22.13, 24, 20.62, 23.23, 7.38, 24, 24, 24, 24, 24, 19.22, 
#>     7.27, 23.88, 16.23, 24, 14.06, 24, 24, 24, 16.44, 23.81, 
#>     24, 18.37, 11.44, 20.94, 5.33, 22.92, 10.33, 24, 24, 14.54, 
#>     19.14, 24, 21.19, 16.07, 9.97, 24, 24, 24, 19.75, 16.67, 
#>     11.18, 18.29, 24, 17.56, 17.45, 24, 22.86, 13.68, 24, 24, 
#>     17.46, 24, 24, 24, 24, 24, 13, 9.73, 15.65, 24, 3.53, 20.35, 
#>     23.41, 16.47, 24, 24, 14.65, 17.81, 24, 21.83, 24, 24, 21.49, 
#>     12.68, 24, 24, 24, 24, 10.07, 24, 24, 24, 8.37, 20.33, 24, 
#>     24, 21.33, 12.63, 13.08, 24, 15.1, 20.14, 10.55, 24, 24, 
#>     24, 24, 23.6, 24, 19.98, 15.55, 23.72, 22.41, 19.54, 16.57, 
#>     24, 24, 24, 21.91, 24, 12.53, 24, 18.63, 14.82, 16.46, 24, 
#>     9.24, 17.77, 24, 24, 9.92, 16.16, 10.51, 20.81, 24, 16.44, 
#>     24, 22.4, 11.76, 24, 21.6, 24, 19.81, 24), label = "Months to Death/Censor")), class = c("tbl_df", 
#> "tbl", "data.frame"), row.names = c(NA, -200L)))
#> 
#> Coefficients:
#> (Intercept)    trtDrug B       marker      stageT2      stageT3      stageT4  
#>     45.9247      -0.4052      -0.1435       2.0519       2.4437      -3.1573  
#>     gradeII     gradeIII     response        death      ttdeath  
#>      0.1750       1.6855       4.9885       3.0775      -0.1394  
#> 
gtsummary::trial |>
  default_parsing() |>
  regression_model(
    outcome.str = "trt",
    auto.mode = FALSE,
    fun = "stats::glm",
    args.list = list(family = binomial(link = "logit"))
  )
#> 
#> Call:  (function (formula, family = gaussian, data, weights, subset, 
#>     na.action, start = NULL, etastart, mustart, offset, control = list(...), 
#>     model = TRUE, method = "glm.fit", x = FALSE, y = TRUE, singular.ok = TRUE, 
#>     contrasts = NULL, ...) 
#> {
#>     cal <- match.call()
#>     if (is.character(family)) 
#>         family <- get(family, mode = "function", envir = parent.frame())
#>     if (is.function(family)) 
#>         family <- family()
#>     if (is.null(family$family)) {
#>         print(family)
#>         stop("'family' not recognized")
#>     }
#>     if (missing(data)) 
#>         data <- environment(formula)
#>     mf <- match.call(expand.dots = FALSE)
#>     m <- match(c("formula", "data", "subset", "weights", "na.action", 
#>         "etastart", "mustart", "offset"), names(mf), 0L)
#>     mf <- mf[c(1L, m)]
#>     mf$drop.unused.levels <- TRUE
#>     mf[[1L]] <- quote(stats::model.frame)
#>     mf <- eval(mf, parent.frame())
#>     if (identical(method, "model.frame")) 
#>         return(mf)
#>     if (!is.character(method) && !is.function(method)) 
#>         stop("invalid 'method' argument")
#>     if (identical(method, "glm.fit")) 
#>         control <- do.call("glm.control", control)
#>     mt <- attr(mf, "terms")
#>     Y <- model.response(mf, "any")
#>     if (length(dim(Y)) == 1L) {
#>         nm <- rownames(Y)
#>         dim(Y) <- NULL
#>         if (!is.null(nm)) 
#>             names(Y) <- nm
#>     }
#>     X <- if (!is.empty.model(mt)) 
#>         model.matrix(mt, mf, contrasts)
#>     else matrix(, NROW(Y), 0L)
#>     weights <- as.vector(model.weights(mf))
#>     if (!is.null(weights) && !is.numeric(weights)) 
#>         stop("'weights' must be a numeric vector")
#>     if (!is.null(weights) && any(weights < 0)) 
#>         stop("negative weights not allowed")
#>     offset <- as.vector(model.offset(mf))
#>     if (!is.null(offset)) {
#>         if (length(offset) != NROW(Y)) 
#>             stop(gettextf("number of offsets is %d should equal %d (number of observations)", 
#>                 length(offset), NROW(Y)), domain = NA)
#>     }
#>     mustart <- model.extract(mf, "mustart")
#>     etastart <- model.extract(mf, "etastart")
#>     fit <- eval(call(if (is.function(method)) "method" else method, 
#>         x = X, y = Y, weights = weights, start = start, etastart = etastart, 
#>         mustart = mustart, offset = offset, family = family, 
#>         control = control, intercept = attr(mt, "intercept") > 
#>             0L, singular.ok = singular.ok))
#>     if (length(offset) && attr(mt, "intercept") > 0L) {
#>         fit2 <- eval(call(if (is.function(method)) "method" else method, 
#>             x = X[, "(Intercept)", drop = FALSE], y = Y, mustart = fit$fitted.values, 
#>             weights = weights, offset = offset, family = family, 
#>             control = control, intercept = TRUE))
#>         if (!fit2$converged) 
#>             warning("fitting to calculate the null deviance did not converge -- increase 'maxit'?")
#>         fit$null.deviance <- fit2$deviance
#>     }
#>     if (model) 
#>         fit$model <- mf
#>     fit$na.action <- attr(mf, "na.action")
#>     if (x) 
#>         fit$x <- X
#>     if (!y) 
#>         fit$y <- NULL
#>     structure(c(fit, list(call = cal, formula = formula, terms = mt, 
#>         data = data, offset = offset, control = control, method = method, 
#>         contrasts = attr(X, "contrasts"), xlevels = .getXlevels(mt, 
#>             mf))), class = c(fit$class, c("glm", "lm")))
#> })(formula = trt ~ age + marker + stage + grade + response + 
#>     death + ttdeath, family = structure(list(family = "binomial", 
#>     link = "logit", linkfun = function (mu) 
#>     .Call(C_logit_link, mu), linkinv = function (eta) 
#>     .Call(C_logit_linkinv, eta), variance = function (mu) 
#>     mu * (1 - mu), dev.resids = function (y, mu, wt) 
#>     .Call(C_binomial_dev_resids, y, mu, wt), aic = function (y, 
#>         n, mu, wt, dev) 
#>     {
#>         m <- if (any(n > 1)) 
#>             n
#>         else wt
#>         -2 * sum(ifelse(m > 0, (wt/m), 0) * dbinom(round(m * 
#>             y), round(m), mu, log = TRUE))
#>     }, mu.eta = function (eta) 
#>     .Call(C_logit_mu_eta, eta), initialize = {
#>         if (NCOL(y) == 1) {
#>             if (is.factor(y)) 
#>                 y <- y != levels(y)[1L]
#>             n <- rep.int(1, nobs)
#>             y[weights == 0] <- 0
#>             if (any(y < 0 | y > 1)) 
#>                 stop("y values must be 0 <= y <= 1")
#>             mustart <- (weights * y + 0.5)/(weights + 1)
#>             m <- weights * y
#>             if ("binomial" == "binomial" && any(abs(m - round(m)) > 
#>                 0.001)) 
#>                 warning(gettextf("non-integer #successes in a %s glm!", 
#>                   "binomial"), domain = NA)
#>         }
#>         else if (NCOL(y) == 2) {
#>             if ("binomial" == "binomial" && any(abs(y - round(y)) > 
#>                 0.001)) 
#>                 warning(gettextf("non-integer counts in a %s glm!", 
#>                   "binomial"), domain = NA)
#>             n <- (y1 <- y[, 1L]) + y[, 2L]
#>             y <- y1/n
#>             if (any(n0 <- n == 0)) 
#>                 y[n0] <- 0
#>             weights <- weights * n
#>             mustart <- (n * y + 0.5)/(n + 1)
#>         }
#>         else stop(gettextf("for the '%s' family, y must be a vector of 0 and 1's\nor a 2 column matrix where col 1 is no. successes and col 2 is no. failures", 
#>             "binomial"), domain = NA)
#>     }, validmu = function (mu) 
#>     all(is.finite(mu)) && all(mu > 0 & mu < 1), valideta = function (eta) 
#>     TRUE, simulate = function (object, nsim) 
#>     {
#>         ftd <- fitted(object)
#>         n <- length(ftd)
#>         ntot <- n * nsim
#>         wts <- object$prior.weights
#>         if (any(wts%%1 != 0)) 
#>             stop("cannot simulate from non-integer prior.weights")
#>         if (!is.null(m <- object$model)) {
#>             y <- model.response(m)
#>             if (is.factor(y)) {
#>                 yy <- factor(1 + rbinom(ntot, size = 1, prob = ftd), 
#>                   labels = levels(y))
#>                 split(yy, rep(seq_len(nsim), each = n))
#>             }
#>             else if (is.matrix(y) && ncol(y) == 2) {
#>                 yy <- vector("list", nsim)
#>                 for (i in seq_len(nsim)) {
#>                   Y <- rbinom(n, size = wts, prob = ftd)
#>                   YY <- cbind(Y, wts - Y)
#>                   colnames(YY) <- colnames(y)
#>                   yy[[i]] <- YY
#>                 }
#>                 yy
#>             }
#>             else rbinom(ntot, size = wts, prob = ftd)/wts
#>         }
#>         else rbinom(ntot, size = wts, prob = ftd)/wts
#>     }, dispersion = 1), class = "family"), data = structure(list(
#>     trt = structure(c(1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 
#>     2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
#>     2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 
#>     2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
#>     2L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
#>     1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 
#>     1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 
#>     2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 
#>     1L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 
#>     2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 
#>     1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 
#>     2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 
#>     2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 
#>     1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L), levels = c("Drug A", 
#>     "Drug B"), class = "factor", label = "Chemotherapy Treatment"), 
#>     age = structure(c(23, 9, 31, NA, 51, 39, 37, 32, 31, 34, 
#>     42, 63, 54, 21, 48, 71, 38, 49, 57, 46, 47, 52, 61, 38, 34, 
#>     49, 63, 67, 68, 78, 36, 37, 53, 36, 51, 48, 57, 31, 37, 28, 
#>     40, 49, 61, 56, 54, 71, 38, 31, 48, NA, 83, 52, 32, 53, 69, 
#>     60, 45, 39, NA, 38, 36, 71, 31, 43, 57, 53, 25, 44, 25, 30, 
#>     51, 40, NA, 43, 21, 54, 67, 43, 54, 41, 34, 34, 6, 39, 36, 
#>     58, 27, 47, NA, 50, 61, 47, 52, 51, 68, 33, 65, 34, 38, 60, 
#>     10, 49, 56, 50, 60, 49, 54, 39, 48, 65, 47, 61, 34, NA, NA, 
#>     58, 26, 44, 17, 68, 57, 66, 44, NA, 67, 48, 62, 35, 53, 53, 
#>     66, 55, 57, 47, 58, 43, 45, 44, 63, 59, 44, 53, 51, 28, 65, 
#>     63, 76, 61, 33, 48, 42, 36, 55, 20, 26, 50, 47, 74, 50, 31, 
#>     45, 51, 66, 76, 47, 48, 56, 70, 46, 43, 41, 41, 19, 49, 43, 
#>     43, 75, 52, 42, 37, 45, 35, 67, 38, 44, 45, 39, 46, NA, 42, 
#>     60, 31, 45, 38, NA, 19, 69, 66, NA, 64), label = "Age"), 
#>     marker = structure(c(0.16, 1.107, 0.277, 2.067, 2.767, 0.613, 
#>     0.354, 1.739, 0.144, 0.205, 0.513, 0.06, 0.831, 0.258, 0.128, 
#>     0.445, 2.083, 0.157, 0.066, 0.325, 0.266, 0.719, 1.713, 0.096, 
#>     0.105, 0.043, 0.981, 1.156, 0.105, 0.175, 0.309, 1.869, 2.008, 
#>     1.894, 0.16, 1.209, 0.108, 0.611, 0.222, 0.803, 0.37, NA, 
#>     0.177, 1.479, 0.161, 0.737, 0.124, 0.092, 0.385, 0.21, 0.475, 
#>     1.628, 0.583, NA, 0.702, 1.206, 2.213, 1.406, 0.101, 0.013, 
#>     2.032, 1.046, 0.408, 2.636, 1.263, NA, 2.447, 1.041, 0.531, 
#>     0.924, 1.087, 0.733, 2.157, 0.333, 1.527, 2.238, 0.153, 0.305, 
#>     0.131, 0.386, 1.645, 1.321, 0.229, 0.615, 1.976, 1.941, 0.22, 
#>     3.874, 0.982, 1.68, 1.091, 0.169, 0.511, 2.141, 0.599, NA, 
#>     0.389, 0.005, 0.075, 1.491, 0.358, 1.709, 0.056, 1.354, 2.522, 
#>     0.387, 0.592, 0.243, 0.215, 1.207, 0.29, 0.718, 0.589, 0.003, 
#>     1.328, 0.308, 0.691, 3.249, 0.039, 1.804, 0.238, 2.702, 1.441, 
#>     0.27, NA, NA, 0.062, 2.19, 0.976, 3.062, 0.124, 0.045, 1.892, 
#>     0.711, 1.079, 1.061, 0.239, 0.361, 0.033, 1.133, 1.225, 1.418, 
#>     3.751, 3.02, 0.086, 0.772, 1.882, 2.725, 2.41, 0.352, 0.895, 
#>     0.215, 0.141, 2.288, 1.658, 1.255, 1.306, 0.081, 0.667, 0.046, 
#>     0.662, 1.985, 1.063, 1.55, 0.015, 0.056, NA, 0.51, 0.929, 
#>     2.345, 0.25, 0.816, 0.022, 0.16, 0.547, 3.642, 0.092, 1.2, 
#>     1.512, 2.124, NA, 0.862, 0.182, 1.075, 0.021, 0.402, 0.063, 
#>     1.129, 0.61, NA, 0.717, 0.205, 0.946, 0.386, 0.37, 1.148, 
#>     NA, 0.136, 0.439, 1.148), label = "Marker Level (ng/mL)"), 
#>     stage = structure(c(1L, 2L, 1L, 3L, 4L, 4L, 1L, 1L, 1L, 3L, 
#>     1L, 3L, 4L, 4L, 1L, 4L, 4L, 2L, 1L, 1L, 2L, 2L, 4L, 4L, 4L, 
#>     2L, 4L, 1L, 4L, 3L, 1L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 4L, 4L, 
#>     3L, 1L, 4L, 3L, 4L, 1L, 1L, 2L, 1L, 4L, 1L, 2L, 2L, 3L, 3L, 
#>     2L, 4L, 1L, 4L, 2L, 4L, 1L, 4L, 1L, 4L, 1L, 1L, 1L, 4L, 1L, 
#>     2L, 2L, 2L, 1L, 4L, 4L, 2L, 2L, 4L, 4L, 3L, 2L, 4L, 3L, 2L, 
#>     4L, 1L, 2L, 1L, 4L, 3L, 3L, 1L, 3L, 2L, 3L, 2L, 2L, 3L, 4L, 
#>     4L, 3L, 3L, 2L, 3L, 2L, 2L, 3L, 2L, 1L, 1L, 3L, 4L, 1L, 4L, 
#>     3L, 3L, 2L, 4L, 2L, 1L, 2L, 1L, 4L, 3L, 3L, 3L, 2L, 1L, 2L, 
#>     1L, 2L, 2L, 1L, 3L, 2L, 1L, 1L, 1L, 3L, 3L, 4L, 1L, 2L, 2L, 
#>     1L, 3L, 4L, 2L, 4L, 2L, 1L, 2L, 3L, 1L, 3L, 4L, 2L, 2L, 1L, 
#>     2L, 2L, 3L, 1L, 2L, 2L, 1L, 1L, 3L, 2L, 3L, 1L, 1L, 2L, 4L, 
#>     2L, 4L, 4L, 2L, 3L, 4L, 3L, 4L, 4L, 1L, 1L, 4L, 4L, 4L, 1L, 
#>     2L, 2L, 2L, 4L, 3L, 3L, 2L, 2L, 4L, 3L), levels = c("T1", 
#>     "T2", "T3", "T4"), class = "factor", label = "T Stage"), 
#>     grade = structure(c(2L, 1L, 2L, 3L, 3L, 1L, 2L, 1L, 2L, 1L, 
#>     3L, 1L, 3L, 1L, 1L, 3L, 3L, 2L, 3L, 2L, 1L, 2L, 1L, 1L, 2L, 
#>     3L, 2L, 2L, 2L, 1L, 3L, 2L, 1L, 1L, 1L, 3L, 2L, 2L, 3L, 2L, 
#>     2L, 3L, 3L, 1L, 3L, 1L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 
#>     1L, 3L, 1L, 2L, 2L, 3L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 3L, 2L, 
#>     1L, 3L, 3L, 3L, 2L, 3L, 3L, 1L, 2L, 1L, 1L, 1L, 1L, 3L, 1L, 
#>     3L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 1L, 
#>     3L, 1L, 2L, 2L, 1L, 2L, 2L, 3L, 1L, 3L, 3L, 1L, 1L, 1L, 2L, 
#>     3L, 3L, 2L, 1L, 3L, 2L, 1L, 2L, 2L, 2L, 1L, 3L, 3L, 2L, 3L, 
#>     1L, 1L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 3L, 2L, 
#>     2L, 2L, 2L, 2L, 1L, 1L, 3L, 2L, 2L, 1L, 2L, 1L, 2L, 3L, 2L, 
#>     1L, 1L, 1L, 3L, 1L, 1L, 2L, 1L, 1L, 3L, 3L, 1L, 3L, 2L, 1L, 
#>     3L, 1L, 2L, 1L, 1L, 3L, 1L, 2L, 1L, 2L, 2L, 2L, 3L, 2L, 2L, 
#>     3L, 2L, 3L, 3L, 2L, 1L, 2L, 3L, 3L, 1L), levels = c("I", 
#>     "II", "III"), class = "factor", label = "Grade"), response = structure(c(1L, 
#>     2L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 
#>     2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 
#>     1L, 1L, 2L, 1L, NA, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 
#>     2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 
#>     1L, 1L, 1L, NA, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 
#>     1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 
#>     1L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, 1L, 1L, 2L, 
#>     1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 
#>     1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 
#>     2L, 2L, NA, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, NA, 2L, 1L, 
#>     1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 
#>     1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, NA, 1L, 2L, 
#>     1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, 1L, 
#>     2L, 2L, 1L, 1L), levels = c("0", "1"), class = "factor", label = "Tumor Response"), 
#>     death = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 
#>     1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
#>     2L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 
#>     2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 
#>     2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 
#>     1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 
#>     2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 
#>     2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 
#>     1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 
#>     1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 
#>     1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 
#>     1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 
#>     1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 
#>     1L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L), levels = c("0", 
#>     "1"), class = "factor", label = "Patient Died"), ttdeath = structure(c(24, 
#>     24, 24, 17.64, 16.43, 15.64, 24, 18.43, 24, 10.53, 24, 24, 
#>     14.34, 12.89, 22.68, 8.71, 24, 15.21, 24, 24, 24, 24, 16.92, 
#>     23.89, 6.32, 15.77, 24, 24, 15.45, 17.43, 24, 20.9, 24, 24, 
#>     24, 21.19, 12.52, 24, 15.59, 18, 18.02, 12.43, 12.1, 24, 
#>     17.42, 24, 24, 24, 12.19, 10.02, 18.23, 10.42, 24, 24, 19.34, 
#>     12.21, 14.46, 19.34, 10.16, 13.15, 10.12, 24, 22.77, 24, 
#>     24, 22.13, 24, 20.62, 23.23, 7.38, 24, 24, 24, 24, 24, 19.22, 
#>     7.27, 23.88, 16.23, 24, 14.06, 24, 24, 24, 16.44, 23.81, 
#>     24, 18.37, 11.44, 20.94, 5.33, 22.92, 10.33, 24, 24, 14.54, 
#>     19.14, 24, 21.19, 16.07, 9.97, 24, 24, 24, 19.75, 16.67, 
#>     11.18, 18.29, 24, 17.56, 17.45, 24, 22.86, 13.68, 24, 24, 
#>     17.46, 24, 24, 24, 24, 24, 13, 9.73, 15.65, 24, 3.53, 20.35, 
#>     23.41, 16.47, 24, 24, 14.65, 17.81, 24, 21.83, 24, 24, 21.49, 
#>     12.68, 24, 24, 24, 24, 10.07, 24, 24, 24, 8.37, 20.33, 24, 
#>     24, 21.33, 12.63, 13.08, 24, 15.1, 20.14, 10.55, 24, 24, 
#>     24, 24, 23.6, 24, 19.98, 15.55, 23.72, 22.41, 19.54, 16.57, 
#>     24, 24, 24, 21.91, 24, 12.53, 24, 18.63, 14.82, 16.46, 24, 
#>     9.24, 17.77, 24, 24, 9.92, 16.16, 10.51, 20.81, 24, 16.44, 
#>     24, 22.4, 11.76, 24, 21.6, 24, 19.81, 24), label = "Months to Death/Censor")), class = c("tbl_df", 
#> "tbl", "data.frame"), row.names = c(NA, -200L)))
#> 
#> Coefficients:
#> (Intercept)          age       marker      stageT2      stageT3      stageT4  
#>    1.652845    -0.002014    -0.259849     0.404341     0.117402    -0.002102  
#>     gradeII     gradeIII    response1       death1      ttdeath  
#>   -0.037012     0.022890     0.498952    -0.003916    -0.076073  
#> 
#> Degrees of Freedom: 172 Total (i.e. Null);  162 Residual
#>   (27 observations deleted due to missingness)
#> Null Deviance:	    239.5 
#> Residual Deviance: 230.9 	AIC: 252.9
m <- mtcars |>
  default_parsing() |>
  regression_model(
    outcome.str = "mpg",
    auto.mode = FALSE,
    fun = "stats::lm",
    formula.str = "{outcome.str}~{paste(vars,collapse='+')}",
    args.list = NULL,
    vars = c("mpg", "cyl")
  )
  broom::tidy(m)
#> # A tibble: 3 × 5
#>   term        estimate std.error statistic  p.value
#>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
#> 1 (Intercept)    26.7      0.972     27.4  2.69e-22
#> 2 cyl6           -6.92     1.56      -4.44 1.19e- 4
#> 3 cyl8          -11.6      1.30      -8.90 8.57e-10
if (FALSE) { # \dontrun{
gtsummary::trial |>
  regression_model_uv(outcome.str = "age")
gtsummary::trial |>
  regression_model_uv(
    outcome.str = "age",
    fun = "stats::lm",
    args.list = NULL
  )
m <- gtsummary::trial |> regression_model_uv(
  outcome.str = "trt",
  fun = "stats::glm",
  args.list = list(family = stats::binomial(link = "logit"))
)
lapply(m,broom::tidy) |> dplyr::bind_rows()
} # }
if (FALSE) { # \dontrun{
gtsummary::trial |>
  regression_model(
    outcome.str = "age",
    fun = "stats::lm",
    formula.str = "{outcome.str}~.",
    args.list = NULL
  )
ls <- regression_model_list(data = default_parsing(mtcars), outcome.str = "cyl", fun.descr = "Ordinal logistic regression model")
summary(ls$model)

ls <- regression_model_list(data = default_parsing(gtsummary::trial), outcome.str = "trt", fun.descr = "Logistic regression model")
tbl <- gtsummary::tbl_regression(ls$model, exponentiate = TRUE)
m <- gtsummary::trial |>
  default_parsing() |>
  regression_model(
    outcome.str = "trt",
    fun = "stats::glm",
    formula.str = "{outcome.str}~.",
    args.list = list(family = stats::binomial(link = "logit"))
  )
tbl2 <- gtsummary::tbl_regression(m, exponentiate = TRUE)
broom::tidy(ls$model)
broom::tidy(m)
} # }
if (FALSE) { # \dontrun{
gtsummary::trial |> regression_model_uv(
  outcome.str = "trt",
  fun = "stats::glm",
  args.list = list(family = stats::binomial(link = "logit"))
) |> lapply(broom::tidy) |> dplyr::bind_rows()
ms <- regression_model_uv_list(data = default_parsing(mtcars), outcome.str = "mpg", fun.descr = "Linear regression model")
lapply(ms$model,broom::tidy) |> dplyr::bind_rows()
} # }