GLMs, Mixed & Nonlinear Models
Families: gaussian, binomial, poisson, Gamma, inverse.gaussian, quasibinomial, quasipoisson.
29.1 Generalized linear models
Families: gaussian, binomial, poisson, Gamma, inverse.gaussian, quasibinomial, quasipoisson. Evaluate with deviance, AIC, pROC::roc() (AUC), confusion matrices.
# Logistic regression
logit <- glm(am ~ wt + hp, data = mtcars, family = binomial)
summary(logit)
exp(coef(logit)) # odds ratios
predict(logit, newdata = data.frame(wt = 3, hp = 100), type = "response") # probability
# Poisson regression for counts
pois <- glm(count ~ treatment + offset(log(exposure)), family = poisson, data = df)
# Overdispersion → quasipoisson or negative binomial
MASS::glm.nb(count ~ treatment, data = df)29.2 Multinomial, ordinal & survival models
nnet::multinom(species ~ bill_length_mm + bill_depth_mm, data = penguins)
MASS::polr(rating ~ x, data = df, Hess = TRUE) # ordinal logistic
library(survival)
fit <- survfit(Surv(time, status) ~ sex, data = lung); plot(fit) # Kaplan-Meier
coxph(Surv(time, status) ~ age + sex, data = lung) # Cox proportional hazards
survminer::ggsurvplot(fit)29.3 Mixed-effects (multilevel) models
Also: nlme, glmmTMB (zero-inflation, many families), brms (Bayesian).
library(lme4)
m <- lmer(Reaction ~ Days + (Days | Subject), data = sleepstudy) # random intercept & slope
summary(m); fixef(m); ranef(m); VarCorr(m)
lmerTest::lmer(...) # p-values for fixed effects
glmer(outcome ~ x + (1 | cluster), family = binomial, data = df)29.4 Nonlinear & additive models
nls(y ~ a * exp(b * x), data = df, start = list(a = 1, b = 0.1)) # nonlinear least squares
library(mgcv)
gam(y ~ s(x1) + s(x2, k = 5) + te(x3, x4), data = df, method = "REML") # generalized additive models
loess(y ~ x, span = 0.5); smooth.spline(x, y)29.5 Multivariate methods
Structural equation modeling: lavaan; psychometrics: psych.
pca <- prcomp(scale(mtcars)); summary(pca); biplot(pca) # PCA
factoextra::fviz_pca_biplot(pca)
km <- kmeans(scale(iris[, 1:4]), centers = 3, nstart = 25) # k-means
hc <- hclust(dist(scale(mtcars))); plot(hc); cutree(hc, k = 4) # hierarchical clustering
cmdscale(dist(x)); factanal(x, factors = 2) # MDS, factor analysis
MASS::lda(Species ~ ., iris) # linear discriminant analysis
umap::umap(x); Rtsne::Rtsne(x) # nonlinear dimensionality reduction29.6 Bayesian statistics
Ecosystem: Stan (cmdstanr, rstan), brms, rstanarm, bayesplot, tidybayes, loo, posterior, JAGS (rjags), INLA, greta.
library(brms)
fit <- brm(mpg ~ wt + (1 | cyl), data = mtcars, family = gaussian(), chains = 4, iter = 2000)
summary(fit); plot(fit); pp_check(fit); conditional_effects(fit)
rstanarm::stan_glm(mpg ~ wt, data = mtcars)