Codes used in models^[See childRmd/_21models.Rmd file for other codes]
Use these descriptions to add autoreporting of new models

Linear Model

generate automatic reporting of model via easystats/report 📦

library(report)
model <- lm(Sepal.Length ~ Species, data = iris)
report::report(model)

Table report for a linear model

# Table report for a linear model
lm(Sepal.Length ~ Petal.Length + Species, data=iris) %>% 
  report::report() %>% 
  report::to_table() %>% 
  kableExtra::kable()
model <- lm(Sepal.Length ~ Petal.Length + Species, data=iris)
r <- report(model)
to_text(r)
to_table(r)

General Linear Models (GLMs)

https://stat.ethz.ch/R-manual/R-devel/library/stats/html/glm.html

model <- glm(vs ~ mpg + cyl, data=mtcars, family="binomial")
r <- report(model)

to_fulltext(r)
to_fulltable(r)
explanatory = c("age.factor", "sex.factor", "obstruct.factor", "perfor.factor")
dependent = 'mort_5yr'
colon_s %>%
  summarizer(dependent, explanatory)
Where a multivariable model contains a subset of the variables specified in the full univariable set, this can be specified.

explanatory = c("age.factor", "sex.factor", "obstruct.factor", "perfor.factor")
explanatory.multi = c("age.factor", "obstruct.factor")
dependent = 'mort_5yr'
colon_s %>%
  summarizer(dependent, explanatory, explanatory.multi)

Random effects.

e.g. lme4::glmer(dependent ~ explanatory + (1 | random_effect), family="binomial")

explanatory = c("age.factor", "sex.factor", "obstruct.factor", "perfor.factor")
explanatory.multi = c("age.factor", "obstruct.factor")
random.effect = "hospital"
dependent = 'mort_5yr'
colon_s %>%
  summarizer(dependent, explanatory, explanatory.multi, random.effect)

metrics=TRUE provides common model metrics.

colon_s %>%
  summarizer(dependent, explanatory, explanatory.multi,  metrics=TRUE)

Cox proportional hazards

e.g. survival::coxph(dependent ~ explanatory)

explanatory = c("age.factor", "sex.factor", "obstruct.factor", "perfor.factor")
dependent = "Surv(time, status)"

colon_s %>%
    summarizer(dependent, explanatory)

Rather than going all-in-one, any number of subset models can be manually added on to a summary.factorlist() table using summarizer.merge(). This is particularly useful when models take a long-time to run or are complicated.

Note requirement for glm.id=TRUE. fit2df is a subfunction extracting most common models to a dataframe.

explanatory = c("age.factor", "sex.factor", "obstruct.factor", "perfor.factor")
explanatory.multi = c("age.factor", "obstruct.factor")
random.effect = "hospital"
dependent = 'mort_5yr'

# Separate tables
colon_s %>%
  summary.factorlist(dependent, explanatory, glm.id=TRUE) -> example.summary

colon_s %>%
  glmuni(dependent, explanatory) %>%
  fit2df(estimate.suffix=" (univariable)") -> example.univariable

colon_s %>%
  glmmulti(dependent, explanatory) %>%
  fit2df(estimate.suffix=" (multivariable)") -> example.multivariable


colon_s %>%
  glmmixed(dependent, explanatory, random.effect) %>%
  fit2df(estimate.suffix=" (multilevel") -> example.multilevel

# Pipe together
example.summary %>%
  summarizer.merge(example.univariable) %>%
  summarizer.merge(example.multivariable) %>%
  summarizer.merge(example.multilevel) %>%
  select(-c(glm.id, index)) -> example.final
example.final

Cox Proportional Hazards example with separate tables merged together.

explanatory = c("age.factor", "sex.factor", "obstruct.factor", "perfor.factor")
explanatory.multi = c("age.factor", "obstruct.factor")
dependent = "Surv(time, status)"

# Separate tables
colon_s %>%
    summary.factorlist(dependent, explanatory, glm.id=TRUE) -> example2.summary

colon_s %>%
    coxphuni(dependent, explanatory) %>%
    fit2df(estimate.suffix=" (univariable)") -> example2.univariable

colon_s %>%
  coxphmulti(dependent, explanatory.multi) %>%
  fit2df(estimate.suffix=" (multivariable)") -> example2.multivariable

# Pipe together
example2.summary %>%
    summarizer.merge(example2.univariable) %>%
    summarizer.merge(example2.multivariable) %>%
    select(-c(glm.id, index)) -> example2.final
example2.final







# OR plot
explanatory = c("age.factor", "sex.factor", "obstruct.factor", "perfor.factor")
dependent = 'mort_5yr'
colon_s %>%
  or.plot(dependent, explanatory)
# Previously fitted models (`glmmulti()` or `glmmixed()`) can be provided directly to `glmfit`

# HR plot (not fully tested)
explanatory = c("age.factor", "sex.factor", "obstruct.factor", "perfor.factor")
dependent = "Surv(time, status)"
colon_s %>%
  hr.plot(dependent, explanatory, dependent_label = "Survival")
# Previously fitted models (`coxphmulti`) can be provided directly using `coxfit`

ANOVA

num_cat <- dlookr::relate(num, ShelveLoc)
num_cat
summary(num_cat)
plot(num_cat)

Bayesian

# Full report for a Bayesian logistic mixed model with effect sizes
library(rstanarm)

stan_glmer(vs ~ mpg + (1|cyl), data=mtcars, family="binomial") %>% 
  report(standardize="smart", effsize="cohen1988") %>% 
  to_fulltext()

lme4: Mixed-effects models in R

https://github.com/lme4/lme4/

indices of model quality and goodness of fit

Test if your model is a good model

https://easystats.github.io/performance/



sbalci/histopathology-template documentation built on June 29, 2023, 5:52 a.m.