Neighbourhood density function

Computes the neighbourhood density function, a local version of the K-function defined by Getis and Franklin (1987).

spatial, nonparametric
localK(X, ..., correction = "Ripley", verbose = TRUE, rvalue=NULL)
A point pattern (object of class "ppp").
String specifying the edge correction to be applied. Options are "none", "translate", "Ripley", "isotropic" or "best". Only one correction may be specified.
Logical flag indicating whether to print progress reports during the calculation.
Optional. A single value of the distance argument $r$ at which the function L or K should be computed.

The command localL computes the neighbourhood density function, a local version of Ripley's L-function, proposed by Getis and Franklin (1987). The command localK computes the local analogue of the K-function.

Given a spatial point pattern X, the neighbourhood density function $L_i(r)$ associated with the $i$th point in X is computed by $$L_i(r) = \sqrt{\frac a {(n-1) \pi} \sum_j e_{ij}}$$ where the sum is over all points $j \neq i$ that lie within a distance $r$ of the $i$th point, $a$ is the area of the observation window, $n$ is the number of points in X, and $e_{ij}$ is an edge correction term (as described in Kest). The value of $L_i(r)$ can also be interpreted as one of the summands that contributes to the global estimate of the L function.

By default, the function $L_i(r)$ or $K_i(r)$ is computed for a range of $r$ values for each point $i$. The results are stored as a function value table (object of class "fv") with a column of the table containing the function estimates for each point of the pattern X.

Alternatively, if the argument rvalue is given, and it is a single number, then the function will only be computed for this value of $r$, and the results will be returned as a numeric vector, with one entry of the vector for each point of the pattern X.


  • If rvalue is given, the result is a numeric vector of length equal to the number of points in the point pattern.

    If rvalue is absent, the result is an object of class "fv", see fv.object, which can be plotted directly using plot.fv. Essentially a data frame containing columns

  • rthe vector of values of the argument $r$ at which the function $K$ has been estimated
  • theothe theoretical value $K(r) = \pi r^2$ or $L(r)=r$ for a stationary Poisson process
  • together with columns containing the values of the neighbourhood density function for each point in the pattern. Column i corresponds to the ith point. The last two columns contain the r and theo values.


Getis, A. and Franklin, J. (1987) Second-order neighbourhood analysis of mapped point patterns. Ecology 68, 473--477.

See Also

Kest, Lest

  • localK
  • localL
  X <- ponderosa

  # compute all the local L functions
  L <- localL(X)

  # plot all the local L functions against r
  plot(L, main="local L functions for ponderosa")

  # plot only the local L function for point number 7
  plot(L, iso007 ~ r)
  # compute the values of L(r) for r = 12 metres
  L12 <- localL(X, rvalue=12)

  # Spatially interpolate the values of L12
  # Compare Figure 5(b) of Getis and Franklin (1987)
  X12 <- X %mark% L12
  Z <- smooth.ppp(X12, sigma=5, dimyx=128)

  plot(Z, col=topo.colors(128), main="smoothed neighbourhood density")
  contour(Z, add=TRUE)
  points(X, pch=16, cex=0.5)

Community examples

Looks like there are no examples yet.