Learn R Programming

spatstat (version 1.31-3)

Kcross.inhom: Inhomogeneous Cross K Function

Description

For a multitype point pattern, estimate the inhomogeneous version of the cross $K$ function, which counts the expected number of points of type $j$ within a given distance of a point of type $i$, adjusted for spatially varying intensity.

Usage

Kcross.inhom(X, i, j, lambdaI=NULL, lambdaJ=NULL, ...,  r=NULL, breaks=NULL,
         correction = c("border", "isotropic", "Ripley", "translate"),
         sigma=NULL, varcov=NULL,
         lambdaIJ=NULL)

Arguments

X
The observed point pattern, from which an estimate of the inhomogeneous cross type $K$ function $K_{ij}(r)$ will be computed. It must be a multitype point pattern (a marked point pattern whose marks are a factor). See under Details.
i
The type (mark value) of the points in X from which distances are measured. A character string (or something that will be converted to a character string). Defaults to the first level of marks(X).
j
The type (mark value) of the points in X to which distances are measured. A character string (or something that will be converted to a character string). Defaults to the second level of marks(X).
lambdaI
Optional. Values of the the estimated intensity of the sub-process of points of type i. Either a pixel image (object of class "im"), a numeric vector containing the intensity values at each of the type i
lambdaJ
Optional. Values of the the estimated intensity of the sub-process of points of type j. Either a pixel image (object of class "im"), a numeric vector containing the intensity values at each of the type j
r
Optional. Numeric vector giving the values of the argument $r$ at which the cross K function $K_{ij}(r)$ should be evaluated. There is a sensible default. First-time users are strongly advised not to specify this argument. Se
breaks
Optional. An alternative to the argument r. Not normally invoked by the user. See the Details section.
correction
A character vector containing any selection of the options "border", "bord.modif", "isotropic", "Ripley" ,"translate", "translation", "none" or
...
Ignored.
sigma
Standard deviation of isotropic Gaussian smoothing kernel, used in computing leave-one-out kernel estimates of lambdaI, lambdadot if they are omitted.
varcov
Variance-covariance matrix of anisotropic Gaussian kernel, used in computing leave-one-out kernel estimates of lambdaI, lambdadot if they are omitted. Incompatible with sigma.
lambdaIJ
Optional. A matrix containing estimates of the product of the intensities lambdaI and lambdaJ for each pair of points of types i and j respectively.

Value

  • 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.

Warnings

The arguments i and j are always interpreted as levels of the factor X$marks. They are converted to character strings if they are not already character strings. The value i=1 does not refer to the first level of the factor.

Details

This is a generalisation of the function Kcross to include an adjustment for spatially inhomogeneous intensity, in a manner similar to the function Kinhom.

The inhomogeneous cross-type $K$ function is described by Moller and Waagepetersen (2003, pages 48-49 and 51-53). Briefly, given a multitype point process, suppose the sub-process of points of type $j$ has intensity function $\lambda_j(u)$ at spatial locations $u$. Suppose we place a mass of $1/\lambda_j(\zeta)$ at each point $\zeta$ of type $j$. Then the expected total mass per unit area is 1. The inhomogeneous ``cross-type'' $K$ function $K_{ij}^{\mbox{inhom}}(r)$ equals the expected total mass within a radius $r$ of a point of the process of type $i$. If the process of type $i$ points were independent of the process of type $j$ points, then $K_{ij}^{\mbox{inhom}}(r)$ would equal $\pi r^2$. Deviations between the empirical $K_{ij}$ curve and the theoretical curve $\pi r^2$ suggest dependence between the points of types $i$ and $j$.

The argument X must be a point pattern (object of class "ppp") or any data that are acceptable to as.ppp. It must be a marked point pattern, and the mark vector X$marks must be a factor.

The arguments i and j will be interpreted as levels of the factor X$marks. (Warning: this means that an integer value i=3 will be interpreted as the number 3, not the 3rd smallest level). If i and j are missing, they default to the first and second level of the marks factor, respectively.

The argument lambdaI supplies the values of the intensity of the sub-process of points of type 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 should contain estimated values of the intensity of the sub-process of points of type j. It may be either a pixel image, a function, a numeric vector, or omitted. The optional argument lambdaIJ is for advanced use only. It is a matrix containing estimated values of the products of these two intensities for each pair of data points of types i and j respectively. The argument r is the vector of values for the distance $r$ at which $K_{ij}(r)$ should be evaluated. The values of $r$ must be increasing nonnegative numbers and the maximum $r$ value must exceed the radius of the largest disc contained in the window.

The argument correction chooses the edge correction as explained e.g. in Kest.

The pair correlation function can also be applied to the result of Kcross.inhom; see pcf.

References

Moller, J. and Waagepetersen, R. Statistical Inference and Simulation for Spatial Point Processes Chapman and Hall/CRC Boca Raton, 2003.

See Also

Kcross, Kinhom, Kdot.inhom, Kmulti.inhom, pcf

Examples

Run this code
# Lansing Woods data
    data(lansing)
    lansing <- lansing[seq(1,lansing$n, by=10)]
    ma <- split(lansing)$maple
    wh <- split(lansing)$whiteoak

    # method (1): estimate intensities by nonparametric smoothing
    lambdaM <- density.ppp(ma, sigma=0.15, at="points")
    lambdaW <- density.ppp(wh, sigma=0.15, at="points")
    K <- Kcross.inhom(lansing, "whiteoak", "maple", lambdaW, lambdaM)

    # method (2): leave-one-out
    K <- Kcross.inhom(lansing, "whiteoak", "maple", sigma=0.15)

    # method (3): fit parametric intensity model
    fit <- ppm(lansing, ~marks * polynom(x,y,2))
    # evaluate fitted intensities at data points
    # (these are the intensities of the sub-processes of each type)
    inten <- fitted(fit, dataonly=TRUE)
    # split according to types of points
    lambda <- split(inten, lansing$marks)
    K <- Kcross.inhom(lansing, "whiteoak", "maple",
              lambda$whiteoak, lambda$maple)
    
    # synthetic example: type A points have intensity 50,
    #                    type B points have intensity 100 * x
    lamB <- as.im(function(x,y){50 + 100 * x}, owin())
    X <- superimpose(A=runifpoispp(50), B=rpoispp(lamB))
    K <- Kcross.inhom(X, "A", "B",
        lambdaI=as.im(50, X$window), lambdaJ=lamB)

Run the code above in your browser using DataLab