Dispersion Test for Spatial Point Pattern Based on Quadrat Counts
Performs a test of Complete Spatial Randomness for a given point pattern, based on quadrat counts. Alternatively performs a goodness-of-fit test of a fitted inhomogeneous Poisson model. By default performs chi-squared tests; can also perform Monte Carlo based tests.
## S3 method for class 'ppp': quadrat.test(X, nx=5, ny=nx, alternative=c("two.sided", "regular", "clustered"), method=c("Chisq", "MonteCarlo"), conditional=TRUE, ..., xbreaks=NULL, ybreaks=NULL, tess=NULL, nsim=1999)
## S3 method for class 'ppm': quadrat.test(X, nx=5, ny=nx, alternative=c("two.sided", "regular", "clustered"), method=c("Chisq", "MonteCarlo"), conditional=TRUE, ..., xbreaks=NULL, ybreaks=NULL, tess=NULL, nsim=1999)
## S3 method for class 'quadratcount': quadrat.test(X, alternative=c("two.sided", "regular", "clustered"), method=c("Chisq", "MonteCarlo"), conditional=TRUE, ..., nsim=1999)
- A point pattern (object of class
"ppp") to be subjected to the goodness-of-fit test. Alternatively a fitted point process model (object of class
"ppm") to be tested. Alternatively
Xcan be the result
- Numbers of quadrats in the $x$ and $y$ directions.
- Character string (partially matched) specifying the alternative hypothesis.
- Character string (partially matched) specifying the test to use:
method="Chisq"for the chi-squared test (the default), or
method="MonteCarlo"for a Monte Carlo test.
- Logical. Should the Monte Carlo test be conducted
conditionally upon the observed number of points of the pattern?
- Optional. Numeric vector giving the $x$ coordinates of the
boundaries of the quadrats. Incompatible with
- Optional. Numeric vector giving the $y$ coordinates of the
boundaries of the quadrats. Incompatible with
- Tessellation (object of class
"tess") determining the quadrats. Incompatible with
nx, ny, xbreaks, ybreaks.
- The number of simulated samples to generate when
These functions perform $\chi^2$ tests or Monte Carlo tests of goodness-of-fit for a point process model, based on quadrat counts.
quadrat.test is generic, with methods for
point patterns (class
"ppp"), split point patterns
"splitppp"), point process models
"ppm") and quadrat count tables (class
Xis a point pattern, we test the null hypothesis that the data pattern is a realisation of Complete Spatial Randomness (the uniform Poisson point process). Marks in the point pattern are ignored.
Xis a split point pattern, then for each of the component point patterns (taken separately) we test the null hypotheses of Complete Spatial Randomness. See
Xis a fitted point process model, then it should be a Poisson point process model. The data to which this model was fitted are extracted from the model object, and are treated as the data point pattern for the test. We test the null hypothesis that the data pattern is a realisation of the (inhomogeneous) Poisson point process specified by
In all cases, the window of observation is divided
into tiles, and the number of data points in each tile is
counted, as described in
The quadrats are rectangular by default, or may be regions of arbitrary shape
specified by the argument
The expected number of points in each quadrat is also calculated,
as determined by CSR (in the first case) or by the fitted model
(in the second case). Then we perform either the
$\chi^2$ test of goodness-of-fit to the quadrat counts
or a Monte Carlo test (if
method="Chisq" then the $\chi^2$ test of
goodness-of-fit is performed. The Pearson $X^2$ statistic
$$X^2 = sum((observed - expected)^2/expected)$$
is computed, and compared to the $\chi^2$ distribution
with $m-k$ degrees of freedom, where
m is the number of
quadrats and $k$ is the number of fitted parameters
(equal to 1 for
quadrat.test.ppp). The default is to
compute the two-sided $p$-value, so that the test will
be declared significant if $X^2$ is either very large or very
small. One-sided $p$-values can be obtained by specifying the
alternative. An important requirement of the
$\chi^2$ test is that the expected counts in each quadrat
be greater than 5.
method="MonteCarlo" then a Monte Carlo test is performed,
obviating the need for all expected counts to be at least 5. In the
Monte Carlo test,
nsim random point patterns are generated
from the null hypothesis (either CSR or the fitted point process
model). The Pearson $X^2$ statistic is computed as above.
The $p$-value is determined by comparing the $X^2$
statistic for the observed point pattern, with the values obtained
from the simulations. Again the default is to
compute the two-sided $p$-value.
TRUE then the simulated samples are
generated from the multinomial distribution with the number of
The return value is an object of class
Printing the object gives comprehensible output
about the outcome of the test.
The return value also belongs to
the special class
"quadrat.test". Plotting the object
will display the quadrats, annotated by their observed and expected
counts and the Pearson residuals. See the examples.
- An object of class
The return value is also an object of the special class
"quadrattest", and there is a plot method for this class. See the examples.
To test a Poisson point process model against a specific alternative,
data(simdat) quadrat.test(simdat) quadrat.test(simdat, 4, 3) quadrat.test(simdat, alternative="regular") quadrat.test(simdat, alternative="clustered") # Using Monte Carlo p-values quadrat.test(swedishpines) # Get warning, small expected values. quadrat.test(swedishpines, method="M", nsim=4999) quadrat.test(swedishpines, method="M", nsim=4999, conditional=FALSE) <testonly>quadrat.test(swedishpines, method="M", nsim=19) quadrat.test(swedishpines, method="M", nsim=19, conditional=FALSE)</testonly> # quadrat counts qS <- quadratcount(simdat, 4, 3) quadrat.test(qS) # fitted model: inhomogeneous Poisson fitx <- ppm(simdat, ~x, Poisson()) quadrat.test(fitx) te <- quadrat.test(simdat, 4) residuals(te) # Pearson residuals plot(te) plot(simdat, pch="+", cols="green", lwd=2) plot(te, add=TRUE, col="red", cex=1.4, lty=2, lwd=3) sublab <- eval(substitute(expression(p[chi^2]==z), list(z=signif(te$p.value,3)))) title(sub=sublab, cex.sub=3) # quadrats of irregular shape B <- dirichlet(runifpoint(6, simdat$window)) qB <- quadrat.test(simdat, tess=B) plot(simdat, main="quadrat.test(simdat, tess=B)", pch="+") plot(qB, add=TRUE, col="red", lwd=2, cex=1.2)