sdmTMB model structure
The complete sdmTMB model can be written as
\[
\begin{aligned}
\eta_{\mathbf{s},t} &=
\mathbf{X}^{\mathrm{main}}_{\mathbf{s},t} \boldsymbol{\beta}+
O_{\mathbf{s},t} +
\mathbf{Z}_{g} \mathbf{b}_{g} +
\mathbf{X}^{\mathrm{tvc}}_{\mathbf{s},t} \boldsymbol{\gamma}_{t} +
\mathbf{X}^{\mathrm{svc}}_{\mathbf{s},t} \boldsymbol{\zeta}_{\mathbf{s}}
+
\omega_{\mathbf{s}} +
\epsilon_{\mathbf{s},t},\\
\mu_{\mathbf{s},t} &= f^{-1} \left( \eta_{\mathbf{s},t} \right),\\
\mathbb{E}[y_{\mathbf{s},t}] &= \mu_{\mathbf{s},t},
\end{aligned}
\]
where
- \(y_{\mathbf{s},t}\) represents the
response data at point \(\mathbf{s}\)
and time \(t\);
- \(\eta\) represents the linear
predictor (i.e., in link space)
- \(\mu\) represents the conditional
mean on the response/data scale (after applying the inverse link);
- \(f\) represents a link function
(e.g., log or logit) and \(f^{-1}\)
represents its inverse, and \(\eta\)
represents the linear predictor before applying \(f^{-1}\);
- \(\mathbf{X}^{\mathrm{main}}\),
\(\mathbf{X}^{\mathrm{tvc}}\), and
\(\mathbf{X}^{\mathrm{svc}}\) represent
design matrices (the superscript identifiers ‘main’ = main effects,
‘tvc’ = time varying coefficients, and ‘svc’ = spatially varying
coefficients);
- \(\boldsymbol{\beta}\) represents a
vector of fixed-effect coefficients;
- \(O_{\mathbf{s},t}\) represents an
offset: a covariate (usually log transformed) with a coefficient fixed
at one that enters on the linear predictor scale (before the inverse
link);
- \(\mathbf{Z}_{g}\) represents the
random-effect design row(s) for group \(g\) (a subset of the matrix \(\mathbf{Z}\)) corresponding to \(\mathbf{b}_{g}\); these random effects
enter on the linear predictor scale; the scalar special case is a random
intercept \(\alpha_{g}\sim
\mathrm{N}(0,\sigma_\alpha^2)\), and more generally random slopes
and intercepts are vector-valued with full covariance as described
below;
- \(\boldsymbol{\gamma}_{t}\)
represents a vector of time-varying coefficients, where each coefficient
\(\gamma_{p,t}\) can follow a random
walk or AR(1) process;
- \(\boldsymbol{\zeta}_{\mathbf{s}}\)
represents a vector of spatially varying coefficients (random fields),
where each coefficient \(\zeta_{l,\mathbf{s}}
\sim
\mathrm{MVN}(\boldsymbol{0},\boldsymbol{\Sigma}_{\zeta,l})\);
- \(\omega_{\mathbf{s}}\) represents
a spatial component (a Gaussian Markov random field, GMRF), \(\omega_{\mathbf{s}} \sim
\mathrm{MVN}(\boldsymbol{0},\boldsymbol{\Sigma}_\omega)\) with
Matérn covariance built from the mesh; and
- \(\epsilon_{\mathbf{s},t}\)
represents a spatiotemporal component (a GMRF), \(\epsilon_{\mathbf{s},t} \sim
\mathrm{MVN}(\boldsymbol{0},\boldsymbol{\Sigma}_{\epsilon})\)
with Matérn covariance over space and temporal evolution as
specified.
A single sdmTMB model will rarely, if ever, contain all of the above
components. Next, we will split the model to describe the various parts
in more detail using ‘\(\ldots\)’ to
represent the other optional components.
Main effects
\[
\begin{aligned}
\mu_{\mathbf{s},t} &= f^{-1} \left(
\mathbf{X}^{\mathrm{main}}_{\mathbf{s},t} \boldsymbol{\beta}+ \ldots
\right)
\end{aligned}
\]
Within sdmTMB(), \(\mathbf{X}^{\mathrm{main}}_{\mathbf{s},t}
\boldsymbol{\beta}\) is defined by the formula
argument and represents the main-effect model matrix and a corresponding
vector of coefficients. This main effect formula can contain optional
penalized smoothers or non-linear functions as defined below.
Smoothers
Smoothers in sdmTMB are implemented with the same formula syntax
familiar to mgcv (Wood 2017) users fitting
GAMs (generalized additive models). Smooths are implemented in the
formula using + s(x), which implements a smooth from
mgcv::s(). Within these smooths, the same syntax commonly
used in mgcv::s() can be applied, e.g. 2-dimensional
smooths may be constructed with + s(x, y); smooths can be
specific to various factor levels, + s(x, by = group);
smooths can vary according to a continuous variable,
+ s(x, by = x2); the basis function dimensions may be
specified, e.g. + s(x, k = 4) (see
?mgcv::choose.k); and various types of splines may be
constructed such as cyclic splines to model seasonality,
e.g. + s(month, bs = "cc", k = 12).
While mgcv can fit unpenalized (e.g., B-splines) or penalized splines
(P-splines), sdmTMB only implements penalized splines. The penalized
splines are constructed in sdmTMB using the function
mgcv::smooth2random(), which transforms splines into random
effects (and associated design matrices) that are estimable in a
mixed-effects modelling framework. This is the same approach as is
implemented in the R packages gamm4 (Wood &
Scheipl 2020) and brms (Bürkner
2017).
Linear break-point threshold models
The linear break-point or “hockey stick” model can be used to
describe threshold or asymptotic responses. This function consists of
two pieces, so that for \(x <
b_{1}\), \(s(x) = x \cdot
b_{0}\), and for \(x >
b_{1}\), \(s(x) = b_{1} \cdot
b_{0}\). In both cases, \(b_{0}\) represents the slope of the
function up to a threshold, and the product \(b_{1} \cdot b_{0}\) represents the value at
the asymptote. No constraints are placed on parameters \(b_{0}\) or \(b_{1}\).
These models can be fit by including + breakpt(x) in the
model formula, where x is a covariate. The formula can
contain a single break-point covariate.
Logistic threshold models
Models with logistic threshold relationships between a predictor and
the response can be fit with the form
\[
s(x)=\tau + \psi\ { \left[ 1+{ e }^{ -\ln \left(19\right) \cdot \left(
x-s50 \right)
/ \left(s95 - s50 \right) } \right] }^{-1},
\]
where \(s\) represents the logistic
function, \(\psi\) is a scaling
parameter (controlling the height of the y-axis for the response;
unconstrained), \(\tau\) is an
intercept, \(s50\) is a parameter
controlling the point at which the function reaches 50% of the maximum
(\(\psi\)), and \(s95\) is a parameter controlling the point
at which the function reaches 95% of the maximum. The parameter \(s50\) is unconstrained but \(s95\) is constrained to be larger than
\(s50\).
These models can be fit by including + logistic(x) in
the model formula, where x is a covariate. The formula can
contain a single logistic covariate.
Spatial random fields
Spatial random fields, \(\omega_{\mathbf{s}}\), are included if
spatial = 'on' (or TRUE) and omitted if
spatial = 'off' (or FALSE).
\[
\begin{aligned}
\mu_{\mathbf{s},t} &= f^{-1} \left( \ldots + \omega_{\mathbf{s}} +
\ldots \right),\\
\boldsymbol{\omega}&\sim \mathrm{MVNormal} \left( \boldsymbol{0},
\boldsymbol{\Sigma}_\omega \right),\\
\end{aligned}
\] The marginal standard deviation of \(\boldsymbol{\omega}\) is indicated by
Spatial SD in the printed model output or as
sigma_O in the output of
sdmTMB::tidy(fit, "ran_pars"). The ‘O’ is for ‘omega’
(\(\omega\)).
Internally, the random fields follow a Gaussian Markov random field
(GMRF)
\[
\boldsymbol{\omega}\sim \mathrm{MVNormal}\left(\boldsymbol{0},
\sigma_\omega^2 \mathbf{Q}^{-1}_\omega\right),
\] where \(\mathbf{Q}_\omega\)
is a sparse precision matrix and \(\sigma_\omega^2\) is the marginal
variance.
Spatiotemporal random fields
Spatiotemporal random fields are included by default if there are
multiple time elements (time argument is not
NULL) and can be set to IID (independent and identically
distributed, 'iid'; default), AR(1) ('ar1'),
random walk ('rw'), or off ('off') via the
spatiotemporal argument. These text values are case
insensitive.
Spatiotemporal random fields are represented by \(\boldsymbol{\epsilon}_t\) within sdmTMB.
This has been chosen to match the representation in VAST (Thorson 2019). The marginal standard deviation
of \(\boldsymbol{\epsilon}_t\) is
indicated by Spatiotemporal SD in the printed model output
or as sigma_E in the output of
sdmTMB::tidy(fit, "ran_pars"). The ‘E’ is for ‘epsilon’
(\(\epsilon\)).
IID spatiotemporal random fields
IID spatiotemporal random fields
(spatiotemporal = 'iid') can be represented as
\[
\begin{aligned}
\mu_{\mathbf{s},t} &= f^{-1} \left( \ldots + \epsilon_{\mathbf{s},t}
+ \ldots \right),\\
\boldsymbol{\epsilon}_{t} &\sim \mathrm{MVNormal} \left(
\boldsymbol{0}, \boldsymbol{\Sigma}_{\epsilon} \right).
\end{aligned}
\]
where \(\epsilon_{\mathbf{s},t}\)
represent random field deviations at point \(\mathbf{s}\) and time \(t\). The random fields are assumed
independent across time steps.
Similarly to the spatial random fields, these spatiotemporal random
fields (including all versions described below) are parameterized
internally with a sparse precision matrix (\(\mathbf{Q}_\epsilon\))
\[
\boldsymbol{\epsilon}_{t} \sim \mathrm{MVNormal}\left(\boldsymbol{0},
\sigma_\epsilon^2 \mathbf{Q}^{-1}_\epsilon\right).
\]
AR(1) spatiotemporal random fields
First-order auto regressive, AR(1), spatiotemporal random fields
(spatiotemporal = 'ar1') add a parameter defining the
correlation between random field deviations from one time step to the
next. They are defined as
\[
\begin{aligned}
\mu_{\mathbf{s},t} &= f^{-1} \left( \ldots + \delta_{\mathbf{s},t} +
\ldots \right),\\
\boldsymbol{\delta}_{t=1} &\sim \mathrm{MVNormal} (\boldsymbol{0},
\boldsymbol{\Sigma}_{\epsilon}),\\
\boldsymbol{\delta}_{t>1} &= \rho \boldsymbol{\delta}_{t-1} +
\sqrt{1 - \rho^2} \boldsymbol{\epsilon}_{t}, \:
\boldsymbol{\epsilon}_{t} \sim \mathrm{MVNormal} \left(\boldsymbol{0},
\boldsymbol{\Sigma}_{\epsilon} \right),
\end{aligned}
\] where \(\rho\) is the
correlation between subsequent spatiotemporal random fields. The \(\rho \boldsymbol{\delta}_{t-1} + \sqrt{1 -
\rho^2}\) term scales the spatiotemporal variance by the
correlation such that it represents the steady-state marginal variance.
The correlation \(\rho\) allows for
mean-reverting spatiotemporal fields, and is constrained to be \(-1 < \rho < 1\). Internally, the
parameter is estimated as ar1_phi, which is unconstrained.
The parameter ar1_phi is transformed to \(\rho\) with \(\rho = 2 \left(
\mathrm{logit}^{-1}(\texttt{ar1\_phi}) \right) - 1\), mapping
ar1_phi to the range \((-1,
1)\).
Random walk spatiotemporal random fields (RW)
Random walk spatiotemporal random fields
(spatiotemporal = 'rw') represent a model where the
difference in spatiotemporal deviations from one time step to the next
are IID. They are defined as
\[
\begin{aligned}
\mu_{\mathbf{s},t} &= f^{-1} \left( \ldots + \delta_{\mathbf{s},t} +
\ldots \right),\\
\boldsymbol{\delta}_{t=1} &\sim \mathrm{MVNormal} (\boldsymbol{0},
\boldsymbol{\Sigma}_{\epsilon}),\\
\boldsymbol{\delta}_{t>1} &= \boldsymbol{\delta}_{t-1}
+ \boldsymbol{\epsilon}_{t}, \:
\boldsymbol{\epsilon}_{t} \sim \mathrm{MVNormal} \left(\boldsymbol{0},
\boldsymbol{\Sigma}_{\epsilon} \right),
\end{aligned}
\]
where the distribution of the spatiotemporal field in the initial
time step is the same as for the AR(1) model, but the absence of the
\(\rho\) parameter allows the
spatiotemporal field to be non-stationary in time. Note that, in
contrast to the AR(1) parametrization, the variance is no longer the
steady-state marginal variance.
Time-varying regression parameters
Parameters can be modelled as time-varying according to a random walk
or first-order autoregressive, AR(1), process. The time-series model is
defined by time_varying_type. For all types:
\[
\begin{aligned}
\mu_{\mathbf{s},t} &= f^{-1} \left( \ldots
+ \mathbf{X}^{\mathrm{tvc}}_{\mathbf{s},t} \boldsymbol{\gamma}_{t} +
\ldots \right),
\end{aligned}
\] where \(\boldsymbol{\gamma}_{t}\) is an optional
vector of time-varying regression parameters and \(\mathbf{X}^{\mathrm{tvc}}_{\mathbf{s},t}\)
is the corresponding model matrix with covariate values. This is defined
via the time_varying argument, assuming that the
time argument is also supplied a column name.
time_varying takes a one-sided formula.
~ 1 implies a time-varying intercept.
The following equations describe the time-series process for a single
time-varying coefficient \(\gamma_{p,t}\), where \(p\) indexes the time-varying coefficient.
When multiple time-varying coefficients are specified, each follows its
time-series process independently with its own variance \(\sigma_{\gamma,p}^2\) and (for AR1)
correlation parameter \(\rho_{\gamma,p}\).
For time_varying_type = 'rw', the first time step is
estimated independently:
\[
\begin{aligned}
\gamma_{p,t=1} &\sim \mathrm{Uniform} \left(-\infty, \infty
\right) \text{ (treated as an unconstrained parameter)},\\
\gamma_{p,t>1} &\sim \mathrm{Normal} \left(\gamma_{p,t-1},
\sigma_{\gamma,p}^2 \right).
\end{aligned}
\]
In this case, the first time-step value is given an implicit uniform
prior. I.e., the same variable should not appear in the fixed effect
formula since the initial value is estimated as part of the time-varying
formula. The formula time_varying = ~ 1 implicitly
represents a time-varying intercept (assuming the time
argument has been supplied) and, this case, the intercept should be
omitted from the main effects (formula ~ + 0 + ... or
formula ~ -1 + ...).
For time_varying_type = 'rw0', the first time step is
estimated from a mean-zero prior:
\[
\begin{aligned}
\gamma_{p,t=1} &\sim \mathrm{Normal} \left(0, \sigma_{\gamma,p}^2
\right),\\
\gamma_{p,t>1} &\sim \mathrm{Normal} \left(\gamma_{p,t-1},
\sigma_{\gamma,p}^2 \right).
\end{aligned}
\] In this case, the time-varying variable (including the
intercept) should be included in the main effects.
For time_varying_type = 'ar1':
\[
\begin{aligned}
\gamma_{p,t=1} &\sim \mathrm{Normal} \left(0, \sigma_{\gamma,p}^2
\right),\\
\gamma_{p,t>1} &\sim \mathrm{Normal}
\left(\rho_{\gamma,p}\gamma_{p,t-1}, (1 - \rho_{\gamma,p}^2)
\sigma_{\gamma,p}^2 \right),
\end{aligned}
\] where \(\rho_{\gamma,p}\) is
the correlation between subsequent time steps. The first time step is
given a mean-zero prior.
Spatially varying coefficients (SVC)
Spatially varying coefficient models are defined as
\[
\begin{aligned}
\mu_{\mathbf{s},t} &= f^{-1} \left( \ldots +
\mathbf{X}^{\mathrm{svc}}_{\mathbf{s}, t}
\boldsymbol{\zeta}_{\mathbf{s}} + \ldots \right),\\
\zeta_{l,\mathbf{s}} &\sim \mathrm{MVNormal} \left(
\boldsymbol{0}, \boldsymbol{\Sigma}_{\zeta,l} \right),
\end{aligned}
\]
where \(\zeta_{l,\mathbf{s}}\)
represents the \(l\)-th spatially
varying coefficient field at location \(\mathbf{s}\). When multiple spatially
varying coefficients are specified, each is estimated as an independent
spatial random field with its own marginal variance \(\sigma_{\zeta,l}^2\). Usually, \(\mathbf{X}^{\mathrm{svc}}_{\mathbf{s}, t}\)
would represent a prediction matrix that is constant spatially for a
given time \(t\) as defined by a
one-sided formula supplied to spatial_varying. For example
spatial_varying = ~ 0 + x, where 0 omits the
intercept.
The random fields are parameterized internally with a sparse
precision matrix (\(\mathbf{Q}_\zeta\))
\[
\zeta_{l,\mathbf{s}} \sim \mathrm{MVNormal}\left(\boldsymbol{0},
\sigma_{\zeta,l}^2 \mathbf{Q}^{-1}_\zeta\right).
\]
Random intercepts and slopes
Multilevel (hierarchical) intercepts and slopes follow the familiar
lme4/glmmTMB formulation. A single grouping factor can carry an
intercept-only term or a vector of random effects (intercept plus
slopes) with a full covariance:
\[
\begin{aligned}
\mu_{\mathbf{s},t} &= f^{-1} \left( \ldots + \mathbf{Z}_{g}
\mathbf{b}_{g} + \ldots \right),\\
\mathbf{b}_{g} &\sim \mathrm{MVNormal} \left( \boldsymbol{0},
\boldsymbol{\Sigma}_{g} \right),
\end{aligned}
\]
where \(\mathbf{Z}_{g}\) is the
design row(s) for group \(g\) (e.g.,
intercept and covariate values) and \(\mathbf{b}_{g}\) is the corresponding
vector of random effects for that group. The scalar special case \((1|g)\) corresponds to \(n=1\) with \(\alpha_{g} \sim \mathrm{Normal}(0,
\sigma_{\alpha}^2)\).
Use lme4-style syntax in formula,
e.g. (1 | g) for random intercepts,
(1 + x | g) for correlated intercepts and slopes, or
(1 | g1) + (1 + x | g2) to give each grouping factor its
own (co)variance.
Internally, standard deviations are estimated on the log scale, and
correlations are represented by unconstrained Cholesky parameters (via
UNSTRUCTURED_CORR), yielding a positive-definite \(\boldsymbol{\Sigma}_{g}\) per grouping
factor.
Offset terms
Offset terms can be included through the offset argument
in sdmTMB(). These are included in the linear predictor
as
\[
\begin{aligned}
\mu_{\mathbf{s},t} &= f^{-1} \left( \ldots + O_{\mathbf{s},t} +
\ldots \right),
\end{aligned}
\]
where \(O_{\mathbf{s},t}\) is an
offset term—a log transformed variable without a
coefficient (assuming a log link). The offset is not included
in the prediction. Therefore, if offset represents a
measure of effort, for example, the prediction is for one unit of effort
(log(1) = 0).
Gaussian random fields
Matérn parameterization
The Matérn defines the covariance \(\Phi
\left( s_j, s_k \right)\) between spatial locations \(s_j\) and \(s_k\) as
\[
\Phi\left( s_j,s_k \right) = \tau^2 \left[ 2^{\nu - 1}\Gamma(\nu)
\right]^{-1} (\kappa d_{jk})^\nu K_\nu \left( \kappa d_{jk} \right),
\]
where \(\tau^2\) is a
scale/precision factor (higher \(\tau\)
means lower marginal variance), \(\nu\)
controls the smoothness, \(\Gamma\)
represents the Gamma function, \(d_{jk}\) represents the distance between
locations \(s_j\) and \(s_k\), \(K_\nu\) represents the modified Bessel
function of the second kind, and \(\kappa\) represents the decorrelation rate.
The parameter \(\nu\) is set to 1
because the SPDE approach that gives us sparse matrices (and therefore
major computational speedups) requires \(\alpha = \nu + d/2\) to be an integer when
working in 2D (so \(\nu = 1\)) (Lindgren et al. 2011). Internally, the
parameters \(\kappa\) and \(\tau\) are converted to range and marginal
standard deviation \(\sigma\) as \(\textrm{range} = \sqrt{8} / \kappa\) and
\(\sigma = 1 / \sqrt{4 \pi \exp \left(2
\log(\tau) + 2 \log(\kappa) \right) }\), so increasing \(\kappa\) or \(\tau\) decreases \(\sigma\).
In the case of a spatiotemporal model with both spatial and
spatiotemporal fields, if share_range = TRUE in
sdmTMB() (the default), then a single \(\kappa\) and range are estimated with
separate \(\sigma_\omega\) and \(\sigma_\epsilon\). This often makes sense
since data are often only weakly informative about \(\kappa\). If
share_range = FALSE, then separate \(\kappa_\omega\) and \(\kappa_\epsilon\) are estimated. The
spatially varying coefficient field always shares \(\kappa\) with the spatial random field.
Projection \(\mathbf{A}\)
matrix
The values of the spatial variables at the knots are multiplied by a
projection matrix \(\mathbf{A}\) that
bilinearly interpolates from the knot locations to the values at the
locations of the observed or predicted data (Lindgren & Rue 2015)
\[
\boldsymbol{\omega}^* = \mathbf{A}\boldsymbol{\omega},
\] where \(\boldsymbol{\omega}^*\) represents the
values of the spatial random fields at the observed locations or
predicted data locations. The matrix \(\mathbf{A}\) has a row for each data point
or prediction point and a column for each knot. Three non-zero elements
on each row define the weight of the neighbouring 3 knot locations for
location \(\mathbf{s}\). The same
bilinear interpolation happens for any spatiotemporal random fields
\[
\boldsymbol{\epsilon}_t^* = \mathbf{A}\boldsymbol{\epsilon}_t.
\]
Anisotropy
TMB allows for anisotropy, where spatial covariance may be asymmetric
with respect to latitude and longitude (full
details). Anisotropy can be turned on or off with the logical
anisotropy argument to sdmTMB(). There are a
number of ways to implement anisotropic covariance (Fuglstad et al. 2015), and we adopt a
2-parameter rotation matrix \(\mathbf{H}\). The elements of \(\mathbf{H}\) are defined by the parameter
vector \(\boldsymbol{x}\) so that \(H_{1,1} = x_{1}\), \(H_{1,2} = H_{2,1} = x_{2}\) and \(H_{2,2} = (1 + x_{2}^2) / x_{1}\).
Once a model is fitted with sdmTMB(), the anisotropy
relationships may be plotted using the plot_anisotropy()
function, which takes the fitted object as an argument. If a barrier
mesh is used, anisotropy is disabled.
Incorporating physical barriers into the SPDE
In some cases the spatial domain of interest may be complex and
bounded by some barrier such as by land or water (e.g., coastlines,
islands, lakes). SPDE models allow for physical barriers to be
incorporated into the modelling (Bakka et
al. 2019). With sdmTMB() models, the mesh
construction occurs in two steps: the user (1) constructs a mesh with a
call to sdmTMBextra::make_mesh(), and (2) passes the mesh
to sdmTMBextra::add_barrier_mesh(). The barriers must be
constructed as sf objects (Pebesma
2018) with polygons defining the barriers. See
?sdmTMBextra::add_barrier_mesh for an example.
The barrier implementation requires the user to select a fraction
value (range_fraction argument) that defines the fraction
of the usual spatial range when crossing the barrier (Bakka et al. 2019). For example, if
the range was estimated at 10 km, range_fraction = 0.2
would assign a 2 km range to the triangles marked as barrier. That makes
correlation decay much faster through the barrier than around it, which
effectively discourages spatial smoothing from “jumping” across
landmasses. From experimentation, values around 0.1 or 0.2 seem to work
well but values much lower than 0.1 can result in convergence
issues.
This
website by Francesco Serafini and Haakon Bakka provides an
illustration with INLA. The implementation within TMB was borrowed from
code written by Olav Nikolai Breivik and Hans Skaug at the TMB Case Studies
Github site.
References
Anderson, S.C., Branch, T.A., Cooper, A.B. & Dulvy, N.K. (2017).
Black-swan events in animal populations. Proceedings of the National
Academy of Sciences, 114, 3252–3257.
Anderson, S.C., Ward, E.J., English, P.A., Barnett, L.A.K. &
Thorson, J.T. (2024).
sdmTMB: An R package for fast,
flexible, and user-friendly generalized linear mixed effects models with
spatial and spatiotemporal random fields.
bioRxiv,
2022.03.24.485545.
Bakka, H., Vanhatalo, J., Illian, J., Simpson, D. & Rue, H. (2019).
Non-stationary
Gaussian models with physical barriers.
arXiv:1608.03787 [stat]. Retrieved from
https://arxiv.org/abs/1608.03787
Bürkner, P.-C. (2017).
brms: An R package for
Bayesian multilevel models using Stan.
Journal of Statistical Software,
80, 1–28.
Cribari-Neto, F. & Zeileis, A. (2010). Beta regression in
R. Journal of Statistical Software,
34, 1–24.
Dunic, J.C., Conner, J., Anderson, S.C. & Thorson, J.T. (2025).
The generalized gamma is
a flexible distribution that outperforms alternatives when modelling
catch rate data.
ICES Journal of Marine Science,
82, fsaf040.
Dunn, P.K. & Smyth, G.K. (2005).
Series evaluation of
Tweedie exponential dispersion model densities.
Statistics and Computing,
15, 267–280.
Edwards, A.M. & Auger-Méthé, M. (2019). Some guidance on using
mathematical notation in ecology. Methods in Ecology and
Evolution, 10, 92–99.
Ferrari, S. & Cribari-Neto, F. (2004).
Beta regression for
modelling rates and proportions.
Journal of Applied
Statistics,
31, 799–815.
Fournier, D.A., Skaug, H.J., Ancheta, J., Ianelli, J., Magnusson, A.,
Maunder, M.N., Nielsen, A. & Sibert, J. (2012). AD model builder:
Using automatic differentiation for statistical inference of highly
parameterized complex nonlinear models. Optimization Methods and
Software, 27, 233–249.
Fuglstad, G.-A., Lindgren, F., Simpson, D. & Rue, H. (2015).
Exploring a new class of non-stationary spatial Gaussian
random fields with varying local anisotropy. Statistica Sinica,
25, 115–133.
Gay, D.M. (1990). Usage summary for selected optimization routines.
Computing Science Technical Report, 153, 1–21.
Hilbe, J.M. (2011). Negative Binomial Regression.
Cambridge University Press.
Kristensen, K., Nielsen, A., Berg, C.W., Skaug, H. & Bell, B.M.
(2016).
TMB: Automatic
differentiation and Laplace approximation.
Journal
of Statistical Software,
70, 1–21.
Lindgren, F. & Rue, H. (2015).
Bayesian spatial modelling
with R-INLA.
Journal of Statistical Software,
63, 1–25.
Lindgren, F., Rue, H. & Lindström, J. (2011). An explicit link
between Gaussian fields and Gaussian Markov
random fields: The stochastic partial differential equation approach.
J. R. Stat. Soc. Ser. B Stat. Methodol., 73,
423–498.
Pebesma, E. (2018).
Simple Features for R:
Standardized Support for Spatial Vector Data.
The R
Journal,
10, 439–446. Retrieved from
https://doi.org/10.32614/RJ-2018-009
R Core Team. (2021).
R: A language and environment for statistical
computing. R Foundation for Statistical Computing, Vienna, Austria.
Retrieved from
https://www.R-project.org/
Thorson, J.T., Stewart, I.J. & Punt, A.E. (2011).
Accounting for fish shoals in
single- and multi-species survey data using mixture distribution
models.
Canadian Journal of Fisheries and Aquatic Sciences,
68, 1681–1693.
Wood, S.N. (2017). Generalized additive models: An introduction with
R, 2nd ednn. Chapman and Hall/CRC.
Wood, S. & Scheipl, F. (2020).
gamm4: Generalized Additive
Mixed Models using ’mgcv’ and ’lme4’. Retrieved from
https://CRAN.R-project.org/package=gamm4