Generate integration points
This function generates points in one or two dimensions with a weight attached to each point.
The weighted sum of a function evaluated at these points is the integral of that function approximated
by linear basis functions. The parameter samplers
describes the area(s) integrated over.
In case of a single dimension samplers
is supposed to be a two-column matrix
where
each row describes the start and end point of the interval to integrate over. In the two-dimensional
case samplers
can be either a SpatialPolygon
, an inla.mesh
or a
SpatialLinesDataFrame
describing the area to integrate over. If a SpatialLineDataFrame
is provided it has to have a column called 'weight' in order to indicate the width of the line.
The domain parameter is an inla.mesh.1d
or inla.mesh
object that can be employed to
project the integration points to the vertices of the mesh. This reduces the final number of
integration points and reduces the computational cost of the integration. The projection can also
prevent numerical issues in spatial LGCP models where each observed point is ideally surrounded
by three integration point sitting at the corresponding mesh vertices. This is controlled
by int.args$method="stable"
(default) or "direct"
, where the latter uses the integration
points directly, without aggregating to the mesh vertices.
For convenience, the
domain
parameter can also be a single integer setting the number of equally spaced integration
points in the one-dimensional case.
ipoints( samplers = NULL, domain = NULL, name = NULL, group = NULL, int.args = NULL, project = NULL )
samplers |
Description of the integration region boundary.
In 1D, a length 2 vector or two-column matrix where each row describes an interval,
or |
domain |
Either
|
name |
Character array stating the name of the domains dimension(s).
If |
group |
Column names of the |
int.args |
List of arguments passed to
|
project |
Deprecated in favour of |
A data.frame
or SpatialPointsDataFrame
of 1D and 2D integration points, respectively.
Fabian E. Bachl bachlfab@gmail.com and finn.lindgren@gmail.com
if (require("INLA", quietly = TRUE)) { # Create 50 integration points covering the dimension 'myDim' between 0 and 10. ips <- ipoints(c(0, 10), 50, name = "myDim") plot(ips) # Create integration points for the two intervals [0,3] and [5,10] ips <- ipoints(matrix(c(0, 3, 5, 10), nrow = 2, byrow = TRUE), 50) plot(ips) # Convert a 1D mesh into integration points mesh <- inla.mesh.1d(seq(0, 10, by = 1)) ips <- ipoints(mesh, name = "time") plot(ips) # Obtain 2D integration points from a SpatialPolygon data(gorillas, package = "inlabru") ips <- ipoints(gorillas$boundary) ggplot() + gg(gorillas$boundary) + gg(ips, aes(size = weight)) #' Project integration points to mesh vertices ips <- ipoints(gorillas$boundary, domain = gorillas$mesh) ggplot() + gg(gorillas$mesh) + gg(gorillas$boundary) + gg(ips, aes(size = weight)) # Turn a 2D mesh into integration points ips <- ipoints(gorillas$mesh) ggplot() + gg(gorillas$boundary) + gg(ips, aes(size = weight)) }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.