R: Spatial Distribution Test for Multiple Point Process Model

cdf.test.mppm {spatstat.core} | R Documentation

## Spatial Distribution Test for Multiple Point Process Model

### Description

Performs a spatial distribution test of a point process model fitted to multiple spatial point patterns. The test compares the observed and predicted distributions of the values of a spatial covariate, using either the Kolmogorov-Smirnov, Cramer-von Mises or Anderson-Darling test of goodness-of-fit.

### Usage

    ## S3 method for class 'mppm'
    cdf.test(model, covariate, test=c("ks", "cvm", "ad"), ...,
                nsim=19, verbose=TRUE, interpolate=FALSE, fast=TRUE, jitter=TRUE)

### Arguments

`model` | An object of class `"mppm"` representing a point process model fitted to multiple spatial point patterns.
`covariate` | The spatial covariate on which the test will be based. A function, a pixel image, a list of functions, a list of pixel images, a hyperframe, a character string containing the name of one of the covariates in `model`, or one of the strings `"x"` or `"y"`.
`test` | Character string identifying the test to be performed: `"ks"` for Kolmogorov-Smirnov test, `"cvm"` for Cramer-von Mises test or `"ad"` for Anderson-Darling test.
`...` | Arguments passed to `cdf.test` to control the test.
`nsim` | Number of simulated realisations which should be generated, if a Monte Carlo test is required.
`verbose` | Logical flag indicating whether to print progress reports.
`interpolate` | Logical flag indicating whether to interpolate between pixel values when codecovariate is a pixel image. See Details.
`fast` | Logical flag. If `TRUE`, values of the covariate are only sampled at the original quadrature points used to fit the model. If `FALSE`, values of the covariate are sampled at all pixels, which can be slower by three orders of magnitude.
`jitter` | Logical flag. If `TRUE`, observed values of the covariate are perturbed by adding small random values, to avoid tied observations.

### Details

This function is a method for the generic function `cdf.test` for the class `mppm`.

This function performs a goodness-of-fit test of a point process model that has been fitted to multiple point patterns. The observed distribution of the values of a spatial covariate at the data points, and the predicted distribution of the same values under the model, are compared using the Kolmogorov-Smirnov, Cramer-von Mises or Anderson-Darling test of goodness-of-fit. These are exact tests if the model is Poisson; otherwise, for a Gibbs model, a Monte Carlo p-value is computed by generating simulated realisations of the model and applying the selected goodness-of-fit test to each simulation.

The argument `model` should be a fitted point process model fitted to multiple point patterns (object of class `"mppm"`).

The argument `covariate` contains the values of a spatial function. It can be

- a `function(x,y)`

- a pixel image (object of class `"im"`

- a list of `function(x,y)`, one for each point pattern

- a list of pixel images, one for each point pattern

- a hyperframe (see `hyperframe`) of which the first column will be taken as containing the covariate

- a character string giving the name of one of the covariates in `model`

- one of the character strings `"x"` or `"y"`, indicating the spatial coordinates.

If `covariate` is an image, it should have numeric values, and its domain should cover the observation window of the `model`. If `covariate` is a function, it should expect two arguments `x` and `y` which are vectors of coordinates, and it should return a numeric vector of the same length as `x` and `y`.

First the original data point pattern is extracted from `model`. The values of the `covariate` at these data points are collected.

The predicted distribution of the values of the `covariate` under the fitted `model` is computed as follows. The values of the `covariate` at all locations in the observation window are evaluated, weighted according to the point process intensity of the fitted model, and compiled into a cumulative distribution function F using `ewcdf`.

The probability integral transformation is then applied: the values of the `covariate` at the original data points are transformed by the predicted cumulative distribution function F into numbers between 0 and 1. If the model is correct, these numbers are i.i.d. uniform random numbers. A goodness-of-fit test of the uniform distribution is applied to these numbers using `ks.test`, `cvm.test` or `ad.test`.

The argument `interpolate` determines how pixel values will be handled when codecovariate is a pixel image. The value of the covariate at a data point is obtained by looking up the value of the nearest pixel if `interpolate=FALSE`, or by linearly interpolating between the values of the four nearest pixels if `interpolate=TRUE`. Linear interpolation is slower, but is sometimes necessary to avoid tied values of the covariate arising when the pixel grid is coarse.

If `model` is a Poisson point process, then the Kolmogorov-Smirnov, Cramer-von Mises and Anderson-Darling tests are theoretically exact. This test was apparently first described (in the context of spatial data, and for Kolmogorov-Smirnov) by Berman (1986). See also Baddeley et al (2005).

If `model` is not a Poisson point process, then the Kolmogorov-Smirnov, Cramer-von Mises and Anderson-Darling tests are biased. Instead they are used as the basis of a Monte Carlo test. First `nsim` simulated realisations of the model will be generated. Each simulated realisation consists of a list of simulated point patterns, one for each of the original data patterns. This can take a very long time. The model is then re-fitted to each simulation, and the refitted model is subjected to the goodness-of-fit test described above. A Monte Carlo p-value is then computed by comparing the p-value of the original test with the p-values obtained from the simulations.

### Value

An object of class `"cdftest"` and `"htest"` containing the results of the test. See `cdf.test` for details.

### Author(s)

Adrian Baddeley Adrian.Baddeley@curtin.edu.au, Ida-Maria Sintorn and Leanne Bischoff. Implemented by Adrian Baddeley Adrian.Baddeley@curtin.edu.au, Rolf Turner r.turner@auckland.ac.nz and Ege Rubak rubak@math.aau.dk.

### References

Baddeley, A., Rubak, E. and Turner, R. (2015) Spatial Point Patterns: Methodology and Applications with R. London: Chapman and Hall/CRC Press.

Baddeley, A., Turner, R., Moller, J. and Hazelton, M. (2005) Residual analysis for spatial point processes. Journal of the Royal Statistical Society, Series B 67, 617–666.

Berman, M. (1986) Testing for spatial association between a point process and another stochastic process. Applied Statistics 35, 54–62.

### See Also

`cdf.test`, `quadrat.test`, `mppm`

### Examples

       # three i.i.d. realisations of nonuniform Poisson process
       lambda <- as.im(function(x,y) { 200 * exp(x) }, square(1))
       dat <- hyperframe(X=list(rpoispp(lambda), rpoispp(lambda), rpoispp(lambda)))

       # fit uniform Poisson process
       fit0 <- mppm(X~1, dat)
       # fit correct nonuniform Poisson process
       fit1 <- mppm(X~x, dat)

       # test wrong model
       cdf.test(fit0, "x")
       # test right model
       cdf.test(fit1, "x")

       # Gibbs model
       fitGibbs <- update(fit0, interaction=Strauss(0.05))
       ns <- if(interactive()) 19 else 2
       cdf.test(fitGibbs, "x", nsim=ns)

[Package spatstat.core version 2.3-0 Index]