Marked pair correlation function

For a marked point pattern, estimate the multitype pair correlation function using kernel methods.

spatial, nonparametric
pcfmulti(X, I, J, ..., r = NULL,
            kernel = "epanechnikov", bw = NULL, stoyan = 0.15,
            correction = c("translate", "Ripley"),
            divisor = c("r", "d"),
            Iname = "points satisfying condition I",
            Jname = "points satisfying condition J")

The observed point pattern, from which an estimate of the cross-type pair correlation function \(g_{ij}(r)\) will be computed. It must be a multitype point pattern (a marked point pattern whose marks are a factor).


Subset index specifying the points of X from which distances are measured.


Subset index specifying the points in X to which distances are measured.



Vector of values for the argument \(r\) at which \(g(r)\) should be evaluated. There is a sensible default.


Choice of smoothing kernel, passed to density.default.


Bandwidth for smoothing kernel, passed to density.default.


Coefficient for default bandwidth rule.


Choice of edge correction.


Choice of divisor in the estimation formula: either "r" (the default) or "d".


Optional. Character strings describing the members of the subsets I and J.


This is a generalisation of pcfcross to arbitrary collections of points.

The algorithm measures the distance from each data point in subset I to each data point in subset J, excluding identical pairs of points. The distances are kernel-smoothed and renormalised to form a pair correlation function.

  • If divisor="r" (the default), then the multitype counterpart of the standard kernel estimator (Stoyan and Stoyan, 1994, pages 284--285) is used. By default, the recommendations of Stoyan and Stoyan (1994) are followed exactly.

  • If divisor="d" then a modified estimator is used: the contribution from an interpoint distance \(d_{ij}\) to the estimate of \(g(r)\) is divided by \(d_{ij}\) instead of dividing by \(r\). This usually improves the bias of the estimator when \(r\) is close to zero.

There is also a choice of spatial edge corrections (which are needed to avoid bias due to edge effects associated with the boundary of the spatial window): correction="translate" is the Ohser-Stoyan translation correction, and correction="isotropic" or "Ripley" is Ripley's isotropic correction.

The arguments I and J specify two subsets of the point pattern X. They may be any type of subset indices, for example, logical vectors of length equal to npoints(X), or integer vectors with entries in the range 1 to npoints(X), or negative integer vectors.

Alternatively, I and J may be functions that will be applied to the point pattern X to obtain index vectors. If I is a function, then evaluating I(X) should yield a valid subset index. This option is useful when generating simulation envelopes using envelope.

The choice of smoothing kernel is controlled by the argument kernel which is passed to density. The default is the Epanechnikov kernel.

The bandwidth of the smoothing kernel can be controlled by the argument bw. Its precise interpretation is explained in the documentation for density.default. For the Epanechnikov kernel with support \([-h,h]\), the argument bw is equivalent to \(h/\sqrt{5}\).

If bw is not specified, the default bandwidth is determined by Stoyan's rule of thumb (Stoyan and Stoyan, 1994, page 285) applied to the points of type j. That is, \(h = c/\sqrt{\lambda}\), where \(\lambda\) is the (estimated) intensity of the point process of type j, and \(c\) is a constant in the range from 0.1 to 0.2. The argument stoyan determines the value of \(c\).


An object of class "fv".

See Also

pcfcross, pcfdot, pcf.ppp.

  • pcfmulti
  adult <- (marks(longleaf) >= 30)
  juvenile <- !adult
  p <- pcfmulti(longleaf, adult, juvenile)
# }
Documentation reproduced from package spatstat, version 1.59-0, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.