Pair Correlation Function

Estimates the pair correlation function of a point pattern.

pcf(X, ..., method="c")
Either the observed data point pattern, or an estimate of its $K$ function, or an array of multitype $K$ functions (see Details).
Arguments controlling the smoothing spline function smooth.spline.
Letter "a", "b" or "c" indicating the method for deriving the pair correlation function from the K function.

The pair correlation function of a stationary point process is $$g(r) = \frac{K'(r)}{2\pi r}$$ where $K'(r)$ is the derivative of $K(r)$, the reduced second moment function (aka ``Ripley's $K$ function'') of the point process. See Kest for information about $K(r)$. For a stationary Poisson process, the pair correlation function is identically equal to 1. Values $g(r) < 1$ suggest inhibition between points; values greater than 1 suggest clustering.

We also apply the same definition to other variants of the classical $K$ function, such as the multitype $K$ functions (see Kcross, Kdot) and the inhomogeneous $K$ function (see Kinhom). For all these variants, the benchmark value of $K(r) = \pi r^2$ corresponds to $g(r) = 1$.

This routine computes an estimate of $g(r)$ from an estimate of $K(r)$ or its variants, using smoothing splines to approximate the derivative.

The argument X may be either

  • a point pattern for which an estimate of the pair correlation function should be computed. This should be an object of class"ppp", or in a format recognised byas.ppp().
  • a data frame containing an estimate of a$K$function. This data frame should be the value returned byKest,Kcross,KmultiorKinhom.
  • a function array (object of class"fasp", seefasp.object) containing several estimates of$K$functions. This should have been obtained fromalltypeswith the argumentfun="K".
If X is a point pattern, the $K$ function is first estimated by Kest. The smoothing spline operations are performed by smooth.spline and predict.smooth.spline from the modreg library. Three numerical methods are available:
  • "a"apply smoothing to$K(r)$, estimate its derivative, and plug in to the formula above;
  • "b"apply smoothing to$Y(r) = \frac{K(r)}{2 \pi r}$constraining$Y(0) = 0$, estimate the derivative of$Y$, and solve;
  • "c"apply smoothing to$Z(r) = \frac{K(r)}{\pi r^2}$constraining$Z(0)=1$, estimate its derivative, and solve.
Method "c" seems to be the best at suppressing variability for small values of $r$. However it effectively constrains $g(0) = 1$. If the point pattern seems to have inhibition at small distances, you may wish to experiment with method "b" which effectively constrains $g(0)=0$. Method "a" seems comparatively unreliable.

Useful arguments to control the splines include the smoothing tradeoff parameter spar and the degrees of freedom df. See smooth.spline for details.


  • A data frame containing (at least) the variables
  • rthe vector of values of the argument $r$ at which the pair correlation function $g(r)$ has been estimated
  • pcfvector of values of $g(r)$


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

Kest, Kinhom, Kcross, Kdot, Kmulti, alltypes, smooth.spline, predict.smooth.spline

  • pcf
  p <- pcf(simdat)
  plot(p$r, p$pcf, type="l", xlab="r", ylab="g(r)",
                  main="pair correlation")
    abline(h=1, lty=1)

  # multitype point pattern
  p <- pcf(alltypes(ganglia, "K"), spar=0.5, method="b")
  conspire(p, cbind(pcf,1) ~ r, subset="r <= 0.2",
             title="Pair correlation functions for ganglia")
Documentation reproduced from package spatstat, version 1.3-2, License: GPL version 2 or newer

Community examples

Looks like there are no examples yet.