- Switch to TMBad library for ~3-fold speedup(!)
- Fix bug in predictions with
poly(..., raw = FALSE)
on newdata. #77
-
Add experimental
sdmTMB_stacking()
for ensemble model stacking weights. -
Add fake mesh if random fields are all off. #59
-
Make
predict(..., newdata = NULL)
also uselast.par.best
instead oflast.par
to matchnewdata = df
. -
Fix bug in MVN fixed-effect prior indexing
-
sims
andn_sims
arguments have been deprecated and standardized tonsim
to match thesimulate()
S3 method. -
Bias correction on
get_index()
andget_cog()
is now selective and is just applied to the necessary derived parameters. -
INLA projection matrix 'A' is now shared across spatial and spatiotemporal fields.
-
Add
add_utm_columns()
to ease adding UTM columns.
-
Add
dharma_residuals()
. -
Fix bug in
simulate.sdmTMB()
andresiduals.sdmTMB()
for binomial family.
-
Smoothers now appear in
print()
output. The format should roughly match brms. The main-effect component (e.g.,sdepth
fors(depth)
) represents the linear component and the random effect (e.g.,sds(depth)
) component in the output corresponds to the standard deviation of the penalized weights. -
Add
censored_poisson(link = 'log')
family; implemented by @joenomiddlename -
fields
insdmTMB()
is now depreciated and replaced byspatiotemporal
. -
include_spatial
insdmTMB()
is now depreciated and replaced byspatial
. -
spatial_only
insdmTMB()
is now depreciated and replaced byspatiotemporal
. E.g.spatial_only = TRUE
is nowspatiotemporal = 'off'
or leavingtime = NULL
. -
spde
insdmTMB()
is now depreciated and replaced bymesh
. -
sdmTMB_simulate()
is new and will likely replacesdmTMB_sim()
eventually.sdmTMB_simulate()
is set up to take a formula and a data frame and is easier to use if you want different spatial observations (and covariates) for each time slice. It can also take a fitted model and modify parts of it to simulate. Finally, this function uses TMB for simulation and so is much faster and more flexible in what it can simulate (e.g., anisotropy) than the previous version. -
spatial_trend
is nowspatial_varying
and accepts a one-sided formula with a single predictor of any coefficient that should varying in space as a random field. Note that you may want to include a fixed effect for the same variable to improve interpretability. If the (scaled) time column is used, it will represent a local-time-trend model as before. -
The Tweedie power (p) parameter is now in
print()
andtidy()
output. -
thetaf
is nowtweedie_p
insdmTMB_sim()
.
- Fix bug affecting prediction with
se_fit = TRUE
for breakpoint models.
- Simulation from the parameter covariance matrix works if random effects are turned off. #57
- Smoothers
s()
are now penalized smoothers: they determine the degree of wiggliness (as in mgcv) and it is no longer necessary to choose an appropriatek
value a priori. Models fit with previous versions of sdmTMB withs(x, k = ...)
will not match models specified the same way in version >= 0.0.19 since the basis functions are now penalized. All the variousmgcv::s()
options should be supported butt2()
(andti()
andte()
) are not supported.
-
Add ELPD (expected log predictive density) to
sdmTMB_cv()
https://arxiv.org/abs/1507.04544 -
Fix bug evaluating
...
whensdmTMB_cv()
was called within a function. #54
- Fix minor error in PC Matern prior
-
Add random walk option:
fields = "RW"
. -
Depreciate
ar1_fields
argument. See newfields
argument in `sdmTMB(). -
Many packages moved from 'Imports' to 'Suggests'
-
Lower default
nlminb()
eval.max
anditer.max
to 1000 and 2000. -
Added
profile
option insdmTMBcontrol()
. This can dramatically improve model fitting speed with many fixed effects. Note the result is likely to be slightly different withTRUE
vs.FALSE
. -
Added simulation from the MVN precision matrix to
predict.sdmTMB()
. See thesims
argument. -
Added
gather_sims()
andspread_sims()
to extract parameter simulations from the joint precision matrix in a format that matches the tidybayes package. -
Added
get_index_sims()
for a population index calculated from the MVN simulation draws. -
Added
extract_mcmc()
to extract MCMC samples if the model is passed to tmbstan. -
Added the ability to predict from a model fitted with tmbstan. See the
tmbstan_model
argument inpredict.sdmTMB()
. -
Allowed for separate random field Matern range parameters for spatial and spatiotemporal fields. E.g.
sdmTMB(shared_range = FALSE)
-
Bounded the AR1 rho parameter between -0.999 and 0.999 to improve convergence; was -1 to 1. Please post an issue if this creates problems for your model.
-
Added
map
,start
,lower
, andupper
options to control model fitting. SeesdmTMBcontrol()
. -
Added priors for all parameters. See
?sdmTMB::priors
and thepriors
argument insdmTMB()
. PC priors are available for the random fields. See?pc_matern
and the details there. -
Moved many less-common arguments from
sdmTMB()
tosdmTMBcontrol()
. -
Fix bug in
sdmTMB_cv()
where fitting and testing data splits were reversed. I.e., the small chunk was fit; the big chunk was tested.
-
Added experimental penalized complexity (PC) prior as used in INLA. See arguments
matern_prior_O
andmatern_prior_E
. -
Added back
normalize
argument tosdmTMB()
and default toFALSE
. Setting toTRUE
can dramatically speed up some model fits (~4 times for some test models).
- Added vignette on making pretty maps of the output
- Added some protections for possible user errors:
- AR1 with a spatial-only model
- Missing factor levels in time
- Coordinate systems that are too big
-
Add
re_form_iid
topredict.sdmTMB()
. -
Add
map_rf
option tosdmTMB()
. This lets you map (fix at their starting values of zero) all random fields to produce a classic GLM/GLMM.
- Add IID random intercepts interface. E.g.
... + (1 | g)
#34
- Add
epsilon_predictor
argument insdmTMB()
to allow a model of the spatiotemporal variance through time.
- Add
penalties
argument to allow for regularization.
- Fix Student-t degrees of freedom in the randomized quantile residuals
-
Fixed parameter initialization for inverse links #35
-
Switched Gamma 'phi' parameter to representing shape instead of CV to match glm(), glmmTMB(), etc.
- Switched the density/abundance index calculation to use the link function as
opposed to a hardcoded log() so that the
get_generic()
function can be used to grab things like standardized average values of the response across a grid. What used to belog_total
in the raw TMB output is nowlink_total
but most users you shouldn't notice any difference.
-
Overhauled the simulation function. The function is now called
sdmTMB_sim()
and uses INLA functions instead of RandomFields functions for simulating the random fields. -
The simulation function can now accommodate all families and links and takes an INLA mesh as input.
- Allow specifying degrees of freedom in the Student-t family #29
-
Added a
tidy()
method (from broom and broom.mixed) to return a data frame of parameter estimates. The function can extract the fixed effects or the random effect parameters (variances, AR1 correlation, spatial range). -
Added an argument
extra_time
tosdmTMB()
. This introduces additional time slices that you can then predict on if you want to interpolate or forecast. Internally, it uses Eric Ward's 'weights hack'. This is also useful if you have data unevenly spaced in time and you want the gaps evenly spaced for a random walk or AR1 process (add any missing years toextra_time
). -
make_spde()
is now replaced withmake_mesh()
andmake_spde()
has been soft depreciated.make_mesh()
carries through the x and y column names to the predict function and is more in line with the tidyverse style of taking a data frame first. -
make_mesh()
can acceptcutoff
as an argument (as in INLA), which is likely a better default way to specify the mesh since it scales across regions better and is line with the literature on INLA. -
make_mesh()
can use a binary search algorithm to find a cutoff that best matches a desired number of knots (thanks to Kelli Johnson for the idea). -
Barrier meshes are now possible. See
add_barrier_mesh()
for an example. -
There is a pkgdown website now that gets auto generated with GitHub actions.
-
There is the start of a model description vignette. It is very much a work in progress.
- Fixed bug in dlnorm
- Fixed bug in predictions with standard errors where one(?) parameter (a breakpoint parameter) would be passed in at its initial instead of MLE value.
-
Fixed bug with predictions on new data in models with break points
-
Overhauled cross validation function. The function now:
- uses Eric's weights hack so it can also be used for forecasting
- initializes subsequent folds at the MLE of the first fold for considerable speed increases
- works in parallel if a future plan initialized; see examples
-
Added threshold parameters to the print method
-
Added forecasting example with the weights hack
-
Fixed bug in linear break point models
-
Fixed GAM predictions with all 0s in new data.
-
Add linear and logistic threshold models. #17
-
Added parsing of mgcv formulas for splines. #16
-
Added ability to predict with standard errors at the population level. This helps with making marginal-effect plots. #15
-
Added optimization options to aid convergence. Also added
run_extra_optimization()
to run these on already fit models. Default is for no extra optimization. -
Added binomial likelihood to cross validation. Git hash
ee3f3ba
. -
Started keeping track of news in
NEWS.md
.