Kres
Residual K Function
Given a point process model fitted to a point pattern dataset, this function computes the residual $K$ function, which serves as a diagnostic for goodness-of-fit of the model.
Usage
Kres(object, ...)
Arguments
- object
- Object to be analysed.
Either a fitted point process model (object of class
"ppm"
), a point pattern (object of class"ppp"
), a quadrature scheme (object of class"quad"
), or the value returned by a pr - ...
- Arguments passed to
Kcom
.
Details
This command provides a diagnostic for the goodness-of-fit of a point process model fitted to a point pattern dataset. It computes a residual version of the $K$ function of the dataset, which should be approximately zero if the model is a good fit to the data.
In normal use, object
is a fitted point process model
or a point pattern. Then Kres
first calls Kcom
to compute both the nonparametric estimate of the $K$ function
and its model compensator. Then Kres
computes the
difference between them, which is the residual $K$-function.
Alternatively, object
may be a function value table
(object of class "fv"
) that was returned by
a previous call to Kcom
. Then Kres
computes the
residual from this object.
Value
- A function value table (object of class
"fv"
), essentially a data frame of function values. There is a plot method for this class. Seefv.object
.
References
Baddeley, A., Rubak, E. and Moller, J. (2011) Score, pseudo-score and residual diagnostics for spatial point process models. Statistical Science 26, 613--646.
See Also
Related functions:
Kcom
,
Kest
.
Alternative functions:
Gres
,
psstG
, psstA
, psst
.
Point process models: ppm
.
Examples
data(cells)
fit0 <- ppm(cells, ~1) # uniform Poisson
<testonly>fit0 <- ppm(cells, ~1, nd=16)</testonly>
K0 <- Kres(fit0)
K0
plot(K0)
# isotropic-correction estimate
plot(K0, ires ~ r)
# uniform Poisson is clearly not correct
fit1 <- ppm(cells, ~1, Strauss(0.08))
<testonly>fit1 <- ppm(cells, ~1, Strauss(0.08), nd=16)</testonly>
K1 <- Kres(fit1)
if(interactive()) {
plot(K1, ires ~ r)
# fit looks approximately OK; try adjusting interaction distance
plot(Kres(cells, interaction=Strauss(0.12)))
}
# How to make envelopes
E <- envelope(fit1, Kres, interaction=as.interact(fit1), nsim=19)
plot(E)
# For computational efficiency
Kc <- Kcom(fit1)
K1 <- Kres(Kc)