Estimates the (bivariate) pair correlation functions of a point pattern, given an array of (bivariate) K functions.

```
# S3 method for fasp
pcf(X, …, method="c")
```

X

An array of multitype \(K\) functions
(object of class `"fasp"`

).

…

Arguments controlling the smoothing spline
function `smooth.spline`

.

method

Letter `"a"`

, `"b"`

, `"c"`

or `"d"`

indicating the
method for deriving the pair correlation function from the
`K`

function.

A function array (object of class `"fasp"`

,
see `fasp.object`

)
representing an array of pair correlation functions.
This can be thought of as a matrix `Y`

each of whose entries
`Y[i,j]`

is a function value table (class `"fv"`

)
representing the pair correlation function between
points of type `i`

and points of type `j`

.

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 array of estimates of \(K(r)\) or its variants,
using smoothing splines to approximate the derivatives.
It is a method for the generic function `pcf`

.

The argument `X`

should be
a function array (object of class `"fasp"`

,
see `fasp.object`

)
containing several estimates of \(K\) functions.
This should have been obtained from `alltypes`

with the argument `fun="K"`

.

The smoothing spline operations are performed by
`smooth.spline`

and `predict.smooth.spline`

from the `modreg`

library.
Four 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.**"d"**apply smoothing to \(V(r) = \sqrt{K(r)}\), 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.

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.

`Kest`

,
`Kinhom`

,
`Kcross`

,
`Kdot`

,
`Kmulti`

,
`alltypes`

,
`smooth.spline`

,
`predict.smooth.spline`

# NOT RUN { # multitype point pattern KK <- alltypes(amacrine, "K") p <- pcf.fasp(KK, spar=0.5, method="b") plot(p) # strong inhibition between points of the same type # }