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).
Assuming you have a C++ compiler installed, you can install sdmTMB:
# install.packages("remotes")
remotes::install_github("pbs-assess/sdmTMB")
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 + (1 | g), time_varying = ~ 0 + x2
), wherey
is the response,1
represents an intercept,0
omits an intercept,x1
is a covariate with a constant effect,(1 | g)
is a random intercept across groupsg
, andx2
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)
ory ~ logistic(x2)
. - Uses a
family(link)
format similar toglm()
, 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()
andresiduals()
methods. The residuals are randomized-quantile residuals similar to those implemented in the DHARMa package. Thepredict()
function can take anewdata
argument similar tolm()
orglm()
etc. The predictions are bilinear interpolated predictive-process predictions (i.e., they make smooth pretty maps). - Has a simulation function
sdmTMB_sim()
for simulation testing models andsdmTMB_cv()
for cross-validation testing of model accuracy or comparing across model configurations. - Includes functionality for estimating the centre of gravity or total biomass by time step for index standardization.
- Can optionally allow for anisotropy in the random fields (spatial correlation that is directionally dependent) and barriers (e.g., land for ocean species) to spatial correlation.
- Can generate an SPDE predictive-process mesh or can take any standard R-INLA mesh created externally as input.
The main function is sdmTMB()
. See ?sdmTMB
and ?predict.sdmTMB
for
the most complete examples. Also see the vignettes (‘Articles’) on the
documentation site.