Learn R Programming

spatstat.explore (version 3.8-2)

Kdot.inhom: Inhomogeneous Multitype K Dot Function

Description

For a multitype point pattern, estimate the inhomogeneous version of the dot \(K\) function, which counts the expected number of points of any type within a given distance of a point of type \(i\), adjusted for spatially varying intensity.

Usage

Kdot.inhom(X, i, lambdaI=NULL, lambdadot=NULL, ...,
         r=NULL, breaks=NULL, rmax=NULL, 
         correction = c("border", "isotropic", "Ripley", "translate"),
         sigma=NULL, varcov=NULL, lambdaIdot=NULL,
         lambdaX=NULL, update=TRUE, leaveoneout=TRUE)

Arguments

Value

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

Essentially a data frame containing numeric columns

r

the values of the argument \(r\) at which the function \(K_{i\bullet}(r)\) has been estimated

theo

the theoretical value of \(K_{i\bullet}(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_{i\bullet}(r)\)

obtained by the edge corrections named.

Details

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

Briefly, given a multitype point process, consider the points without their types, and suppose this unmarked point process has intensity function \(\lambda(u)\) at spatial locations \(u\). Suppose we place a mass of \(1/\lambda(\zeta)\) at each point \(\zeta\) of the process. Then the expected total mass per unit area is 1. The inhomogeneous ``dot-type'' \(K\) function \(K_{i\bullet}^{\mbox{inhom}}(r)\) equals the expected total mass within a radius \(r\) of a point of the process of type \(i\), discounting this point itself.

If the process of type \(i\) points were independent of the points of other types, then \(K_{i\bullet}^{\mbox{inhom}}(r)\) would equal \(\pi r^2\). Deviations between the empirical \(K_{i\bullet}\) curve and the theoretical curve \(\pi r^2\) suggest dependence between the points of types \(i\) and \(j\) for \(j\neq i\).

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 argument i will be interpreted as a level 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 is missing, it defaults to the first level of the marks factor, i = levels(X$marks)[1].

The argument lambdaI supplies the values of the intensity of the sub-process of points of type i. It may be either

a pixel image

(object of class "im") which gives the values of the type i intensity at all locations in the window containing X;

a numeric vector

containing the values of the type i intensity evaluated only at the data points of type i. The length of this vector must equal the number of type i points in X.

a function

of the form function(x,y) which can be evaluated to give values of the intensity at any locations.

a fitted point process model

(object of class "ppm", "kppm" or "dppm") whose fitted trend can be used as the fitted intensity. (If update=TRUE the model will first be refitted to the data X before the trend is computed.)

omitted:

if lambdaI is omitted then it will be estimated using a leave-one-out kernel smoother.

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 the argument lambdadot should contain estimated values of the intensity of the entire point process. It may be either a pixel image, a numeric vector of length equal to the number of points in X, a function, or omitted.

Alternatively if the argument lambdaX is given, then it specifies the intensity values for all points of X, and the arguments lambdaI, lambdadot will be ignored. (The two arguments lambdaI, lambdadot allow the user to specify two different methods for calculating the intensities of the two kinds of points, while lambdaX ensures that the same method is used for both kinds of points.)

For advanced use only, the optional argument lambdaIdot is a matrix containing estimated values of the products of these two intensities for each pair of points, the first point of type i and the second of any type.

The argument r is the vector of values for the distance \(r\) at which \(K_{i\bullet}(r)\) should be evaluated. The values of \(r\) must be increasing nonnegative numbers and the maximum \(r\) value must not 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 Kdot.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

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

Examples

Run this code
    # Lansing Woods data
    woods <- lansing
    woods <- woods[seq(1,npoints(woods), by=10)]
    ma <- split(woods)$maple
    lg <- unmark(woods)

    # Estimate intensities by nonparametric smoothing
    lambdaM <- density.ppp(ma, sigma=0.15, at="points")
    lambdadot <- density.ppp(lg, sigma=0.15, at="points")
    K <- Kdot.inhom(woods, "maple", lambdaI=lambdaM,
                                      lambdadot=lambdadot)

    # Equivalent
    K <- Kdot.inhom(woods, "maple", sigma=0.15)

    # Fit model
    if(require("spatstat.model")) {
    fit <- ppm(woods ~ marks * polynom(x,y,2))
    K <- Kdot.inhom(woods, "maple", lambdaX=fit,
                    update=FALSE, leaveoneout=FALSE)
    }
    
    # synthetic example: type A points have intensity 50,
    #                    type B points have intensity 50 + 100 * x
    lamB <- as.im(function(x,y){50 + 100 * x}, owin())
    lamdot <- as.im(function(x,y) { 100 + 100 * x}, owin())
    X <- superimpose(A=runifpoispp(50), B=rpoispp(lamB))
    K <- Kdot.inhom(X, "B",  lambdaI=lamB,     lambdadot=lamdot)

Run the code above in your browser using DataLab