Learn R Programming

spatstat (version 1.52-1)

Kres: Residual K Function

Description

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 previous call to Kcom.

Arguments passed to Kcom.

Value

A function value table (object of class "fv"), essentially a data frame of function values. There is a plot method for this class. See fv.object.

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.

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

Run this code
# NOT RUN {
    data(cells)
    fit0 <- ppm(cells, ~1) # uniform Poisson
    
# }
# NOT RUN {
    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))
    
# }
# NOT RUN {
    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
    
# }
# NOT RUN {
    E <- envelope(fit1, Kres, model=fit1, nsim=19)
    plot(E)
    
# }
# NOT RUN {
# For computational efficiency
    Kc <- Kcom(fit1)
    K1 <- Kres(Kc)
# }

Run the code above in your browser using DataLab