Spatial and spatiotemporal GLMMs with TMB

sdmTMB is an R package that implements spatial and spatiotemporal predictive-process GLMMs (Generalized Linear Mixed Effects Models) using Template Model Builder (TMB), R-INLA, and Gaussian Markov random fields. One common application is for species distribution models (SDMs).

## Installation

Assuming you have a C++ compiler installed, you can install sdmTMB:

# install.packages("remotes")
remotes::install_github("pbs-assess/sdmTMB")

## Functionality

sdmTMB:

• Fits GLMMs with spatial, spatiotemporal, spatial and spatiotemporal, or AR1 spatiotemporal Gaussian Markov random fields with TMB. It can also fit spatially varying local trends through time as a random field.
• Uses formula interfaces for fixed effects and any time-varying effects (dynamic regression) (e.g. formula = y ~ 1 + x1, time_varying = ~ 0 + x2), where y is the response, 1 represents an intercept, 0 omits an intercept, x1 is a covariate with a constant effect, and x2 is a covariate with a time-varying effect.
• Can handle formulas with splines from mgcv. E.g., y ~ s(x, k = 4).
• Can handle linear breakpoint or logistic threshold fixed effects: y ~ breakpt(x1) or y ~ logistic(x2).
• Uses a family(link) format similar to glm(), lme4, or glmmTMB. This includes Gaussian, Poisson, negative binomial, gamma, binomial, lognormal, Student-t, and Tweedie distributions with identity, log, inverse, and logit links. E.g., family = tweedie(link = "log").
• Has predict() and residuals() methods. The residuals are randomized-quantile residuals similar to those implemented in the DHARMa package. The predict() function can take a newdata argument similar to lm() or glm() etc. The predictions are bilinear interpolated predictive-process predictions (i.e., they make smooth pretty maps).
• Includes functionality for estimating the centre of gravity or total biomass by time step for index standardization.
• Implements multi-phase estimation for speed.
• Can optionally allow for anisotropy in the random fields (spatial correlation that is directionally dependent).
• Can generate an SPDE predictive-process mesh based on a clustering algorithm and R-INLA or can take any standard R-INLA mesh created externally as input.

## Examples

The main function is sdmTMB(). See ?sdmTMB and ?predict.sdmTMB for the most complete examples. Also see the vignettes (‘Articles’) on the documentation site.