spatstat.linnet-package {spatstat.linnet} | R Documentation |
The spatstat.linnet Package
Description
The spatstat.linnet package belongs to the spatstat family of packages. It contains the functionality for analysing spatial data on a linear network.
Details
spatstat is a family of R packages for the statistical analysis of spatial data. Its main focus is the analysis of spatial patterns of points in two-dimensional space.
The original spatstat package has now been split into several sub-packages.
This sub-package spatstat.linnet contains the user-level functions from spatstat that are concerned with spatial data on a linear network.
Structure of the spatstat family
The orginal spatstat package grew to be very large. It has now been divided into several sub-packages:
-
spatstat.utils containing basic utilities
-
spatstat.sparse containing linear algebra utilities
-
spatstat.data containing datasets
-
spatstat.geom containing geometrical objects and geometrical operations
-
spatstat.explore containing the main functionality for exploratory and non-parametric analysis of spatial data
-
spatstat.model containing the main functionality for statistical modelling and inference for spatial data
-
spatstat.linnet containing functions for spatial data on a linear network
-
spatstat, which simply loads the other sub-packages listed above, and provides documentation.
When you install spatstat, these sub-packages are also
installed. Then if you load the spatstat package by typing
library(spatstat)
, the other sub-packages listed above will
automatically be loaded or imported.
For an overview of all the functions available in these sub-packages,
see the help file for spatstat in the spatstat package,
Additionally there are several extension packages:
-
spatstat.gui for interactive graphics
-
spatstat.local for local likelihood (including geographically weighted regression)
-
spatstat.Knet for additional, computationally efficient code for linear networks
-
spatstat.sphere (under development) for spatial data on a sphere, including spatial data on the earth's surface
The extension packages must be installed separately and loaded explicitly if needed. They also have separate documentation.
Overview of spatstat.linnet
A linear network is a subset of the two-dimensional plane composed of straight line segments. It could represent a road network, for example. Our code requires that, if two segments intersect each other, then the intersection is a single point, and the intersection point is treated as a vertex of the network.
The spatstat.linnet package supports spatial data analysis on a linear network. The primary aim is to analyse spatial patterns of points on a network. The points could represent road accidents on a road network, for example.
The spatstat.linnet package provides code for handling
-
linear networks
-
point patterns on a linear network
-
pixel images on a linear network
(where the network is divided into small segments and a numerical value is assigned to each segment) -
functions on a linear network
(i.e. functions that are defined at every location along the network) -
tessellations of a linear network
(where the network is subdivided into disjoint subsets with different labels) -
point process models on a linear network
Here is a list of the main functionality provided in spatstat.linnet.
Linear networks
An object of class "linnet"
represents a linear network.
Examples of such objects include the dataset
simplenet
provided in the package.
Linear network objects can be created by the following functions:
linnet | create a linear network |
as.linnet | convert other data to a network |
delaunayNetwork | network of Delaunay triangulation |
dirichletNetwork | network of Dirichlet edges |
Utilities for manipulating networks include:
[.linnet | extract subset of linear network |
clickjoin | interactively join vertices in network |
joinVertices | join existing vertices in a network |
insertVertices | insert new vertices at positions along network |
addVertices | add new vertices, extending a network |
thinNetwork | remove vertices or lines from a network |
repairNetwork | repair internal format |
vertices.linnet | extract the vertices of network |
terminalvertices | find terminal vertices of network |
affine.linnet | apply affine transformation |
shift.linnet | apply vector translation |
rotate.linnet | apply rotation |
rescale.linnet | rescale the unit of length |
scalardilate.linnet | physically rescale the network |
diameter.linnet | diameter of linear network |
is.connected.linnet | determine whether network is connected |
lineardisc | compute disc of given radius in network |
marks.linnet | extract marks of a network |
marks<-.linnet | assign marks to a network |
plot.linnet | plot a network |
as.owin.linnet | extract window containing network |
as.psp.linnet | extract line segments comprising network |
nsegments.linnet | number of segments in network |
nvertices.linnet | number of vertices in network |
pixellate.linnet | convert network to 2D pixel image |
print.linnet | print basic information |
summary.linnet | print summary information |
unitname.linnet | extract name of unit of length |
unitname<-.linnet | assign name of unit of length |
vertexdegree | number of segments meeting each vertex |
volume.linnet | total length of network |
Window.linnet | extract window containing network |
density.linnet | smoothed 2D spatial density of lines |
A network is called a tree if it has no closed loops. The following functions support the creation and manipulation of trees:
begins | check start of character string |
branchlabelfun | tree branch membership labelling function |
deletebranch | delete a branch of a tree |
extractbranch | extract a branch of a tree |
treebranchlabels | label vertices of a tree by branch membership |
treeprune | prune tree to given level |
Point patterns on a linear network
An object of class "lpp"
represents a
point pattern on a linear network (for example,
road accidents on a road network).
Examples of such objects include the following datasets provided in the spatstat.data package:
chicago | Chicago crime data |
dendrite | Dendritic spines data |
spiders | Spider webs on mortar lines of brick wall |
There is also a dataset provided in the extension package spatstat.Knet:
wacrashes | Road accidents in Western Australia |
Point patterns on a network can be created by the following functions:
lpp | create a point pattern on a linear network |
as.lpp | convert other data to point pattern on network |
clicklpp | interactively add points on a linear Network |
crossing.linnet | crossing points between network and other lines |
Point patterns on a network can be generated randomly using the following functions:
rpoislpp | Poisson points on linear network |
runiflpp | uniform random points on a linear network |
rlpp | random points on a linear network |
rSwitzerlpp | simulate Switzer-type point process on linear network |
rThomaslpp | simulate Thomas process on linear network |
rcelllpp | simulate cell process on linear network |
rjitter.lpp | randomly perturb a point pattern on a network |
Functions for manipulating a point pattern on a network include
the following. An object of class "lpp"
also belongs to the
class "ppx"
, for which additional support is available.
as.ppp.lpp | convert to 2D point pattern |
as.psp.lpp | extract line segments |
marks.ppx | extract marks associated with points |
marks<-.ppx | assign marks to points on network |
nsegments.lpp | count number of segments |
print.lpp | print basic information |
summary.lpp | print summary information |
unitname.lpp | extract name of unit of length |
unitname<-.lpp | assign name of unit of length |
unmark.lpp | remove marks |
subset.lpp | subset of points satisfying a condition |
[.lpp | extract subset of point pattern |
Window.lpp | extract window containing network |
as.owin.lpp | extract window containing network |
affine.lpp | apply affine transformation |
shift.lpp | apply vector translation |
rotate.lpp | apply rotation |
rescale.lpp | rescale the unit of length |
scalardilate.lpp | physically rescale the network and points |
connected.lpp | find connected components of point pattern on network |
cut.lpp | classify points in a Point Pattern on a Network |
distfun.lpp | distance map (function) |
distmap.lpp | distance map (image) |
domain.lpp | extract the linear network |
identify.lpp | interactively identify points |
is.multitype.lpp | recognize whether point pattern is multitype |
nncross.lpp | nearest neighbours |
nndist.lpp | nearest neighbour distances |
nnfromvertex | nearest data point from each vertex |
nnfun.lpp | nearest neighbour map |
nnwhich.lpp | identify nearest neighbours |
pairdist.lpp | pairwise shortest-path distances |
plot.lpp | plot point pattern on linear Network |
points.lpp | draw points on existing plot |
superimpose.lpp | superimpose several point patterns |
text.lpp | add text labels |
unstack.lpp | separate multiple columns of marks |
Pixel images on a network
An object of class "linim"
represents a pixel image
on a linear network. Effectively, the network is divided into small
segments (lixels) and each small segment is assigned a value,
which could be numeric, factor, logical or complex values.
Pixel images on a network can be created using the following functions:
linim | create pixel image on linear network |
as.linim | convert other data to pixel image on network |
Functions for manipulating a pixel image on a network include:
[.linim | extract subset of pixel image on linear network |
[<-.linim | reset values in subset of image on linear network |
Math.linim | S3 group generic methods for images on a linear network |
eval.linim | evaluate expression involving pixel images on linear network |
as.linnet.linim | extract linear network |
integral.linim | integral of pixel image on a linear network |
mean.linim | mean of pixel values |
median.linim | median of pixel values |
quantile.linim | quantiles of pixel values |
as.data.frame.linim | convert to data frame |
print.linim | print basic information |
summary.linim | print summary information |
affine.linim | apply affine transformation |
scalardilate.linim | apply scalar dilation |
shift.linim | apply vector translation |
pairs.linim | scatterplot matrix for images |
persp.linim | perspective view of pixel image on network |
plot.linim | plot pixel image on linear network |
Functions on a linear network
An object of class "linfun"
represents a function defined
at any location along the network. Objects of this class are created
by the following functions:
linfun | create function on a linear network |
as.linfun | convert other data to function on network |
The following supporting code is available:
print.linfun | print basic information |
summary.linfun | print summary information |
plot.linfun | plot function on network |
persp.linfun | perspective view of function on network |
as.data.frame.linfun | convert to data frame |
as.owin.linfun | extract window containing network |
as.function.linfun | convert to ordinary R function |
Tessellations of a linear network
An object of class "lintess"
represents a tessellation of the
network, that is, a subdivision of the network into disjoint subsets
called ‘tiles’. Objects of this class are created
by the following functions:
lintess | create tessellation of network |
chop.linnet | divide a linear network into tiles using infinite lines |
divide.linnet | divide linear network at cut points |
lineardirichlet | Dirichlet tessellation on a linear network |
The following functions are provided for manipulating a tessellation on a network:
as.data.frame.lintess | convert to data frame |
intersect.lintess | intersection of two tessellations on network |
lineartileindex | determine which tile contains each given point on network |
marks.lintess | extract marks of each tile |
marks<-.lintess | assign marks to each tile |
plot.lintess | plot tessellation on network |
tile.lengths | compute lengths of tiles |
tilenames.lintess | names of tiles |
as.linfun.lintess | convert tessellation to a function |
Smoothing a point pattern on a linear network:
Given a point pattern dataset on a linear network, it is often desired to estimate the spatially-varying density or intensity of points along the network. For example if the points represent road accidents, then we may wish to estimate the spatially-varying density of accidents per unit length (over a given period of time).
Related tasks include estimation of relative risk, and smoothing of of values observed at the data points.
density.lpp | kernel estimate of intensity |
densityEqualSplit | kernel estimate of intensity using equal-split algorithm |
densityHeat.lpp | kernel estimate of intensity using heat equation |
densityQuick.lpp | kernel estimate of intensity using a 2D kernel |
densityVoronoi.lpp | intensity estimate using Voronoi-Dirichlet Tessellation |
densityfun.lpp | kernel estimate of intensity as a function |
bw.lppl | Bandwidth selection for kernel estimate of intensity |
bw.voronoi | bandwidth selection for Voronoi estimator |
relrisk.lpp | kernel estimate of relative risk |
bw.relrisk.lpp | Bandwidth selection for relative risk |
Smooth.lpp | spatial smoothing of observations at points |
Exploration of dependence on a covariate:
Another task is to investigate how the spatially-varying intensity
of points depends on an explanatory variable (covariate). The
covariate may be given as a pixel image on the network
(class "linim"
) or
as a function on the network (class "linfun"
).
rhohat.lpp | nonparametric estimate of intensity as function of a covariate |
roc.lpp | Receiver Operating Characteristic for data on a network |
auc.lpp | Area Under ROC Curve for data on a network |
cdf.test.lpp | spatial distribution test for points on a linear network |
berman.test.lpp | Berman's tests for point pattern on a network |
sdr.lpp | Sufficient Dimension Reduction for a point pattern on a linear network |
Summary statistics for a point pattern on a linear network:
These are for point patterns on a linear network (class lpp
).
For unmarked patterns:
linearK |
K function on linear network |
linearKinhom |
inhomogeneous K function on linear network |
linearpcf | pair correlation function on linear network |
linearpcfinhom | inhomogeneous pair correlation on linear network |
linearJinhom |
inhomogeneous J function on linear network |
linearKEuclid |
K function on linear network using Euclidean distance |
linearKEuclidInhom |
inhomogeneous K function on linear network using Euclidean distance |
linearpcfEuclid | pair correlation function on linear network using Euclidean distance |
linearpcfEuclidInhom | inhomogeneous pair correlation on linear network using Euclidean distance |
For multitype patterns:
linearKcross |
K function between two types of points |
linearKdot |
K function from one type to any type |
linearKcross.inhom |
Inhomogeneous version of linearKcross |
linearKdot.inhom |
Inhomogeneous version of linearKdot |
linearmarkconnect | Mark connection function on linear network |
linearmarkequal | Mark equality function on linear network |
linearpcfcross | Pair correlation between two types of points |
linearpcfdot | Pair correlation from one type to any type |
linearpcfcross.inhom |
Inhomogeneous version of linearpcfcross |
linearpcfdot.inhom |
Inhomogeneous version of linearpcfdot
|
Related facilities:
pairdist.lpp | distances between pairs |
crossdist.lpp | distances between pairs |
nndist.lpp | nearest neighbour distances |
nncross.lpp | nearest neighbour distances |
nnwhich.lpp | find nearest neighbours |
nnfun.lpp | find nearest data point |
density.lpp | kernel smoothing estimator of intensity |
distfun.lpp | distance transform |
envelope.lpp | simulation envelopes |
rpoislpp | simulate Poisson points on linear network |
runiflpp | simulate random points on a linear network |
It is also possible to fit point process models to lpp
objects.
Point process models on a linear network:
An object of class "lpp"
represents a pattern of points on
a linear network. Point process models can also be fitted to these
objects. Currently only Poisson models can be fitted.
lppm | point process model on linear network |
anova.lppm | analysis of deviance for |
point process model on linear network | |
envelope.lppm | simulation envelopes for |
point process model on linear network | |
fitted.lppm | fitted intensity values |
predict.lppm | model prediction on linear network |
data.lppm | extract original data |
berman.test.lppm | Berman's tests of goodness-of-fit |
is.marked.lppm | Recognise whether model is marked |
is.multitype.lppm | Recognise whether model is multitype |
is.stationary.lppm | Recognise whether model is stationary |
model.frame.lppm | Extract the variables in model |
model.images.lppm | Compute images of constructed covariates |
model.matrix.lppm | Extract design matrix |
plot.lppm | Plot fitted point process model |
pseudoR2.lppm | Calculate Pseudo-R-Squared for model |
simulate.lppm | simulate fitted point process model |
Licence
This library and its documentation are usable under the terms of the "GNU General Public License", a copy of which is distributed with the package.
Acknowledgements
Ottmar Cronie, Tilman Davies, Greg McSwiggan and Suman Rakshit made substantial contributions of code.
Author(s)
Adrian Baddeley Adrian.Baddeley@curtin.edu.au, Rolf Turner rolfturner@posteo.net and Ege Rubak rubak@math.aau.dk.