Performs a test of goodness-of-fit of a point process model. The observed and predicted distributions of the values of a spatial covariate are compared using either the Kolmogorov-Smirnov test, Cramer-von Mises test or Anderson-Darling test. For non-Poisson models, a Monte Carlo test is used.
cdf.test(...)# S3 method for ppp
cdf.test(X, covariate, test=c("ks", "cvm", "ad"), ...,
                       interpolate=TRUE, jitter=TRUE)
An object of class "htest" containing the results of the
  test. See ks.test for details. The return value can be
  printed to give an informative summary of the test.
The value also belongs to the class "cdftest" for which there is
  a plot method.
A point pattern (object of class "ppp" or "lpp").
The spatial covariate on which the test will be based.
    A function, a pixel image (object of class "im"),
    a list of pixel images, or one of the characters
    "x" or "y" indicating the Cartesian coordinates.
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 ks.test
    (from the stats package) or 
    cvm.test or
    ad.test (from the goftest package)
    to control the test;
    and arguments passed to as.mask
    to control the pixel resolution.
Logical flag indicating whether to interpolate pixel images.
    If interpolate=TRUE, the value of the covariate
    at each point of X will be approximated by interpolating
    the nearby pixel values.
    If interpolate=FALSE, the nearest pixel value will be used.
Logical flag. If jitter=TRUE, values of the covariate
    will be slightly perturbed at random, to avoid tied values in the test.
The outcome of the test involves a small amount of random variability,
  because (by default) the coordinates are randomly perturbed to
  avoid tied values. Hence, if cdf.test is executed twice, the
  \(p\)-values will not be exactly the same. To avoid this behaviour,
  set jitter=FALSE.
Adrian Baddeley Adrian.Baddeley@curtin.edu.au and Rolf Turner r.turner@auckland.ac.nz
These functions perform a goodness-of-fit test of a Poisson or Gibbs point process model fitted to point pattern data. 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 test, the Cramer-von Mises test or the Anderson-Darling test. For Gibbs models, a Monte Carlo test is performed using these test statistics.
The function cdf.test is generic, with methods for
  point patterns ("ppp" or "lpp"),
  point process models ("ppm" or "lppm")
  and spatial logistic regression models ("slrm").
If X is a point pattern dataset (object of class
    "ppp"), then cdf.test(X, ...)
    performs a goodness-of-fit test of the
    uniform Poisson point process (Complete Spatial Randomness, CSR)
    for this dataset.
    For a multitype point pattern, the uniform intensity
    is assumed to depend on the type of point (sometimes called
    Complete Spatial Randomness and Independence, CSRI).
If model is a fitted point process model
    (object of class "ppm" or "lppm")
    then cdf.test(model, ...) performs
    a test of goodness-of-fit for this fitted model.
If model is a fitted spatial logistic regression
    (object of class "slrm") then cdf.test(model, ...) performs
    a test of goodness-of-fit for this fitted model.
The test is performed by comparing the observed distribution of the values of a spatial covariate at the data points, and the predicted distribution of the same covariate under the model, using a classical goodness-of-fit test. Thus, you must nominate a spatial covariate for this test.
If X is a point pattern that does not have marks,
  the argument covariate should be either a function(x,y)
  or a pixel image (object of class "im" containing the values
  of a spatial function, or one of the characters "x" or
  "y" indicating the Cartesian 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.
If X is a multitype point pattern, the argument covariate
  can be either a function(x,y,marks),
  or a pixel image, or a list of pixel images corresponding to
  each possible mark value, or one of the characters "x" or
  "y" indicating the Cartesian coordinates.
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. The
  A goodness-of-fit test of the uniform distribution is applied
  to these numbers using stats::ks.test,
  goftest::cvm.test or
  goftest::ad.test.
This test was apparently first described (in the context of spatial data, and using Kolmogorov-Smirnov) by Berman (1986). See also Baddeley et al (2005).
If model is not a Poisson process, then
  a Monte Carlo test is performed, by generating nsim
  point patterns which are simulated realisations of the model,
  re-fitting the model to each simulated point pattern, 
  and calculating the test statistic for each fitted model.
  The Monte Carlo \(p\) value is determined by comparing
  the simulated values of the test statistic 
  with the value for the original data.
The return value is an object of class "htest" containing the
  results of the hypothesis test. The print method for this class
  gives an informative summary of the test outcome.
The return value also belongs to the class "cdftest"
  for which there is a plot method plot.cdftest.
  The plot method displays the empirical cumulative distribution
  function of the covariate at the data points, and the predicted
  cumulative distribution function of the covariate under the model,
  plotted against the value of the covariate.
The argument jitter controls whether covariate values are
  randomly perturbed, in order to avoid ties.
  If the original data contains any ties in the covariate (i.e. points
  with equal values of the covariate), and if jitter=FALSE, then 
  the Kolmogorov-Smirnov test implemented in ks.test
  will issue a warning that it cannot calculate the exact \(p\)-value.
  To avoid this, if jitter=TRUE each value of the covariate will
  be perturbed by adding a small random value. The perturbations are
  normally distributed with standard deviation equal to one hundredth of
  the range of values of the covariate. This prevents ties, 
  and the \(p\)-value is still correct. There is
  a very slight loss of power.
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.
plot.cdftest,
  quadrat.test,
  berman.test,
  ks.test,
  cvm.test,
  ad.test,
  ppm
   op <- options(useFancyQuotes=FALSE)
   # test of CSR using x coordinate
   cdf.test(nztrees, "x")
   cdf.test(nztrees, "x", "cvm")
   cdf.test(nztrees, "x", "ad")
   # test of CSR using a function of x and y
   fun <- function(x,y){2* x + y}
   cdf.test(nztrees, fun)
   # test of CSR using an image covariate
   funimage <- as.im(fun, W=Window(nztrees))
   cdf.test(nztrees, funimage)
   # multitype point pattern
   cdf.test(amacrine, "x")
   options(op)
Run the code above in your browser using DataLab