3

I'm facing a problem when trying to implement the tbl_uvregression() for making a specific table summarizing univariable analysis I want to display for count regression with Poisson model.

I've a data frame named Data, my outcome is a count (anomalies_tot). I've also an offset nvx.

Data <- tibble::tribble(
  ~nvx, ~anomalies_tot,            ~age_moyen,                ~productivite,
    1L,              2, "Entre 8 et 10 jours", "Entre 9 500 et 11 000 L/VL",
    1L,              1, "Entre 8 et 10 jours", "Entre 9 500 et 11 000 L/VL",
    2L,              3,    "Plus de 10 jours",        "Moins de 9 500 L/VL",
    1L,              4,    "Plus de 10 jours", "Entre 9 500 et 11 000 L/VL",
    2L,              3,    "Plus de 10 jours",        "Moins de 9 500 L/VL",
    2L,              3, "Entre 8 et 10 jours",        "Plus de 11 000 L/VL",
    2L,              5, "Entre 8 et 10 jours",        "Plus de 11 000 L/VL",
    2L,              1,    "Moins de 8 jours",        "Plus de 11 000 L/VL",
    3L,              2, "Entre 8 et 10 jours",        "Moins de 9 500 L/VL",
    3L,              8,    "Moins de 8 jours",        "Moins de 9 500 L/VL",
    1L,              3,    "Moins de 8 jours", "Entre 9 500 et 11 000 L/VL",
    1L,              2, "Entre 8 et 10 jours",        "Moins de 9 500 L/VL",
    5L,             12,    "Moins de 8 jours", "Entre 9 500 et 11 000 L/VL",
    1L,              2, "Entre 8 et 10 jours",        "Moins de 9 500 L/VL",
    3L,              2,    "Plus de 10 jours", "Entre 9 500 et 11 000 L/VL",
    2L,              3,    "Plus de 10 jours", "Entre 9 500 et 11 000 L/VL",
    2L,              5,    "Plus de 10 jours", "Entre 9 500 et 11 000 L/VL",
    2L,              2, "Entre 8 et 10 jours",        "Plus de 11 000 L/VL",
    3L,              5, "Entre 8 et 10 jours",        "Plus de 11 000 L/VL",
   11L,             26,    "Moins de 8 jours",        "Moins de 9 500 L/VL",
    3L,              8,    "Moins de 8 jours", "Entre 9 500 et 11 000 L/VL",
    3L,              7,    "Plus de 10 jours",        "Plus de 11 000 L/VL",
    1L,              0,    "Plus de 10 jours",        "Moins de 9 500 L/VL"
  )

I've a specific vector of covariates u_var where:

u_var <- c("age_moyen", "productivite")

u_var is a vector of my covariates (I've only selected 2 of them)

I've also a specific offset = (nvx) that needs to be accounted for in my model. I've initially run the univariable Poisson using lapply function:

lapply(u_var,
       function(var) {
           formula    <- as.formula(paste("anomalies_tot ~", var, "+offset(log(nvx))"))
           res.pois.uni <- glm(formula, data = Data, fam = poisson(link = log))
        })

This work well but results are not displayed nicely for being reported in a white paper. I would be very interested to display the univariable results of Poisson model for individual covariates included in u_var. My code I'm trying is not working and I don't know how to add information on my offset=log(offset)

   `Data %>%   dplyr::select(u_var, anomalies_tot, nvx) %>% tbl_uvregression(method = glm,   y = anomalies_tot, method.args = list(family = "poisson"), 
    exponentiate = TRUE)`

Therefore I'm asking for any advice in how to produce a specific table of univariable Poisson analysis for all my variables u_var (unadjusted results) using the friendly gtsummary outputs. Thanks in advance.

Buczinski
  • 41
  • 4
  • Please update your post with a minimal reproducible example, aka a reprex, that we can all run on our machines. Also include one example build one model outside of tbl_uvregression. This will help model the correct response. – Daniel D. Sjoberg Jun 07 '22 at 20:29
  • Thanks for this. It was my first post. I've tried to explain it more properly. – Buczinski Jun 09 '22 at 01:54

1 Answers1

2

The trick is to specify the formula= argument here. Example Below!!

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

Data <- tibble::tribble(
  ~nvx, ~anomalies_tot,            ~age_moyen,                ~productivite,
  1L,              2, "Entre 8 et 10 jours", "Entre 9 500 et 11 000 L/VL",
  1L,              1, "Entre 8 et 10 jours", "Entre 9 500 et 11 000 L/VL",
  2L,              3,    "Plus de 10 jours",        "Moins de 9 500 L/VL",
  1L,              4,    "Plus de 10 jours", "Entre 9 500 et 11 000 L/VL",
  2L,              3,    "Plus de 10 jours",        "Moins de 9 500 L/VL",
  2L,              3, "Entre 8 et 10 jours",        "Plus de 11 000 L/VL",
  2L,              5, "Entre 8 et 10 jours",        "Plus de 11 000 L/VL",
  2L,              1,    "Moins de 8 jours",        "Plus de 11 000 L/VL",
  3L,              2, "Entre 8 et 10 jours",        "Moins de 9 500 L/VL",
  3L,              8,    "Moins de 8 jours",        "Moins de 9 500 L/VL",
  1L,              3,    "Moins de 8 jours", "Entre 9 500 et 11 000 L/VL",
  1L,              2, "Entre 8 et 10 jours",        "Moins de 9 500 L/VL",
  5L,             12,    "Moins de 8 jours", "Entre 9 500 et 11 000 L/VL",
  1L,              2, "Entre 8 et 10 jours",        "Moins de 9 500 L/VL",
  3L,              2,    "Plus de 10 jours", "Entre 9 500 et 11 000 L/VL",
  2L,              3,    "Plus de 10 jours", "Entre 9 500 et 11 000 L/VL",
  2L,              5,    "Plus de 10 jours", "Entre 9 500 et 11 000 L/VL",
  2L,              2, "Entre 8 et 10 jours",        "Plus de 11 000 L/VL",
  3L,              5, "Entre 8 et 10 jours",        "Plus de 11 000 L/VL",
  11L,             26,    "Moins de 8 jours",        "Moins de 9 500 L/VL",
  3L,              8,    "Moins de 8 jours", "Entre 9 500 et 11 000 L/VL",
  3L,              7,    "Plus de 10 jours",        "Plus de 11 000 L/VL",
  1L,              0,    "Plus de 10 jours",        "Moins de 9 500 L/VL"
)

tbl <-
  Data %>%
  tbl_uvregression(
    y = anomalies_tot,
    formula = "{y} ~ {x} + offset(log(nvx))",
    include = -nvx,
    exponentiate = TRUE,
    method = glm,
    method.args = list(family = poisson(link = log))
  )

enter image description here Created on 2022-06-09 by the reprex package (v2.0.1)

Daniel D. Sjoberg
  • 8,820
  • 2
  • 12
  • 28
  • Thank you very much for this answer! I really appreciate. Congratulation again for this terrific package! – Buczinski Jun 14 '22 at 10:01