Mark-Weighted K Function

Estimates the mark-weighted $K$ function of a marked point pattern.

spatial, nonparametric
Kmark(X, f = NULL, r = NULL,
        correction = c("isotropic", "Ripley", "translate"), ...,
        f1 = NULL, normalise = TRUE, returnL = FALSE, fargs = NULL)

markcorrint(X, f = NULL, r = NULL, correction = c("isotropic", "Ripley", "translate"), ..., f1 = NULL, normalise = TRUE, returnL = FALSE, fargs = NULL)

The observed point pattern. An object of class "ppp" or something acceptable to as.ppp.
Optional. Test function $f$ used in the definition of the mark correlation function. An Rfunction with at least two arguments. There is a sensible default.
Optional. Numeric vector. The values of the argument $r$ at which the mark correlation function $k_f(r)$ should be evaluated. There is a sensible default.
A character vector containing any selection of the options "isotropic", "Ripley" or "translate". It specifies the edge correction(s) to be applied.
An alternative to f. If this argument is given, then $f$ is assumed to take the form $f(u,v)=f_1(u)f_1(v)$.
If normalise=FALSE, compute only the numerator of the expression for the mark correlation.
Compute the analogue of the K-function if returnL=FALSE or the analogue of the L-function if returnL=TRUE.
Optional. A list of extra arguments to be passed to the function f or f1.

The functions Kmark and markcorrint are identical. (Eventually markcorrint will be deprecated.) The mark-weighted $K$ function $K_f(r)$ of a marked point process (Penttinen et al, 1992) is a generalisation of Ripley's $K$ function, in which the contribution from each pair of points is weighted by a function of their marks. If the marks of the two points are $m_1, m_2$ then the weight is proportional to $f(m_1, m_2)$ where $f$ is a specified test function.

The mark-weighted $K$ function is defined so that $$\lambda K_f(r) = \frac{C_f(r)}{E[ f(M_1, M_2) ]}$$ where $$C_f(r) = E \left[ \sum_{x \in X} f(m(u), m(x)) 1{0 < ||u - x|| \le r} \; \big| \; u \in X \right]$$ for any spatial location $u$ taken to be a typical point of the point process $X$. Here $||u-x||$ is the euclidean distance between $u$ and $x$, so that the sum is taken over all random points $x$ that lie within a distance $r$ of the point $u$. The function $C_f(r)$ is the unnormalised mark-weighted $K$ function. To obtain $K_f(r)$ we standardise $C_f(r)$ by dividing by $E[f(M_1,M_2)]$, the expected value of $f(M_1,M_2)$ when $M_1$ and $M_2$ are independent random marks with the same distribution as the marks in the point process.

Under the hypothesis of random labelling, the mark-weighted $K$ function is equal to Ripley's $K$ function, $K_f(r) = K(r)$.

The mark-weighted $K$ function is sometimes called the mark correlation integral because it is related to the mark correlation function $k_f(r)$ and the pair correlation function $g(r)$ by $$K_f(r) = 2 \pi \int_0^r s k_f(s) \, g(s) \, {\rm d}s$$ See markcorr for a definition of the mark correlation function.

Given a marked point pattern X, this command computes edge-corrected estimates of the mark-weighted $K$ function. If returnL=FALSE then the estimated function $K_f(r)$ is returned; otherwise the function $$L_f(r) = \sqrt{K_f(r)/\pi}$$ is returned.


  • An object of class "fv" (see fv.object). Essentially a data frame containing numeric columns
  • rthe values of the argument $r$ at which the mark correlation integral $K_f(r)$ has been estimated
  • theothe theoretical value of $K_f(r)$ when the marks attached to different points are independent, namely $\pi r^2$
  • together with a column or columns named "iso" and/or "trans", according to the selected edge corrections. These columns contain estimates of the mark-weighted $K$ function $K_f(r)$ obtained by the edge corrections named (if returnL=FALSE).


Penttinen, A., Stoyan, D. and Henttonen, H. M. (1992) Marked point processes in forest statistics. Forest Science 38 (1992) 806-824.

Illian, J., Penttinen, A., Stoyan, H. and Stoyan, D. (2008) Statistical analysis and modelling of spatial point patterns. Chichester: John Wiley.

See Also

markcorr to estimate the mark correlation function.

  • Kmark
  • markcorrint
    # (1) Spruces
    # marks represent tree diameter
    # mark correlation function
    ms <- Kmark(spruces)

    # (2) simulated data with independent marks
    X <- rpoispp(100)
    X <- X %mark% runif(X$n)
    Xc <- Kmark(X)
    # Hughes' amacrine data
    # Cells marked as 'on'/'off'
    M <- Kmark(amacrine, function(m1,m2) {m1==m2},
Documentation reproduced from package spatstat, version 1.42-2, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.