# predict.ppm

##### Prediction from a Fitted Point Process Model

Given a fitted point process model obtained by `ppm`

,
evaluate the spatial trend or the conditional intensity of the model
at new locations.

##### Usage

```
## S3 method for class 'ppm':
predict(object, window=NULL, ngrid=NULL, locations=NULL,
covariates=NULL, type="trend", X=data.ppm(object), correction,
..., new.coef=NULL, check=TRUE, repair=TRUE)
```

##### Arguments

- object
- A fitted point process model, typically obtained from
the model-fitting algorithm
`ppm`

. An object of class`"ppm"`

(see`ppm.object`

). - window
- Optional. A window (object of class
`"owin"`

) delimiting the locations where predictions should be computed. Defaults to the window of the original data used to fit the model`object`

. - ngrid
- Optional. Dimensions of a rectangular grid of locations
inside
`window`

where the predictions should be computed. An integer, or an integer vector of length 2, specifying the number of grid points in the $y$ and $x$ directions. - locations
- Optional. Data giving the $x,y$ coordinates (and marks, if required)
of locations at which predictions should be computed.
Either a point pattern, or a data frame with columns named
`x`

and`y`

, or a binary image mask. (I - covariates
- Values of external covariates required by the model. Either a data frame or a list of images. See Details.
- type
- Character string.
Indicates which property of the fitted model should be predicted.
Options are
`"trend"`

for the spatial trend,`"cif"`

or`"lambda"`

for the conditional intensity, and`"se"`

f - X
- Optional. A point pattern (object of class
`"ppp"`

) to be taken as the data point pattern when calculating the conditional intensity. The default is to use the original data to which the model was fitted. - correction
- Name of the edge correction to be used
in calculating the conditional intensity.
Options include
`"border"`

and`"none"`

. Other options may include`"periodic"`

,`"isotropic"`

and`"translat`

- ...
- Ignored.
- new.coef
- Numeric vector of parameter values to replace the
fitted model parameters
`coef(object)`

. - 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 compu - repair
- Logical value indicating whether to repair the internal format
of
`object`

, if it is found to be damaged.

##### Details

This function computes the spatial trend
and the conditional intensity of a fitted spatial point process model,
and the standard error of the estimate of spatial trend.
See Baddeley and Turner (2000) for explanation and examples.
Given a point pattern dataset, we may fit
a point process model to the data using the
model-fitting algorithm `ppm`

. This
returns an object of class `"ppm"`

representing
the fitted point process model (see `ppm.object`

).
The parameter estimates in this fitted model can be read off
simply by printing the `ppm`

object.
The spatial trend and conditional intensity of the
fitted model are evaluated using this function `predict.ppm`

.

The default action is to create a rectangular grid of points in the observation window of the data point pattern, and evaluate the spatial trend at these locations.

The argument `type`

specifies the values that are computed:
[object Object],[object Object],[object Object]
Note that the ``spatial trend'' is the same as the intensity function
if the fitted model `object`

is a Poisson point process.
However, if the model is not a Poisson process, then the
``spatial trend'' is the (exponentiated) first order potential
and not the intensity of the process. [For example if we fit the
stationary Strauss process with parameters
$\beta$ and $\gamma$,
then the spatial trend is constant and equal to $\beta$,
while the intensity is a smaller value that is not easy to
compute. ]

The spatial locations where predictions are required,
are determined by the (incompatible)
arguments `ngrid`

and `locations`

.

- If the argument
`ngrid`

is present, then predictions are performed at a rectangular grid of locations in the window`window`

. The result of prediction will be a pixel image or images. - If
`locations`

is present, then predictions will be performed at the spatial locations given by this dataset. These may be an arbitrary list of spatial locations, or they may be a rectangular grid. The result of prediction will be either a numeric vector or a pixel image or images. - If neither
`ngrid`

nor`locations`

is given, then`ngrid`

is assumed. The value of`ngrid`

defaults to`spatstat.options("npixel")`

, which is initialised to 128 whenspatstat is loaded.

`locations`

may be a point pattern,
a data frame or a list specifying arbitrary locations;
or it may be a binary image mask (an object of class `"owin"`

with type `"mask"`

) specifying (a subset of) a rectangular
grid of locations. If `locations`

is a point pattern (object of class `"ppp"`

),
then prediction will be performed at the points of the point pattern.
The result of prediction will be a vector of predicted values,
one value for each point.
If the model is a marked point process, then
`locations`

should be a marked point pattern, with marks of the
same kind as the model; prediction will be performed at these
marked points.
The result of prediction will be a vector of predicted values,
one value for each (marked) point.

If `locations`

is a data frame or list, then it must contain
vectors `locations$x`

and `locations$y`

specifying the
$x,y$ coordinates of the prediction locations. Additionally, if
the model is a marked point process, then `locations`

must also contain
a factor `locations$marks`

specifying the marks of the
prediction locations. These vectors must have equal length.
The result of prediction will be a vector of predicted values,
of the same length.
If `locations`

is a binary image mask, then prediction will be
performed at each pixel in this binary image where the pixel value
is `TRUE`

(in other words, at each pixel that is inside the
window). If the fitted model is an unmarked point process, then the
result of prediction will be an image. If the fitted model is a
marked point process, then prediction will
be performed for each possible value of the mark at each such
location, and the result of prediction will be a
list of images, one for each mark value.
The argument `covariates`

gives the values of any spatial covariates
at the prediction locations.
If the trend formula in the fitted model
involves spatial covariates (other than
the Cartesian coordinates `x`

, `y`

)
then `covariates`

is required.

The format and use of `covariates`

are analogous to those of the
argument of the same name in `ppm`

.
It is either a data frame or a list of images.
If `covariates`

is a list of images, then
the names of the entries should correspond to
the names of covariates in the model formula `trend`

.
Each entry in the list must be an image object (of class `"im"`

,
see `im.object`

).
The software will look up
the pixel values of each image at the quadrature points.

If `covariates`

is a data frame, then the
`i`

th row of `covariates`

is assumed to contain covariate data for the `i`

th location.
When `locations`

is a data frame,
this just means that each row of `covariates`

contains the
covariate data for the location specified in the corresponding row of
`locations`

. When `locations`

is a binary image
mask, the row `covariates[i,]`

must correspond to the location
`x[i],y[i]`

where `x = as.vector(raster.x(locations))`

and `y = as.vector(raster.y(locations))`

.

Note that if you only want to use prediction in order to
generate a plot of the predicted values,
it may be easier to use `plot.ppm`

which calls
this function and plots the results.

##### Value

*If*a vector of predicted values for the spatial locations (and marks, if required) given in`locations`

is given and is a data frame:`locations`

.*If*If`ngrid`

is given, or if`locations`

is given and is a binary image mask:`object`

is an unmarked point process, the result is a pixel image object (of class`"im"`

, see`im.object`

) containing the predictions. If`object`

is a multitype point process, the result is a list of pixel images, containing the predictions for each type at the same grid of locations.The ``predicted values'' are either values of the spatial trend (if

`type="trend"`

), values of the conditional intensity (if`type="cif"`

or`type="lambda"`

), or estimates of standard error for the fitted spatial trend (if`type="se"`

).

##### Warnings

The current implementation invokes `predict.glm`

so that **prediction is wrong** if the trend formula in
`object`

involves terms in `ns()`

,
`bs()`

or `poly()`

.
This is a weakness of `predict.glm`

itself!
Error messages may be very opaque,
as they tend to come from deep in the workings of
`predict.glm`

.
If you are passing the `covariates`

argument
and the function crashes,
it is advisable to start by checking that all the conditions
listed above are satisfied.

##### References

Baddeley, A. and Turner, R.
Practical maximum pseudolikelihood for spatial point patterns.
*Australian and New Zealand Journal of Statistics*
**42** (2000) 283--322.
Berman, M. and Turner, T.R.
Approximating point process likelihoods with GLIM.
*Applied Statistics* **41** (1992) 31--38.

##### See Also

`ppm`

,
`ppm.object`

,
`plot.ppm`

,
`print.ppm`

,
`fitted.ppm`

,
`spatstat.options`

##### Examples

```
data(cells)
<testonly>op <- spatstat.options(npixel=32)</testonly>
m <- ppm(cells, ~ polynom(x,y,2), Strauss(0.05))
trend <- predict(m, type="trend")
image(trend)
points(cells)
cif <- predict(m, type="cif")
persp(cif)
data(japanesepines)
mj <- ppm(japanesepines, ~harmonic(x,y,2))
se <- predict(mj, type="se")
# prediction at arbitrary locations
predict(mj, locations=data.frame(x=0.3, y=0.4))
X <- runifpoint(5, as.owin(japanesepines))
predict(mj, locations=X)
predict(mj, locations=X, type="se")
# multitype
data(amacrine)
ma <- ppm(amacrine, ~marks,
MultiStrauss(c("off","on"),matrix(0.06, 2, 2)))
Z <- predict(ma)
Z <- predict(ma, type="cif")
predict(ma, locations=data.frame(x=0.8, y=0.5,marks="on"), type="cif")
<testonly>spatstat.options(op)</testonly>
```

*Documentation reproduced from package spatstat, version 1.36-0, License: GPL (>= 2)*