Kinhom {spatstat}R Documentation

Inhomogeneous K-function

Description

Estimates the inhomogeneous K function of a non-stationary point pattern.

Usage

  Kinhom(X, lambda, ..., r = NULL, breaks = NULL,
    correction=c("border", "bord.modif", "isotropic", "translate"),
    nlarge = 1000, lambda2, sigma=NULL, varcov=NULL)

Arguments

X The observed data point pattern, from which an estimate of the inhomogeneous K function will be computed. An object of class "ppp" or in a format recognised by as.ppp()
lambda Optional. Values of the estimated intensity function. Either a vector giving the intensity values at the points of the pattern X, or a pixel image (object of class "im") giving the intensity values at all locations.
... Extra arguments. Ignored if lambda is present. Passed to density.ppp if lambda is omitted.
r vector of values for the argument r at which the inhomogeneous K function should be evaluated. Not normally given by the user; there is a sensible default.
breaks An alternative to the argument r. Not normally invoked by the user. See Details.
correction A character vector containing any selection of the options "border", "bord.modif", "isotropic", "Ripley" or "translate". It specifies the edge correction(s) to be applied.
nlarge Optional. Efficiency threshold. If the number of points exceeds nlarge, then only the border correction will be computed, using a fast algorithm.
lambda2 Advanced use only. Matrix containing estimates of the products lambda(x[i]) * lambda(x[j]) of the intensities at each pair of data points x[i] and x[j].
sigma,varcov Optional arguments passed to density.ppp to control the smoothing bandwidth, when lambda is estimated by kernel smoothing.

Details

This computes a generalisation of the K function for inhomogeneous point patterns, proposed by Baddeley, Moller and Waagepetersen (2000).

The ``ordinary'' K function (variously known as the reduced second order moment function and Ripley's K function), is described under Kest. It is defined only for stationary point processes.

The inhomogeneous K function Kinhom(r) is a direct generalisation to nonstationary point processes. Suppose x is a point process with non-constant intensity lambda(u) at each location u. Define Kinhom(r) to be the expected value, given that u is a point of x, of the sum of all terms 1/lambda(u)lambda(x[j]) over all points x[j] in the process separated from u by a distance less than r. This reduces to the ordinary K function if lambda() is constant. If x is an inhomogeneous Poisson process with intensity function lambda(u), then Kinhom(r) = pi * r^2.

This allows us to inspect a point pattern for evidence of interpoint interactions after allowing for spatial inhomogeneity of the pattern. Values Kinhom(r) > pi * r^2 are suggestive of clustering.

The argument lambda should supply the (estimated) values of the intensity function lambda. It may be either

a numeric vector
containing the values of the intensity function at the points of the pattern X.
a pixel image
(object of class "im") assumed to contain the values of the intensity function at all locations in the window.
omitted:
if lambda is omitted, then it will be estimated using a `leave-one-out' kernel smoother.

If lambda is a numeric vector, then its length should be equal to the number of points in the pattern X. The value lambda[i] is assumed to be the the (estimated) value of the intensity lambda(x[i]) for the point x[i] of the pattern X. Each value must be a positive number; NA's are not allowed.

If lambda is a pixel image, the domain of the image should cover the entire window of the point pattern. If it does not (which may occur through discretisation error), then the point pattern will be trimmed to a smaller region where the lambda values are defined. (A warning will be issued in this case.)

If lambda is omitted, then it will be estimated using a `leave-one-out' kernel smoother, as described in Baddeley, Moller and Waagepetersen (2000). The estimate lambda[i] for the point X[i] is computed by removing X[i] from the point pattern, applying kernel smoothing to the remaining points using density.ppp, and evaluating the smoothed intensity at the point X[i]. The smoothing kernel bandwidth is controlled by the arguments sigma and varcov, which are passed to density.ppp along with any extra arguments.

Edge corrections are used to correct bias in the estimation of Kinhom. Each edge-corrected estimate of Kinhom(r) is of the form

K^inhom(r)= sum[i] sum[j] 1(d[i,j] <= r) * e(x[i],x[j],r)/(lambda(x[i]) * lambda(x[j]))

where d[i,j] is the distance between points x[i] and x[j], and e(x[i],x[j],r) is an edge correction factor. For the `border' correction,

1(b[i] > r)/(sum[j] 1(b[j] > r)/lambda(x[j]))

where b[i] is the distance from x[i] to the boundary of the window. For the `modified border' correction,

1(b[i] > r)/area(W [-] r)

where W [-] r is the eroded window obtained by trimming a margin of width r from the border of the original window. For the `translation' correction,

1/area(W intersect (W + x[j]-x[i]))

and for the `isotropic' correction,

1/(area(W) g(x[i],x[j]))

where g(x[i],x[j]) is the fraction of the circumference of the circle with centre x[i] and radius ||x[i]-x[j]|| which lies inside the window.

If the point pattern X contains more than about 1000 points, the isotropic and translation edge corrections can be computationally prohibitive. The computations for the border method are much faster, and are statistically efficient when there are large numbers of points. Accordingly, if the number of points in X exceeds the threshold nlarge, then only the border correction will be computed. Setting nlarge=Inf will prevent this from happening. Setting nlarge=0 is equivalent to selecting only the border correction with correction="border".

The pair correlation function can also be applied to the result of Kinhom; see pcf.

Value

An object of class "fv" (see fv.object).
Essentially a data frame containing at least the following columns,

r the vector of values of the argument r at which the pair correlation function g(r) has been estimated
theo vector of values of pi * r^2, the theoretical value of Kinhom(r) for an inhomogeneous Poisson process

and containing additional columns according to the choice specified in the correction argument. The additional columns are named border, trans and iso and give the estimated values of Kinhom(r) using the border correction, translation correction, and Ripley isotropic correction, respectively.

Author(s)

Adrian Baddeley adrian@maths.uwa.edu.au http://www.maths.uwa.edu.au/~adrian/ and Rolf Turner rolf@math.unb.ca http://www.math.unb.ca/~rolf

References

Baddeley, A., Moller, J. and Waagepetersen, R. (2000) Non- and semiparametric estimation of interaction in inhomogeneous point patterns. Statistica Neerlandica 54, 329–350.

See Also

Kest, pcf

Examples

  data(lansing)
  # inhomogeneous pattern of maples
  X <- unmark(split(lansing)$maple)
  

  # (1) intensity function estimated by model-fitting
  # Fit spatial trend: polynomial in x and y coordinates
  fit <- ppm(X, ~ polynom(x,y,2), Poisson())
  # (a) predict intensity values at points themselves,
  #     obtaining a vector of lambda values
  lambda <- predict(fit, locations=X, type="trend")
  # inhomogeneous K function
  Ki <- Kinhom(X, lambda)
  plot(Ki)
  # (b) predict intensity at all locations,
  #     obtaining a pixel image
  lambda <- predict(fit, type="trend")
  Ki <- Kinhom(X, lambda)
  plot(Ki)

  # (2) intensity function estimated by heavy smoothing
  Ki <- Kinhom(X, sigma=0.1)
  plot(Ki)

  # (3) simulated data: known intensity function
  lamfun <- function(x,y) { 50 + 100 * x }
  # inhomogeneous Poisson process
  Y <- rpoispp(lamfun, 150, owin())
  # evaluate intensity at points of pattern
  lambda <- lamfun(Y$x, Y$y)
  # inhomogeneous K function
  Ki <- Kinhom(Y, lambda)
  plot(Ki)

  # How to make simulation envelopes:
  #      Example shows method (2)
  ## Not run: 
  smo <- density.ppp(X, sigma=0.1)
  Ken <- envelope(X, Kinhom, nsim=99,
                  simulate=expression(rpoispp(smo)),
                  sigma=0.1, correction="trans")
  plot(Ken)
  
## End(Not run)

[Package spatstat version 1.11-3 Index]