Inhomogeneous Marked K-Function

For a marked point pattern, estimate the inhomogeneous version of the multitype $K$ function which counts the expected number of points of subset $J$ within a given distance from a typical point in subset I, adjusted for spatially varying intensity.

spatial, nonparametric
Kmulti.inhom(X, I, J, lambdaI=NULL, lambdaJ=NULL,
          r=NULL, breaks=NULL,
          correction=c("border", "isotropic", "Ripley", "translate"),
          sigma=NULL, varcov=NULL)
The observed point pattern, from which an estimate of the inhomogeneous multitype $K$ function $K_{IJ}(r)$ will be computed. It must be a marked point pattern. See under Details.
Subset index specifying the points of X from which distances are measured. See Details.
Subset index specifying the points in X to which distances are measured. See Details.
Optional. Values of the estimated intensity of the sub-process X[I]. Either a pixel image (object of class "im"), a numeric vector containing the intensity values at each of the points in X[I], or
Optional. Values of the estimated intensity of the sub-process X[J]. Either a pixel image (object of class "im"), a numeric vector containing the intensity values at each of the points in X[J], or
Optional. Numeric vector. The values of the argument $r$ at which the multitype $K$ function $K_{IJ}(r)$ should be evaluated. There is a sensible default. First-time users are strongly advised not to specify this argument. See below fo
An alternative to the argument r. Not normally invoked by the user. See the Details section.
A character vector containing any selection of the options "border", "bord.modif", "isotropic", "Ripley", "translate", "none" or "best". It specifie
Optional. A matrix containing estimates of the product of the intensities lambdaI and lambdaJ for each pair of points, the first point
Optional arguments passed to density.ppp to control the smoothing bandwidth, when lambda is estimated by kernel smoothing.

The function Kmulti.inhom is the counterpart, for spatially-inhomogeneous marked point patterns, of the multitype $K$ function Kmulti.

Suppose $X$ is a marked point process, with marks of any kind. Suppose $X_I$, $X_J$ are two sub-processes, possibly overlapping. Typically $X_I$ would consist of those points of $X$ whose marks lie in a specified range of mark values, and similarly for $X_J$. Suppose that $\lambda_I(u)$, $\lambda_J(u)$ are the spatially-varying intensity functions of $X_I$ and $X_J$ respectively. Consider all the pairs of points $(u,v)$ in the point process $X$ such that the first point $u$ belongs to $X_I$, the second point $v$ belongs to $X_J$, and the distance between $u$ and $v$ is less than a specified distance $r$. Give this pair $(u,v)$ the numerical weight $1/(\lambda_I(u)\lambda_J(u))$. Calculate the sum of these weights over all pairs of points as described. This sum (after appropriate edge-correction and normalisation) is the estimated inhomogeneous multitype $K$ function.

The argument X must be a point pattern (object of class "ppp") or any data that are acceptable to as.ppp.

The arguments I and J specify two subsets of the point pattern. 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 argument lambdaI supplies the values of the intensity of the sub-process identified by index I. It may be either [object Object],[object Object],[object Object],[object Object] If lambdaI is omitted, then it will be estimated using a `leave-one-out' kernel smoother, as described in Baddeley, Moller and Waagepetersen (2000). The estimate of lambdaI for a given point is computed by removing the point from the point pattern, applying kernel smoothing to the remaining points using density.ppp, and evaluating the smoothed intensity at the point in question. The smoothing kernel bandwidth is controlled by the arguments sigma and varcov, which are passed to density.ppp along with any extra arguments.

Similarly lambdaJ supplies the values of the intensity of the sub-process identified by index J.

The argument r is the vector of values for the distance $r$ at which $K_{IJ}(r)$ should be evaluated. It is also used to determine the breakpoints (in the sense of hist) for the computation of histograms of distances.

First-time users would be strongly advised not to specify r. However, if it is specified, r must satisfy r[1] = 0, and max(r) must be larger than the radius of the largest disc contained in the window.

Biases due to edge effects are treated in the same manner as in Kinhom. The edge corrections implemented here are [object Object],[object Object],[object Object] The pair correlation function pcf can also be applied to the result of Kmulti.inhom.


  • An object of class "fv" (see fv.object).

    Essentially a data frame containing numeric columns

  • rthe values of the argument $r$ at which the function $K_{IJ}(r)$ has been estimated
  • theothe theoretical value of $K_{IJ}(r)$ for a marked Poisson process, namely $\pi r^2$
  • together with a column or columns named "border", "bord.modif", "iso" and/or "trans", according to the selected edge corrections. These columns contain estimates of the function $K_{IJ}(r)$ obtained by the edge corrections named.


Baddeley, A., Moller, J. and Waagepetersen, R. (2000) Non- and semiparametric estimation of interaction in inhomogeneous point patterns. Statistica Neerlandica 54, 329--350.

See Also

Kmulti, Kdot.inhom, Kcross.inhom, pcf

  • Kmulti.inhom
# Finnish Pines data: marked by diameter and height
    plot(finpines, which.marks="height")
    I <- (marks(finpines)$height <= 2)
    J <- (marks(finpines)$height > 3)
    K <- Kmulti.inhom(finpines, I, J)
    # functions determining subsets
    f1 <- function(X) { marks(X)$height <= 2 }
    f2 <- function(X) { marks(X)$height > 3 }
    K <- Kmulti.inhom(finpines, f1, f2)
Documentation reproduced from package spatstat, version 1.34-1, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.