Estimates Ripley's reduced second moment function $K(r)$ from a point pattern in a window of arbitrary shape.

spatial, nonparametric
Kest(X, ..., r=NULL, breaks=NULL, 
     correction=c("border", "isotropic", "Ripley", "translate"),
    nlarge=3000, domain=NULL, var.approx=FALSE, ratio=FALSE)
The observed point pattern, from which an estimate of $K(r)$ will be computed. An object of class "ppp", or data in any format acceptable to as.ppp().
Optional. Vector of values for the argument $r$ at which $K(r)$ should be evaluated. Users are advised not to specify this argument; there is a sensible default.
Optional. An alternative to the argument r. Not normally invoked by the user. See the Details section.
Optional. A character vector containing any selection of the options "none", "border", "bord.modif", "isotropic", "Ripley", "translate", "none" or
Optional. Efficiency threshold. If the number of points exceeds nlarge, then only the border correction will be computed (by default), using a fast algorithm.
Optional. Calculations will be restricted to this subset of the window. See Details.
Logical. If TRUE, the approximate variance of $\hat K(r)$ under CSR will also be computed.
Logical. If TRUE, the numerator and denominator of each edge-corrected estimate will also be saved, for use in analysing replicated point patterns.

The $K$ function (variously called ``Ripley's K-function'' and the ``reduced second moment function'') of a stationary point process $X$ is defined so that $\lambda K(r)$ equals the expected number of additional random points within a distance $r$ of a typical random point of $X$. Here $\lambda$ is the intensity of the process, i.e. the expected number of points of $X$ per unit area. The $K$ function is determined by the second order moment properties of $X$. An estimate of $K$ derived from a spatial point pattern dataset can be used in exploratory data analysis and formal inference about the pattern (Cressie, 1991; Diggle, 1983; Ripley, 1977, 1988). In exploratory analyses, the estimate of $K$ is a useful statistic summarising aspects of inter-point ``dependence'' and ``clustering''. For inferential purposes, the estimate of $K$ is usually compared to the true value of $K$ for a completely random (Poisson) point process, which is $K(r) = \pi r^2$. Deviations between the empirical and theoretical $K$ curves may suggest spatial clustering or spatial regularity. This routine Kest estimates the $K$ function of a stationary point process, given observation of the process inside a known, bounded window. The argument X is interpreted as a point pattern object (of class "ppp", see ppp.object) and can be supplied in any of the formats recognised by as.ppp().

The estimation of $K$ is hampered by edge effects arising from the unobservability of points of the random pattern outside the window. An edge correction is needed to reduce bias (Baddeley, 1998; Ripley, 1988). The corrections implemented here are [object Object],[object Object],[object Object],[object Object],[object Object] The estimates of $K(r)$ are of the form $$\hat K(r) = \frac a {n (n-1) } \sum_i \sum_j I(d_{ij}\le r) e_{ij}$$ where $a$ is the area of the window, $n$ is the number of data points, and the sum is taken over all ordered pairs of points $i$ and $j$ in X. Here $d_{ij}$ is the distance between the two points, and $I(d_{ij} \le r)$ is the indicator that equals 1 if the distance is less than or equal to $r$. The term $e_{ij}$ is the edge correction weight (which depends on the choice of edge correction listed above).

Note that this estimator assumes the process is stationary (spatially homogeneous). For inhomogeneous point patterns, see Kinhom.

If the point pattern X contains more than about 3000 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 or correction="best" will prevent this from happening. Setting nlarge=0 is equivalent to selecting only the border correction with correction="border".

If X contains more than about 100,000 points, even the border correction is time-consuming. You may want to consider setting correction="none" in this case. There is an even faster algorithm for the uncorrected estimate.

Approximations to the variance of $\hat K(r)$ are available, for the case of the isotropic edge correction estimator, assuming complete spatial randomness (Ripley, 1988; Lotwick and Silverman, 1982; Diggle, 2003, pp 51-53). If var.approx=TRUE, then the result of Kest also has a column named rip values of Ripley's (1988) approximation to $\mbox{var}(\hat K(r))$, and (if the window is a rectangle) a column named ls giving values of Lotwick and Silverman's (1982) approximation. If the argument domain is given, the calculations will be restricted to a subset of the data. In the formula for $K(r)$ above, the first point $i$ will be restricted to lie inside domain. The result is an approximately unbiased estimate of $K(r)$ based on pairs of points in which the first point lies inside domain and the second point is unrestricted. This is useful in bootstrap techniques. The argument domain should be a window (object of class "owin") or something acceptable to as.owin. It must be a subset of the window of the point pattern X.

The estimator Kest ignores marks. Its counterparts for multitype point patterns are Kcross, Kdot, and for general marked point patterns see Kmulti.

Some writers, particularly Stoyan (1994, 1995) advocate the use of the ``pair correlation function'' $$g(r) = \frac{K'(r)}{2\pi r}$$ where $K'(r)$ is the derivative of $K(r)$. See pcf on how to estimate this function.


  • 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$ for a stationary Poisson process
  • together with columns named "border", "bord.modif", "iso" and/or "trans", according to the selected edge corrections. These columns contain estimates of the function $K(r)$ obtained by the edge corrections named.

    If var.approx=TRUE then the return value also has columns rip and ls containing approximations to the variance of $\hat K(r)$ under CSR.

    If ratio=TRUE then the return value also has two attributes called "numerator" and "denominator" which are "fv" objects containing the numerators and denominators of each estimate of $K(r)$.

Envelopes, significance bands and confidence intervals

To compute simulation envelopes for the $K$-function under CSR, use envelope. To compute a confidence interval for the true $K$-function, use varblock or lohboot.


The estimator of $K(r)$ is approximately unbiased for each fixed $r$. Bias increases with $r$ and depends on the window geometry. For a rectangular window it is prudent to restrict the $r$ values to a maximum of $1/4$ of the smaller side length of the rectangle. Bias may become appreciable for point patterns consisting of fewer than 15 points. While $K(r)$ is always a non-decreasing function, the estimator of $K$ is not guaranteed to be non-decreasing. This is rarely a problem in practice.


Baddeley, A.J. Spatial sampling and censoring. In O.E. Barndorff-Nielsen, W.S. Kendall and M.N.M. van Lieshout (eds) Stochastic Geometry: Likelihood and Computation. Chapman and Hall, 1998. Chapter 2, pages 37--78. Cressie, N.A.C. Statistics for spatial data. John Wiley and Sons, 1991.

Diggle, P.J. Statistical analysis of spatial point patterns. Academic Press, 1983.

Ohser, J. (1983) On estimators for the reduced second moment measure of point processes. Mathematische Operationsforschung und Statistik, series Statistics, 14, 63 -- 71. Ripley, B.D. (1977) Modelling spatial patterns (with discussion). Journal of the Royal Statistical Society, Series B, 39, 172 -- 212.

Ripley, B.D. Statistical inference for spatial processes. Cambridge University Press, 1988.

Stoyan, D, Kendall, W.S. and Mecke, J. (1995) Stochastic geometry and its applications. 2nd edition. Springer Verlag.

Stoyan, D. and Stoyan, H. (1994) Fractals, random shapes and point fields: methods of geometrical statistics. John Wiley and Sons.

See Also

localK to extract individual summands in the $K$ function.

pcf for the pair correlation.

Fest, Gest, Jest for alternative summary functions. Kcross, Kdot, Kinhom, Kmulti for counterparts of the $K$ function for multitype point patterns. reduced.sample for the calculation of reduced sample estimators.

  • Kest
pp <- runifpoint(50)
 K <- Kest(pp)
 K <- Kest(cells, correction="isotropic")
 plot(K, main="K function for cells")
 # plot the L function
 plot(K, sqrt(iso/pi) ~ r)
 plot(K, sqrt(./pi) ~ r, ylab="L(r)", main="L function for cells")
Documentation reproduced from package spatstat, version 1.29-0, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.