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.

models, spatial
Kres(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.

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.


  • 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.


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.

  • Kres
    fit0 <- ppm(cells, ~1) # uniform Poisson
    <testonly>fit0 <- ppm(cells, ~1, nd=16)</testonly>
    K0 <- Kres(fit0)
# 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)

# For computational efficiency
    Kc <- Kcom(fit1)
    K1 <- Kres(Kc)
Documentation reproduced from package spatstat, version 1.34-1, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.