2 regression_table

2.1 Lýsing

Með regression_table er einfalt og fljótlegt að búa til stíhreina töflu fyrir niðurstöður úr línulegu eða tvíkosta (logistic) aðhvarfi. Hægt er að skilgreina eitt fjölþátta líkan og birta niðurstöður fyrir allar skýribreyturnar í því líkani, sem er áþekkt summary(lm(...)). Einnig er hægt að keyra lista af skýribreytum gegnum líkanið og birta niðurstöður fyrir hverja þeirra í einni og sömu töflunni.

95% öryggisbil eru reiknuð með confint skipuninni.

2.2 Breytur

Fallið tekur breytunar:

  • variables: vigri með einni eða fleiri skýribreytum sem við höfum áhuga á. Ef ein breyta er tilgreind eru birtar niðurstöður fyrir þá breytu ásamt öðrum skýribreytum í líkaninu (tilgreindar í covariates), t.d. eitt fjölþátta líkan. Ef fleiri breytur eru tilgreindar eru birtar niðurstöður fyrir hverja og eina þeirra, þar sem leiðrétt er fyrir breytunum í covariates.
  • outcome: svarbreytan í líkaninu.
  • covariates: vigri með skýribreytum til þess að leiðrétta fyrir. Sleppa má covariates til þess að fá óleiðréttar niðurstöður.
  • model_type: Tekur gildið linear fyrir línulegt aðhvarf (notar lm) og logistic við tvíkosta aðhvarf (notar glm með family = binomial).
  • data

2.3 Skilgreining

source("https://raw.githubusercontent.com/eythorbj/R/master/functions/function_regression_table.R")

2.4 Dæmi 1

Óleiðrétt fylgni kviðarummáls við sykursýki, tvíkosta aðhvarf.

regression_table(variables = "waist", outcome = "dm==1", model_type = "logistic", data = data) %>%
  kable(align='c', caption = "Unadjusted model")  %>%
  kable_styling(full_width = F) %>%
  add_header_above(c(" " = 2, "Diabetes mellitus" = 3))
Table 2.1: Unadjusted model
Diabetes mellitus
Predictors N Unadj. OR 95% CI P
waist 388 1.109 1.058, 1.164 2.4e-05

Sjáum líka óleiðrétta fylgni fyrir aldur og hdl.

regression_table(variables = c("waist", "age", "hdl"), outcome = "dm==1", model_type = "logistic", data = data) %>%
  kable(align='c', caption = "Unadjusted models") %>%
  kable_styling(full_width = F) %>%
  add_header_above(c(" " = 2, "Diabetes mellitus" = 3))
Table 2.2: Unadjusted models
Diabetes mellitus
Predictors N Unadj. OR 95% CI P
waist 388 1.109 1.058, 1.164 2.4e-05
age 390 1.054 1.035, 1.074 2.3e-08
hdl 389 0.977 0.957, 0.995 0.016

2.5 Dæmi 2

Fyglni kviðarummáls við sykrað hemóglóbín, leiðrétt fyrir aldri og kyni. Þar sem aðeins ein breyta er tilgreind í variables skilar fallið niðurstöðum fyrir allar breytur í líkaninu, svipað og summary(lm(...)).

regression_table(variables = "waist", outcome = "glyhb", covariates = c("age", "gender"), model_type = "linear", data = data) %>%
  kable(align='c', caption = "Multivariate model") %>% 
  kable_styling(full_width = F) %>%
  add_header_above(c(" " = 2, "HbA1c (%)" = 3))
Table 2.3: Multivariate model
HbA1c (%)
Predictors N Adj. beta 95% CI P
waist 388 0.071 0.034, 0.107 0.00016
age 388 0.042 0.029, 0.055 4e-10
gendermale 388 0.150 -0.274, 0.573 0.49

Ef við tilgreinum fleiri breytur í variables fáum við fylgni fyrir hverja og eina þeirra við sykrað hemógóbín, þar sem leiðrétt fyrir aldri og kyni hverju sinni.

regression_table(variables = c("waist", "chol", "hdl", "weight"), outcome = "glyhb", covariates = c("age", "gender"), model_type = "linear", data = data) %>%
  kable(align='c', caption = "Associations with HbA1c (%)") %>%
  kable_styling(full_width = F) %>%
  add_header_above(c(" " = 2, "HbA1c (%)[note]" = 3)) %>%
  add_footnote(c("Each model is adjusted for age and sex"))
Table 2.4: Associations with HbA1c (%)
HbA1c (%)a
Predictors N Adj. beta 95% CI P
waist 388 0.071 0.034, 0.107 0.00016
chol 389 0.009 0.004, 0.014 0.00036
hdl 389 -0.021 -0.033, -0.008 0.00097
weight 389 0.011 0.005, 0.016 5.5e-05
a Each model is adjusted for age and sex

2.6 Dæmi 3

Hægt er að skilgreina breyturnar á sama hátt og þegar unnið er með lm og glm. T.d. má staðla breytu með scale() (þar sem einingin jafngildir einu staðalfráviki) eða umbreyta samfelldri breytu í tvíkosta breytu með því að tilgreina þröskuld.

regression_table(variables = c("scale(waist)", "(chol>250)", "(hdl<30)", "weight"), outcome = "(glyhb>7.5)", covariates = c("age", "gender"), model_type = "logistic", data = data) %>%
  kable(align='c', caption = "Associations with HbA1c above 7.5%") %>%
  kable_styling(full_width = F) %>%
  add_header_above(c(" " = 2, "HbA1c > 7.5%[note]" = 3)) %>%
   add_footnote(c("Each model is adjusted for age and sex"))
Table 2.5: Associations with HbA1c above 7.5%
HbA1c > 7.5%a
Predictors N Adj. OR 95% CI P
scale(waist) 388 1.679 1.242, 2.287 0.00084
(chol>250) 389 1.973 0.944, 3.975 0.062
(hdl<30) 389 3.753 1.341, 10.066 0.0092
weight 389 1.014 1.006, 1.022 0.00043
a Each model is adjusted for age and sex

2.7 Dæmi 4

Það er mjög auðvelt að takmarka niðurstöður við ákveðinn undirhóp með data=subset(...). Hér er sama tafla og í dæminu að ofan, en takmarkað við þá sem eru yngri en 50 ára.

regression_table(variables = c("scale(waist)", "(chol>250)", "(hdl<30)", "weight"), outcome = "(glyhb>7.5)", covariates = c("age", "gender"), model_type = "logistic", data = subset(data, age < 50)) %>%
  kable(align='c', caption = "Associations with HbA1c above 7.5% in patients under 50 years") %>%
  kable_styling(full_width = F) %>%
  add_header_above(c(" " = 2, "HbA1c > 7.5%[note]" = 3)) %>%
   add_footnote(c("Each model is adjusted for age and sex"))
Table 2.6: Associations with HbA1c above 7.5% in patients under 50 years
HbA1c > 7.5%a
Predictors N Adj. OR 95% CI P
scale(waist) 224 2.080 1.171, 3.809 0.014
(chol>250) 224 0.704 0.037, 4.059 0.75
(hdl<30) 224 5.700 0.266, 48.955 0.15
weight 225 1.015 1.002, 1.028 0.019
a Each model is adjusted for age and sex