Given a point process model fitted to a point pattern, compute residuals.

```
# S3 method for ppm
residuals(object, type="raw", …,
check=TRUE, drop=FALSE,
fittedvalues=NULL,
new.coef=NULL, dropcoef=FALSE,
quad=NULL)
```

object

The fitted point process model (an object of class `"ppm"`

)
for which residuals should be calculated.

type

String indicating the type of residuals to be calculated.
Current options are
`"raw"`

, `"inverse"`

, `"pearson"`

and `"score"`

.
A partial match is adequate.

…

Ignored.

check

Logical value indicating whether to check the internal format
of `object`

. If there is any possibility that this object
has been restored from a dump file, or has otherwise lost track of
the environment where it was originally computed, set
`check=TRUE`

.

drop

Logical value determining whether to delete quadrature points
that were not used to fit the model. See `quad.ppm`

for
explanation.

fittedvalues

Vector of fitted values for the conditional intensity at the quadrature points, from which the residuals will be computed. For expert use only.

new.coef

Optional. Numeric vector of coefficients for the model,
replacing `coef(object)`

.
See the section on Modified Residuals below.

dropcoef

Internal use only.

quad

Optional. Data specifying how to re-fit the model.
A list of arguments passed to `quadscheme`

.
See the section on Modified Residuals below.

An object of class `"msr"`

representing a signed measure or vector-valued measure
(see `msr`

). This object can be plotted.

Sometimes we want to modify the calculation of residuals by using
different values for the model parameters. This capability is
provided by the arguments `new.coef`

and `quad`

.

If `new.coef`

is given, then the residuals will be computed
by taking the model parameters to be `new.coef`

.
This should be a numeric vector
of the same length as the vector of fitted model parameters
`coef(object)`

.

If `new.coef`

is missing and `quad`

is given,
then the model parameters will
be determined by re-fitting the model using a new
quadrature scheme specified by `quad`

.
Residuals will be computed for the
original model `object`

using these new parameter values.

The argument `quad`

should normally be
a list of arguments in `name=value`

format that will be
passed to `quadscheme`

(together with
the original data points) to determine the new quadrature scheme.
It may also be a quadrature scheme (object of class
`"quad"`

) to which the model should be fitted, or a
point pattern (object of class `"ppp"`

) specifying the
*dummy points* in a new quadrature scheme.

This function computes several kinds of residuals for the fit of
a point process model to a spatial point pattern dataset
(Baddeley et al, 2005).
Use `plot.msr`

to plot the residuals directly,
or `diagnose.ppm`

to produce diagnostic plots based on these residuals.

The argument `object`

must be a fitted point process model
(object of class `"ppm"`

). Such objects are produced by the maximum
pseudolikelihood fitting algorithm `ppm`

.
This fitted model object contains complete
information about the original data pattern.

Residuals are attached both to the data points and to some other points in the window of observation (namely, to the dummy points of the quadrature scheme used to fit the model). If the fitted model is correct, then the sum of the residuals over all (data and dummy) points in a spatial region \(B\) has mean zero. For further explanation, see Baddeley et al (2005).

The type of residual
is chosen by the argument `type`

. Current options are

`"raw"`

:the raw residuals $$ r_j = z_j - w_j \lambda_j $$ at the quadrature points \(u_j\), where \(z_j\) is the indicator equal to 1 if \(u_j\) is a data point and 0 if \(u_j\) is a dummy point; \(w_j\) is the quadrature weight attached to \(u_j\); and $$\lambda_j = \hat\lambda(u_j,x)$$ is the conditional intensity of the fitted model at \(u_j\). These are the spatial analogue of the martingale residuals of a one-dimensional counting process.

`"inverse"`

:the `inverse-lambda' residuals (Baddeley et al, 2005) $$ r^{(I)}_j = \frac{r_j}{\lambda_j} = \frac{z_j}{\lambda_j} - w_j $$ obtained by dividing the raw residuals by the fitted conditional intensity. These are a counterpart of the exponential energy marks (see

`eem`

).`"pearson"`

:the Pearson residuals (Baddeley et al, 2005) $$ r^{(P)}_j = \frac{r_j}{\sqrt{\lambda_j}} = \frac{z_j}{\sqrt{\lambda_j}} - w_j \sqrt{\lambda_j} $$ obtained by dividing the raw residuals by the square root of the fitted conditional intensity. The Pearson residuals are standardised, in the sense that if the model (true and fitted) is Poisson, then the sum of the Pearson residuals in a spatial region \(B\) has variance equal to the area of \(B\).

`"score"`

:the score residuals (Baddeley et al, 2005) $$ r_j = (z_j - w_j \lambda_j) x_j $$ obtained by multiplying the raw residuals \(r_j\) by the covariates \(x_j\) for quadrature point \(j\). The score residuals always sum to zero.

The result of `residuals.ppm`

is a measure
(object of class `"msr"`

).
Use `plot.msr`

to plot the residuals directly,
or `diagnose.ppm`

to produce diagnostic plots
based on these residuals.
Use `integral.msr`

to compute the total residual.

By default,
the window of the measure is the same as the original window
of the data. If `drop=TRUE`

then the window is the
domain of integration of the pseudolikelihood or composite likelihood.
This only matters when the model `object`

was fitted using
the border correction: in that case, if `drop=TRUE`

the
window of the residuals is the erosion of the original data window
by the border correction distance `rbord`

.

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.

Baddeley, A., Moller, J. and Pakes, A.G. (2008)
Properties of residuals for spatial point processes.
*Annals of the Institute of Statistical Mathematics*
**60**, 627--649.

# NOT RUN { fit <- ppm(cells, ~x, Strauss(r=0.15)) # Pearson residuals rp <- residuals(fit, type="pe") rp # simulated data X <- rStrauss(100,0.7,0.05) # fit Strauss model fit <- ppm(X, ~1, Strauss(0.05)) res.fit <- residuals(fit) # check that total residual is 0 integral.msr(residuals(fit, drop=TRUE)) # true model parameters truecoef <- c(log(100), log(0.7)) res.true <- residuals(fit, new.coef=truecoef) # }