View source: R/bru.integration.R
ipoints | R Documentation |
in favour of fmesher::fm_int()
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 points 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 = deprecated()
)
A data.frame
, tibble
, sf
, or SpatialPointsDataFrame
of 1D and
2D integration points, including a weight
column and .block
column.
Fabian E. Bachl bachlfab@gmail.com and finn.lindgren@gmail.com
if (require("INLA", quietly = TRUE) &&
require("ggplot2", quietly = TRUE) &&
bru_safe_sp() &&
require("sp") &&
require("fmesher")) {
# 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 <- fm_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))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.