| Kcross.inhom {spatstat} | R Documentation | 
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.
Kcross.inhom(X, i=1, j=2, lambdaI, lambdaJ, ...,  r=NULL, breaks=NULL,
         correction = c("border", "isotropic", "Ripley", "translate") ,
lambdaIJ=NULL)
| X | The observed point pattern, from which an estimate of the inhomogeneous cross type K function Kij(r) will be computed. It must be a multitype point pattern (a marked point pattern whose marks are a factor). See under Details. | 
| i | Number or character string identifying the type (mark value)
of the points in Xfrom which distances are measured. | 
| j | Number or character string identifying the type (mark value)
of the points in Xto which distances are measured. | 
| lambdaI | Values of the the estimated intensity of the sub-process of
points of type i.
Either a pixel image (object of class"im"),
or a numeric vector containing the intensity values
at each of the typeipoints inX. | 
| lambdaJ | Values of the the estimated intensity of the sub-process of
points of type j.
Either a pixel image (object of class"im"),
or a numeric vector containing the intensity values
at each of the typejpoints inX. | 
| r | Optional. Numeric vector giving the values of the argument r at which the cross K function Kij(r) should be evaluated. There is a sensible default. First-time users are strongly advised not to specify this argument. See below for important conditions on r. | 
| 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"or"translate".
It specifies the edge correction(s) to be applied. | 
| ... | Ignored. | 
| lambdaIJ | Optional. A matrix containing estimates of the
product of the intensities lambdaIandlambdaJfor each pair of points of typesiandjrespectively. | 
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](z) at each point z of type j. Then the expected total mass per unit area is 1. The inhomogeneous ``cross-type'' K function K[ij]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]inhom(r) would equal pi * r^2. Deviations between the empirical Kij 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 3rd smallest level,
not the number 3). 
The argument lambdaI supplies the values
of the intensity of the sub-process of points of type i.
It may be either
"im") which
gives the values of the type i intensity
at all locations in the window containing X;
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.
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 or a numeric vector.
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 Kij(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.
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 Kij(r) has been estimated | 
| theo | the theoretical value of Kij(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 Kij(r)
obtained by the edge corrections named.
The arguments i and j are interpreted as
levels of the factor X$marks. Beware of the usual
trap with factors: numerical values are not
interpreted in the same way as character values.
Adrian Baddeley adrian@maths.uwa.edu.au http://www.maths.uwa.edu.au/~adrian/ and Rolf Turner rolf@math.unb.ca http://www.math.unb.ca/~rolf
Moller, J. and Waagepetersen, R. Statistical Inference and Simulation for Spatial Point Processes Chapman and Hall/CRC Boca Raton, 2003.
    # 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)
    lambdaW <- density.ppp(wh, sigma=0.15)
    K <- Kcross.inhom(lansing, "whiteoak", "maple", lambdaW[wh], lambdaM[ma])
    K <- Kcross.inhom(lansing, "whiteoak", "maple", lambdaW,     lambdaM)
    # method (2): 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))
    XA <- split(X)$A
    XB <- split(X)$B
    K <- Kcross.inhom(X, "A", "B",
        lambdaI=rep(50, XA$n), lambdaJ=lamB[XB])
    K <- Kcross.inhom(X, "A", "B",
        lambdaI=as.im(50, X$window), lambdaJ=lamB)