Obtain covariate values
input_eval(...)# S3 method for component
input_eval(component, data, ...)
# S3 method for component_list
input_eval(components, data, ...)
# S3 method for bru_input
input_eval(input, data, env = NULL, label = NULL, null.on.fail = FALSE, ...)
An vector or a coordinate matrix
Unused.
A component.
A data.frame
or Spatial* object of covariates and/or point locations. If null, return the component's map.
It is not unusual for a random effect act on a transformation of a covariate. In other frameworks this
would mean that the transformed covariate would have to be calculated in advance and added to the
data frame that is usually provided via the data
parameter. inlabru provides the option to do
this transformation automatically. For instance, one might be interested in the effect of a covariate
\(x^2\). In inla and other frameworks this would require to add a column xsquared
to the
input data frame and use the formula
formula = y ~ f(xsquared, model = "linear")
,
In inlabru this can be achived using two ways of using the main
parameter
(map
in version 2.1.13 and earlier).
components = y ~ psi(main = x^2, model = "linear")
components = y ~ psi(main = mySquareFun(x), model = "linear")
,
components = y ~ psi(main = myOtherSquareFun, model = "linear")
,
In the first example inlabru will interpret the map parameter as an expression to be evaluated within
the data provided. Since \(x\) is a known covariate it will know how to calculate it. The second
example is an expression as well but it uses a function alled mySquareFun
. This function is
defined by user but has wo be accessible within the work space when setting up the compoonents.
The third example provides the function myOtherSquareFun
directly and not within an expression.
In this case, inlabru will call the function using the data provided via the data
parameter.
inlabru expects that the output of this function is a data.frame with "psi" being the name of the
single existing column. For instance,
myOtherSquareFun = function(data) {
data = data[,"x", drop = FALSE] ;
colnames(data) = "psi" ;
return(data)}
When fitting spatial models it is common to work with covariates that depend on space, e.g. sea
surface temperature or elevation. Although it is straight forward to add this data to the input
data frame or write a covariate function like in the previous section there is an even more
convenient way in inlabru. Spatial covariates are often stored as SpatialPixelsDataFrame
,
SpatialPixelsDataFrame
or RasterLayer
objects. These can be provided directly via
the map parameter if the input data is a SpatialPointsDataFrame
. inlabru will automatically
evaluate and/or interpolate the coariate at your data locations when using code like
components = y ~ psi(mySpatialPixels, model = "linear")
.
A common spatial modelling component when using inla are SPDE models. An important feature of
inlabru is that it will automatically calculate the so called A-matrix which maps SPDE
values at the mesh vertices to values at the data locations. For this purpose, the map parameter
can be se to coordinates
, which is the sp
package function that extracts point
coordinates from the SpatialPointsDataFrame that was provided as input to bru. The code for
this would look as follows:
components = y ~ mySPDE(main = coordinates, model = inla.spde2.matern(...))
.
Fabian E. Bachl bachlfab@gmail.com