# density.lpp

##### Kernel Estimate of Intensity on a Linear Network

Estimates the intensity of a point process on a linear network by applying kernel smoothing to the point pattern data.

##### Usage

```
# S3 method for lpp
density(x, sigma=NULL, …,
weights=NULL,
distance=c("path", "euclidean"),
kernel="gaussian",
continuous=TRUE,
epsilon = 1e-06, verbose = TRUE,
debug = FALSE, savehistory = TRUE,
old=FALSE)
```# S3 method for splitppx
density(x, sigma=NULL, …)

##### Arguments

- x
Point pattern on a linear network (object of class

`"lpp"`

) to be smoothed.- sigma
Smoothing bandwidth (standard deviation of the kernel) in the same units as the spatial coordinates of

`x`

.- …
Arguments passed to

`as.mask`

determining the resolution of the result.- weights
Optional. Numeric vector of weights associated with the points of

`x`

. Weights may be positive, negative or zero.- distance
Character string (partially matched) specifying whether to use a kernel based on paths in the network (

`distance="path"`

, the default) or a two-dimensional kernel (`distance="euclidean"`

).- kernel
Character string specifying the smoothing kernel. See

`dkernel`

for possible options.- continuous
Logical value indicating whether to compute the “equal-split continuous” smoother (

`continuous=TRUE`

, the default) or the “equal-split discontinuous” smoother (`continuous=FALSE`

). Applies only when`distance="path"`

.- epsilon
Tolerance value. A tail of the kernel with total mass less than

`epsilon`

may be deleted.- verbose
Logical value indicating whether to print progress reports.

- debug
Logical value indicating whether to print debugging information.

- savehistory
Logical value indicating whether to save the entire history of the algorithm, for the purposes of evaluating performance.

- old
Logical value indicating whether to use the old, very slow algorithm for the equal-split continuous estimator.

##### Details

Kernel smoothing is applied to the points of `x`

using either a kernel based on path distances in the network,
or a two-dimensional kernel.
The result is a pixel image on the linear network (class
`"linim"`

) which can be plotted.

If

`distance="path"`

(the default) then the smoothing is performed using a kernel based on path distances in the network, as described in described in Okabe and Sugihara (2012) and McSwiggan et al (2016).If

`continuous=TRUE`

(the default), smoothing is performed using the “equal-split continuous” rule described in Section 9.2.3 of Okabe and Sugihara (2012). The resulting function is continuous on the linear network.If

`continuous=FALSE`

, smoothing is performed using the “equal-split discontinuous” rule described in Section 9.2.2 of Okabe and Sugihara (2012). The resulting function is not continuous.In the default case (where

`distance="path"`

and`continuous=TRUE`

and`kernel="gaussian"`

and`old=FALSE`

), computation is performed rapidly by solving the classical heat equation on the network, as described in McSwiggan et al (2016). Computational time is short, but increases quadratically with`sigma`

. The arguments`epsilon,debug,verbose,savehistory`

are ignored.In all other cases, computation is performed by path-tracing as described in Okabe and Sugihara (2012); computation can be extremely slow, and time increases exponentially with

`sigma`

.

If

`distance="euclidean"`

, the smoothing is performed using a two-dimensional kernel. The arguments are passed to`densityQuick.lpp`

to perform the computation. See the help for`densityQuick.lpp`

for further details.

There is also a method for split point patterns on a linear network
(class `"splitppx"`

) which will return a list of pixel images.

##### Value

A pixel image on the linear network (object of class `"linim"`

).

##### References

McSwiggan, G., Baddeley, A. and Nair, G. (2016)
Kernel density estimation on a linear network.
*Scandinavian Journal of Statistics* **44**, 324--345.

Okabe, A. and Sugihara, K. (2012)
*Spatial analysis along networks*.
Wiley.

##### See Also

##### Examples

```
# NOT RUN {
X <- runiflpp(3, simplenet)
D <- density(X, 0.2, verbose=FALSE)
plot(D, style="w", main="", adjust=2)
Dw <- density(X, 0.2, weights=c(1,2,-1), verbose=FALSE)
De <- density(X, 0.2, kernel="epanechnikov", verbose=FALSE)
Ded <- density(X, 0.2, kernel="epanechnikov", continuous=FALSE, verbose=FALSE)
# }
```

*Documentation reproduced from package spatstat, version 1.61-0, License: GPL (>= 2)*