weights argument to
bru_obs(family = "cp")/lgcp() to contain
individual point observation weights, so that the eta
contribution to the log-likelihood is sum(weights * eta)
instead of sum(eta) (version 2.12.0.9006)2.12.0.9014)bru_obs(..., aggregate = ..., aggregate_input = ...) to
simplify specification of models with aggregation as the final step of
the predictor evaluation (version 2.12.0.9013, bugfix in
2.12.0.9016). Includes support for constructing the
aggregation information, via domain,samplers,
or precomputed ips (version 2.12.0.9022)bru_set_missing() method for setting missing values
in the bru_obs data, e.g. for use in cross-validation or
prior sampling (version 2.12.0.9024)2.12.0.9002)2.12.0.9004)inputs data to the bru_info object, so
that the component inputs can be pre-evaluated before automated mapper
construction, and avoiding duplicate evaluation in iinla().
This can halve the pre-processing time for large spatial and
spatio-temporal models (version 2.12.0.9010)bru_log() data for warnings and errors reported by
inlabru (version 2.12.0.9011)bru_like object class to bru_obs
(version 2.12.0.9017) and temporarily re-reintroduce
like_list() and bru_like_list() as aliases for
bru_obs_list() (version 2.12.0.9020)quantile argument to spde.posterior()
for controlling the credible interval calculations, like
materncov.bands(), which is now also exported (version
2.12.0.9019)dic and waic from default
control.compute bru_options, to match INLA
defaults (version 2.12.0.9024)bru_mapper_<type> to bm_<type>, to
make code using them more readable. Objects of the old class names will
be converted to the new classes internally, so that old stored objects
will still work. Constructors of the form
bru_mapper_<type>() call the corresponding new
constructor bm_<type>() (version
2.12.0.9021)bm_sum() mapper, for automated adding the output of
multiple mappers, optionally with a single common input (version
2.12.0.9001)interleaved option to bm_repeat() to
allow interleaved states for summation of a repeated mapper (version
2.12.0.9001)n_block in input argument to
bm_aggregate and bm_logsumexp evaluation
methods, overriding the optional mapper object setting (version
2.12.0.9005)character block information in
bm_aggregate and bm_logsumexp mappers, from
fmesher version 0.2.0.9017 (version
2.12.0.9013)Cmatrix and graph arguments, if present and
n is NULL (version
2.12.0.9012)bm_list mapper list handling,
removing unnecessary method layers for component linearisation and
simplification (version 2.12.0.9018)Spatial object inputs to
bru_obs(), as maintaining the fallback support code is
becoming increasingly time-consuming, and the sf package is
now the recommended spatial data handling package. (version
2.12.0.9023)generate.bru() for evaluation of expressions
in the absence of newdata (version
2.12.0.9007)mid locations for ibm_values() for
non-indexed fm_mesh_1d mapper (version
2.12.0.9009)include and exclude
arguments to predict() and generate() (version
2.12.0.9003)NROW() on the main component gave the
correct size for group and replicate in the
component _eval() feature. Now uses
ibm_n_output() instead. Fixes #271 (version
2.12.0.9015)bru_obs() as a replacement to
like(), to help avoid namespace clashes with
e.g. data.table::like() (version
2.11.1.9026)bru_obs(allow_combine)/like() to allow user
override, and add warnings for ambiguous cases (version
2.11.1.9011)bru_response_size() method for extracting the
response size for each observation bru_obs object (version
2.11.1.9013)sf output format support for sline and
spoly (version 2.11.1.9006)[ and ] to special character set in
bru_standardise_names() (version
2.11.1.9012)bru_index() method for accessing predictor index
information for sub-models, and a tag argument for
bru_obs() to identify individual sub-models by name, which
is also propagated to lists of bru_like objects (version
2.11.1.9017 and 2.12.0)bru_mapper_multi() sub-mappers to have non-zero
offsets, that are added to generate the combined offset (version
2.11.1.9019)bru_mapper_fmesher() mapper, for indexed
mapping of all objects supporting fm_dof() and
fm_basis() (version 2.11.1.9021)bru_mapper_repeat() mapper, for automated
single-mapper sums (version 2.11.1.9022)mrsea to sf format (version
2.11.1.9009)shrimp data set to sf format
(version 2.11.1.9007)seals_sp data set due to excessive size (version
2.11.1.9010)mexdolphin dataset with a function
mexdolphin_sp() to avoid sp data objects in
the package (version 2.11.1.9015)gorillas dataset with a function
gorillas_sp() to avoid sp data objects in the
package (version 2.11.1.9016)sp from Imports to
Suggests. Component definitions using
coordinates as input require either
sp::coordinates or sp having been already
loaded with e.g. library(sp) (version
2.11.1.9003)ggmap support (version
2.11.1.9002)INLA namespace loading in
ggplot methods (version 2.11.1.9008)terra from Imports to
Suggests (version 2.11.1.9014)fmesher methods (version
2.11.1.9020)is.inside() have been
removed. Use fmesher::fm_is_within() instead.bru_mapper.default() to define
new mapper classes has been removed. Use
bru_mapper_define() instead.bru_mapper_offset() method has
been removed. Use bru_mapper_const() instead."list" class inheritance from solitary
classes (version 2.11.1.9001)summary and print method class
coverage (version 2.11.1.9002)bru_safe_inla() (version 2.11.1.9005)component and
component_list methods to bru_component and
bru_component_list (version 2.11.1.9026)scale parameter to
like().inla.mdata() and inla.surv(), when INLA
version > 24.06.02 (for mdata) or
> 24.06.26 (for surv) are available
(version 2.10.1.9011)toypoints example data set, for basic modelling
examples (version 2.10.1.9003)2.10.1.9004)bru_convergence_plot() to control the
number of iterations shown, and optionally show the initial values that
are stored from this version (version 2.10.1.9005)Sys.time() to
proc.time() to capture CPU time instead of elapsed clock
time. Added bru_timings() method to extract the timings
safely from a fitted bru object (version
2.10.1.9007 and 2.10.1.9010)2.10.1.9012)"bym" model support, where the
latent state size wasn’t correctly handled by the mapper system (version
2.10.1.9002)2.10.1.9006)sp data
input for family = "cp" (version
2.10.1.9008)ipoints(samplers, domain) is no longer available. Use
fmesher::fm_int(domain, samplers) instead.allow_latent, include_latent arguments
to like() have been deprecated in favour of the general
bru_used() framework, that auto-detects what component
effects and latent effects are used by a predictor expression.cprod() method now gives a
warning and will be removed in a future version. Use
fmesher::fm_cprod() instead.integration_weight_aggregation method has been
removed (deprecated since 2.8.0). Use
fmesher::fm_vertex_projection() instead.mesh_triangle_integration method has been removed
(deprecated since 2.8.0). Use fmesher::fm_int()
instead.bru_mapper.default() to define new mapper
classes has been disabled (deprecated since 2.7.0). Use
bru_mapper_define() instead.is.inside(),
vertices.inla.mesh(), and pixels() have been
disabled. Use fmesher::fm_is_within(),
fmesher::fm_vertices(), and
fmesher::fm_pixels() instead.ggpolypath package, and the
ggplot2::fortify.SpatialPolygons/DataFrame() methods that
were deprecated in ggplot2 version 3.4.4. Code
using gg.SpatialPolygons() together with
coord_fixed()/coord_equal() for coordinate
axis control needs to use coord_sf() instead.bru_forward_transformation to allow
bru_mapper_marginal to be applied with e.g. spatially
varying parameters. (version 2.10.0.9001)terra version >= 1.7-66 that
removes the need for detecting special cases
(nrow(where) == 1 and terra::nlyr(data) == 1).
Workaround code used for versions < 1.7-66. (version
2.10.0.9002) (Thanks to Robert J. Hijmans)ibm_simplify() generic to handle mapper
simplification more generally; needed to properly support non-linear
component mappers. (version 2.9.0.9004)bru_mapper_marginal() mapper class that can be
used as part of component mapper pipelines. (version
2.9.0.9004)ibm_eval2() generic that computes both
evaluation and Jacobian, avoiding double-computing of the Jacobian, when
practical. (version 2.9.0.9005)bru_timings_plot() function that plots the time
used for each nonlinear iteration (version 2.9.0.9007)bru_fill_missing() (by orders of magnitude) by
changing method for finding the nearest available data point. (version
2.9.0.9011)bru_mapper_shift() mapper class that works like
bru_mapper_scale() but for additive shifts instead of
multiplicative scaling. (version 2.9.0.9012)2.9.0.9013)bru_mapper_matrix, previously used only for
component model = "fixed", to allow integer indexing in
addition to the previous factor/character-only indexing. (version
2.9.0.9014)is_linear flag wasn’t correctly set for
bru_mapper_logsumexp mappers. Since previous versions did
not accept non-linear component mappers, this is unlikely to have
affected any user code. (Fixed in version 2.9.0.9001)2.9.0.9002 and
2.9.0.9006)NULL in automatic component usage detection.
(version 2.9.0.9003)gorillas$plotsample$counts and
gorillas_sf$plotsample$counts from +units=m to
+units=km. (version 2.9.0.9010) The geometry
information in counts is unlikely to have been used in
examples or analysis code, as the problem would have been immediately
obvious; plotting or other geometric operations that use the crs
information would heve been completely wrong, and is only detected now
that more code uses the crs information at all. Thanks to Dmytro
Perepolkin for reporting in issue #205bru_fill_missing() for cases where the
input data object also has missing values. (version
2.9.0.9011)eval_spatial() transform the where
coordinates to the same crs as the input data, for
SpatRaster and sf inputs, to allow different
crs specifications. (version 2.9.0.9012)Conversion of code to use fmesher for mesh and
geometry handling; the interface supports existing objects and methods.
See https://inlabru-org.github.io/fmesher/articles/inla_conversion.html
for more information.
General speed improvements, see below for details.
Added gg.sf() method.
Add experimental support for stars via
eval_spatial(). (version 2.8.0.9007)
Move the sp package from ‘Depends’ to ‘Imports’.
This means that user code should either use sp:: or
library("sp") to access sp methods. The
bru_safe_sp() helper function can be used to check for a
safe sp package configuration during the transition from
rgdal to sf, and is only needed if you may run
on systems with sp installations older than “2.0-0” or with
sp::get_evolution_status() < 2. (version
2.8.2011)
Now preserves the previous log output when using
bru_rerun(), and bru_log() is now a set of S3
methods, supporting extracting the full inlabru log as well
bru-object specific logs (version
2.8.0.9008).
Note: From version 2.9.0, use bru_log() to
access the global log, and bru_log(fit) to access a stored
estimation log.
Up to version 2.8.0, bru_log() was a
deprecated alias for bru_log_message(). When running on
2.8.0 or earlier, use bru_log_get() to access
the global log, and cat(fit$bru_iinla$log, sep = "\n") to
print a stored estimation object log.
SpatialPolygonsDataFrame were not automatically passed on
to eval_spatial(). The logic has now changed so that any
object with a eval_spatial() method will trigger a call to
eval_spatial(). See ?input_eval for further
information. (version 2.8.0.9001)fm_crs_is_null(), fm_transform() now
supports oblique fm_crs CRS objects, and
is.na() methods for the fm_crs and
inla.CRS classes have been added. (version
2.8.0.9003)predict() by using
quantile(..., names = FALSE). (version
2.8.0.9004)row_kron() code, causing speedups of a factor
2-30 in randomised test cases. (version 2.8.0.9005)sf method for
eval_spatial(), causing failure when extracting from
multiple layers in a single call. (version 2.8.0.9007)generate() and predict(). Now much faster for
large models. (version 2.8.0.9009)*_latent
form of a component. (version 2.8.0.9015)bru_fill_missing(). (version
2.8.0.9016, fixes #200)eval_SpatialDF removed, deprecated since
2.8.0. See eval_spatial instead.stransform, ibm_amatrix,
ibm_valid_input removed, deprecated since
2.7.0. See fm_transform and
ibm_jacobian instead.bru_mapper_offset, deprecated since 2.6.0
now returns a pure bru_mapper_const object, and all
bru_mapper_offset ibm_* methods have been
removed.init.tutorial removed, deprecated since
2.5.0generate.inla and predict.inla removed,
deprecated since 2.1.0The iterative inla method has been given both sharper internal
inla() optimisation criteria for the iterations (thanks to
Haavard Rue), and a more relaxed nonlinear iteration stopping
criterion; the default bru_method$rel_tol values has been
changed from 1 to 10 percent change. The iterations are terminated when
all latent and hyper-parameter mode changes fullfil
|change|/SD < rel_tol, and the non-linear line search is
inactive. This seems to strike a useful balance between the different
optimisation criteria, allowing the iterations to converge faster and
also detect that convergence sooner.
The logic for which components are needed for a predictor
expression (in like() or
generate()/predict()) has been updated to when
possible extract the list of components from the expression itself. The
user can override this default if necessary, using the
include/exclude arguments.
The bru_used() methods are used to guess the needed
component names, applied to the right-hand side of the
formula arguments. The allow_latent argument
to like() has been deprecated in favour of
include_latent (by default auto-detected for use of
_latent and _eval).
The internal information storage is handled by the new
bru_used() methods, that can also be used directly by the
user and supplied via the used argument to
like()/generate()/predict().
Add fm_int() integration methods, replacing the old
ipmaker() and ipoints() methods. Supports both
sf and sp sampler objects.
Add fm_pixels() methods for gridded points. The old
pixels() method now calls
fm_pixels(..., format = "sp")
eval_spatial support for sf objects (for
point-in-polygon data lookups)
Allow precomputed spatial covariates in the data for point process observations
Add edge|int|ext.linewidth arguments to
gg.inla.mesh #188
Rename the predict() and generate()
data arguments to newdata, for better
compatibility with other predict() methods. The old
argument name will still be accepted, but give a warning. Code that does
not name the data argument is not affected.
Note: Coordinate names for Spatial* objects have
been inconsistently available in the predictor expression evaluation.
However, due to how internal conversions might inadvertently change
these names, they can not be relied on, and they are no longer being
made available to the predictor expression. As a side effect, this
change also speeds up some bru() runs by around a factor 2,
since it avoids converting the Spatial* to a regular
data.frame in time-sensitive core evaluation code.
If you need access to the raw coordinate values, use explicit calls
to sp::coordinates(.data.) (e.g. for custom spatial
covariate evaluation.). When possible, use the built-in covariate
evaluation method, eval_spatial(), either implicitly with
comp(covariate, ...) or explicitly,
comp(eval_spatial(covariate, where = .data.), ...), that
handles crs information correctly. Also consider
transitioning from sp to sf data storage,
using geometry instead of raw coordinates.
rgdal and maptools dependencies
#178bru_safe_sp() to check if sp can be
used safely (checks rgdal availability and sp
evolution status, optionally forcing use of sf) #178rgl.* functions to *3d. Thanks to
Duncan Murdoch #181ibm_jacobian.bru_mapper_harmonics for large
modelssf::st_* calls that don’t account for the geos
canonical representation being CW, whereas the canonical Simple Features
representation being CCW. See https://github.com/r-spatial/sf/issues/2096sf and terra inputs to
most methodsbru_mapper() systembru_convergence_plot()Allow NA input for default 1D mappers to generate
effect zero, like in inla().
New and expanded methods fm_crs(),
fm_CRS(), fm_transform(),
fm_ellipsoid_radius(), and fm_length_unit() to
further support sf objects. The fm_crs()
extraction method also supports terra objects.
bru_fill_missing() now supports terra
SpatRaster data and and sf locations.
New experimental methods fm_evaluator() and
fm_evaluate(), replacing the INLA
inla.mesh.projector and inla.mesh.project
methods.
Experimental integration support for sphere and globe meshes.
Allow sf input to family="cp"
models.
Further bru_mapper() method updates;
ibm_amatrix() and names()
methods, replaced by ibm_jacobian() and
ibm_names().bru_mapper_pipe(), used to link mappers in
sequence.bru_mapper_aggregate() and
bru_mapper_logsumexp(), used for blockwise weighted sums
and log-sum-exp mappings,
output[k] = sum(weights[block==k]*state[block==k]))) and
output[k] = log(sum(weights[block==k]*exp(state[block==k]))),
with optional weight normalisation within each block. Allows providing
the weights as log-weights, and uses block-wise shifts to avoid
potential overflow.summary methods for bru_mapper objects
(summary.bru_mapper())methods argument from
bru_mapper_define(). Implementations should register S3
methods instead.spatstat.core dependency. Fixes #165ibm_eval.default() and
ibm_eval.bru_mapper_collect() methods, where they would
return zeros instead of the intended values. The main component
evaluation and estimation code was not directly affected as that is
based on the bru_mapper_multi() class methods that rely on
the Jacobians instead. The bug would therefore mainly have impacted the
future, not yet supported nonlinear mapper extensions.eval_spatial.SpatRaster; Work around
inconsistent logic in terra::extract(..., layer) when
length(layer)==1 or nrow(where)==1. Fixes
#169indexed logical option to
bru_mapper_factor(), to allow factor inputs to be mapped to
index values, as needed for group and
replicate. Fixes #174Add bru_get_mapper generic, and associated methods
for inla.spde and inla.rgeneric objects. This
allows inlabru to automatically extract the appropriate
bru_mapper object for each model component, and can be used
as a hook by external packages implementing new INLA object
classes.
Add a weights argument for like(), for
likelihood-specific log-likelihood weights, passed on to the
INLA::inla() weights argument. Evaluated in the data
context.
The <component>_eval() methods available in
predictor expressions now handle optional scaling weights, like in
ordinary component effect evaluation.
Add terra support for covariate inputs
The component *_layer arguments are now evaluated in
the data context, to allow dynamic layer selection for spatial raster
covariates. A new generic eval_spatial() provides support
for grid/pixel based Spatial*DataFrame evaluation, and
SpatRaster. Expanded support is in progress.
New vignettes on the bru_mapper system,
component definitions, and
prediction_scores
General overhaul of the bru_mapper and linearised
predictor system, to prepare for new features.
ibm_eval generic for evaluating mappers for given
states.bru_mapper_taylor, used as an internal mapper for
linearised mappers. This and ibm_eval is aimed at future
support for nonlinear mappers. Associated new generic methods:
ibm_{is_linear,jacobian,linear}.ibm_jacobian
instead of ibm_amatrix. This allows defining a linearised
mapper via
ibm_eval(input, state0) + ibm_jacobian(input, state0) %*% (state - state0).bru_mapper_const, which replaces
bru_mapper_offset. bru_mapper_offset is now
deprecated and will produce warnings.epsg:4326. Fixes #154Tsparse assumptions in row_kron to
prepare for Matrix 1.5-2. Fixes #162bru_mapper_harmonics mapper for cos
and sin basis sets.predict() input data to be be a list.predict()cv, var, smin,
smax summaries from predict()mean.mc_std_err and sd.mc_std_err
output to predict()robins_subset data set and associated variable
coefficient web vignettebru_mapper_collect models.inla.mode="classic" to use proper line search.unique method. Fixes #145strategy="gaussian" during iterations.bru() timing information in
$bru_timings and $bru_iinla$timingsSpatialPolygonsDataFrame support to
gg() methodsE and Ntrials from
response_data and data (further special
arguments remain to be added)deltaIC improvementsbru_{forward/inverse}_transformation()~ name(~ -1 + a + b + a:b, model = "fixed"), covariate
fixed effect interaction specifications can be made. For formula input,
MatrixModels::model.Matrix() is called to construct matrix
input that is then used as the A-matrix for fixed effects, one per
column, added up to form the combined effect.evaluate_model() for
cases where the inla_f argument mattersdata argument is now allowed to be a list(),
and the new argument response_data allows separate
specification of component inputs and response variables.bru_mapper_collect class for handling sequential
collections of mappers, including collections where all but the first
mapper is hidden from the INLA::f() arguments
n and values, as needed to support e.g. “bym2”
models.control.family as a direct argument to
like(). Gives a warning if a control.family
argument is supplied to the the options argument of
bru(), but at least one likelihood has
control.family information. (Issue #109)SpatialPointsDataFrame and
SpatialGridDataFrame input to
bru_fill_missing()model = "offset" components instead of
special options, to avoid interfering with the linearisation system
(Issue #123)bru_method$stop_at_max_rel_deviation
to bru_method$rel_tol. Automatic conversion to the new
name, but a warning is given.bru_method$max_step to control the largest
allowed line search scaling factor. See ?bru_optionsbru_compress_cp set to
TRUE to compress the predictor expression for
family="cp" to use a single element for the linear
predictor sum.map has been deprecated.
Use main to specify the main component input,
~ elev(main = elevation, model = "rw2"). Unlike the old
map argument, main is the first one, so the
shorter version ~ elev(elevation, model = "rw2") also
works.~ Intercept(1) to avoid accidental confusion with
other variables.bru() has been simplified, so
that all arguments except components and
options must either be outputs from calls to
like(), or arguments that can be sent to a single
like() call.?bru_options() for details.samplers and domain system for
lgcp models is now stricter, and requires explicit
domain definitions for all the point process dimensions.
Alternatively, user-defined integration schemes can be supplied via the
ips argument.main,
group, replicate, and weights can
now take general R expressions using the data inputs. Special cases are
detected: SpatialPixels/GridDataFrame objects are evaluated
at spatial locations if the input data is a
SpatialPointsDataFrame object. Functions are evaluated on
the data object, e.g. field(coordinates, model = spde)mapper,
group_mapper, and replicate_mapper can be used
for precise control of the mapping between inputs and latent variables.
See ?bru_mapper for more details. Mapper information is
automatically extracted from INLA::inla.spde2.pcmatern()
model objects.weights and copy features are
now supported..data.allow_combine = TRUE argument must be supplied to
like()include and exclude arguments to
like(), generate(), and predict()
can be used to specify which components are used for a given likelihood
model or predictor expression. This can be used to prevent evaluation of
components that are invalid for a likelihood or predictor._latent to the
component name, e.g. name_latent. For like(),
this requires allow_latent = TRUE to activate the needed
linearisation code for this._eval to access special
evaluator functions, e.g. name_eval(1:10). This is useful
for evaluating the 1D effect of spatial covariates. See the NEWS item
for version 2.2.8 for further details.Add _eval suffix feature for
generate.bru and predict.bru, that provides a
general evaluator function for each component, allowing evaluation of
e.g. nonlinear effects of spatial covariates as a function of the
covariate value instead of the by the spatial evaluator used in the
component definition. For example, with
components = ~ covar(spatial_grid_df, model = "rw1"), the
prediction expression can have ~ covar_eval(covariate),
where covariate is a data column in the prediction data
object.
For components with group and replicate
features, these also need to be provided to the _eval
function, with
..._eval(..., group = ..., replicate = ...)
This feature is built on top of the _latent suffix
feature, that gives direct access to the latent state variables of a
component, so in order to use _eval in the model predictor
itself, you must use like(..., allow_latent = TRUE) in the
model definition.
ngroup and nrep in
component definitionsmexdolphin and mrsea data sets,
with consistent km units and improved mesh designspredict(..., include) discussion to distance
sampling vignette, for handling non-spatial prediction in spatial
models.gg.SpatialLinesSpatial* object handling and
plottingpredict() logic for converting output
to Spatial*DataFramecontrol.mode=list(restart=FALSE) in the final inla
run for nonlinear models, to avoid an unnecessary optimisation.pixels() and
bru_fill_missing() for Spatial*DataFrame
objects with ncol=0 data frame parts.comp2(input, copy = "comp1")comp(input, weights, ...).data., allowing
e.g. covar(fun(.data.), ...) for a complex covariate
extractor method fun()bru_mapper objects"factor_contrast" model, or all levels with
model "factor_full". Further options planned (e.g. a
simpler options to fix the precision parameter). The estimated
coefficients appear as random effects in the inla()
output.map= to main=
or unnamed first argument; Since main is the first
parameter, it doesn’t need to be a named argument.int.args option to control spatial integration
resolution, thanks to Martin Jullum (martinju)VignetteBuilder entry from
DESCRIPTIONint.polygon from integrating outside the mesh
domain, and generally more robust integration scheme construction.bru() to like() parameter logic.
(Thanks to Peter Vesk for bug example)NEWS.md file to track changes to the
package.inla methods for predict() and
generate() that convert inla output into
bru objects before calling the bru prediction
and posterior sample generator.sample.lgcp output formatting, extended CRS
support, and more efficient sampling algorithmiinla() tracks convergence of both fixed and random
effectsgg.matrix()