For a multitype point pattern, estimate the multitype \(K\) function which counts the expected number of points of type \(j\) within a given distance of a point of type \(i\).

```
Kcross(X, i, j, r=NULL, breaks=NULL, correction,
..., ratio=FALSE, from, to )
```

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_{ij}(r)\) has been estimated

- theo
the 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.

If `ratio=TRUE`

then the return value also has two
attributes called `"numerator"`

and `"denominator"`

which are `"fv"`

objects
containing the numerators and denominators of each
estimate of \(K(r)\).

- X
The observed point pattern, from which an estimate of the 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)`

.- r
numeric vector. The values of the argument \(r\) at which the distribution 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 for important conditions on \(r\).

- breaks
This argument is for internal use only.

- correction
A character vector containing any selection of the options

`"border"`

,`"bord.modif"`

,`"isotropic"`

,`"Ripley"`

,`"translate"`

,`"translation"`

,`"periodic"`

,`"none"`

or`"best"`

. It specifies the edge correction(s) to be applied. Alternatively`correction="all"`

selects all options.- ...
Ignored.

- ratio
Logical. If

`TRUE`

, the numerator and denominator of each edge-corrected estimate will also be saved, for use in analysing replicated point patterns.- from,to
An alternative way to specify

`i`

and`j`

respectively.

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.

Adrian Baddeley Adrian.Baddeley@curtin.edu.au and Rolf Turner r.turner@auckland.ac.nz.

This function `Kcross`

and its companions
`Kdot`

and `Kmulti`

are generalisations of the function `Kest`

to multitype point patterns.

A multitype point pattern is a spatial pattern of points classified into a finite number of possible ``colours'' or ``types''. In the spatstat package, a multitype pattern is represented as a single point pattern object in which the points carry marks, and the mark value attached to each point determines the type of that point.

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`

.
If `i`

and `j`

are missing, they default to the first
and second level of the marks factor, respectively.

The ``cross-type'' (type \(i\) to type \(j\)) \(K\) function of a stationary multitype point process \(X\) is defined so that \(\lambda_j K_{ij}(r)\) equals the expected number of additional random points of type \(j\) within a distance \(r\) of a typical point of type \(i\) in the process \(X\). Here \(\lambda_j\) is the intensity of the type \(j\) points, i.e. the expected number of points of type \(j\) per unit area. The function \(K_{ij}\) is determined by the second order moment properties of \(X\).

An estimate of \(K_{ij}(r)\) is a useful summary statistic in exploratory data analysis of a multitype point pattern. If the process of type \(i\) points were independent of the process of type \(j\) points, then \(K_{ij}(r)\) would equal \(\pi r^2\). Deviations between the empirical \(K_{ij}\) curve and the theoretical curve \(\pi r^2\) may suggest dependence between the points of types \(i\) and \(j\).

This algorithm estimates the distribution function \(K_{ij}(r)\)
from the point pattern `X`

. It assumes that `X`

can be treated
as a realisation of a stationary (spatially homogeneous)
random spatial point process in the plane, observed through
a bounded window.
The window (which is specified in `X`

as `Window(X)`

)
may have arbitrary shape.
Biases due to edge effects are
treated in the same manner as in `Kest`

,
using the border correction.

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 not exceed the radius of the
largest disc contained in the window.

The pair correlation function can also be applied to the
result of `Kcross`

; see `pcf`

.

Cressie, N.A.C. *Statistics for spatial data*.
John Wiley and Sons, 1991.

Diggle, P.J. *Statistical analysis of spatial point patterns*.
Academic Press, 1983.

Harkness, R.D and Isham, V. (1983)
A bivariate spatial point pattern of ants' nests.
*Applied Statistics* **32**, 293--303

Lotwick, H. W. and Silverman, B. W. (1982).
Methods for analysing spatial processes of several types of points.
*J. Royal Statist. Soc. Ser. B* **44**, 406--413.

Ripley, B.D. *Statistical inference for spatial processes*.
Cambridge University Press, 1988.

Stoyan, D, Kendall, W.S. and Mecke, J.
*Stochastic geometry and its applications*.
2nd edition. Springer Verlag, 1995.

`Kdot`

,
`Kest`

,
`Kmulti`

,
`pcf`

```
# amacrine cells data
K01 <- Kcross(amacrine, "off", "on")
plot(K01)
# \testonly{
K01 <- Kcross(amacrine, "off", "on", ratio=TRUE)
# }
# synthetic example: point pattern with marks 0 and 1
# \donttest{
pp <- runifpoispp(50)
pp <- pp %mark% factor(sample(0:1, npoints(pp), replace=TRUE))
K <- Kcross(pp, "0", "1")
K <- Kcross(pp, 0, 1) # equivalent
# }
```

Run the code above in your browser using DataLab