predict.ppm {spatstat}R Documentation

Prediction from a Fitted Point Process Model

Description

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, ngrid=NULL, locations=NULL,
   covariates=NULL, type="trend", ..., 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

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

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. (Incompatible with locations)

locations

Data giving the x,y coordinates (and marks, if required) at which predictions should be computed. Either a data frame or a binary image mask. (Incompatible with ngrid)

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" for the standard error of the fitted spatial trend.

...

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.

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:

If type="trend":

the “spatial trend” of the fitted model is evaluated at each required spatial location u.

If type="cif":

the conditional intensity lambda(u,X) of the fitted model is evaluated at each required spatial location u, with respect to the data point pattern X.

If type="se":

the estimated (asymptotic) standard error of the fitted spatial trend is evaluated at each required spatial location u. This is available only for Poisson point process models.

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.

The argument locations may be a data frame or list specifying arbitrary locations, or 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 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 ith row of covariates is assumed to contain covariate data for the ith 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 locations is given and is a data frame: a vector of predicted values for the spatial locations (and marks, if required) given in locations.

If ngrid is given, or if locations is given and is a binary image mask: If 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.

Author(s)

Adrian Baddeley Adrian.Baddeley@csiro.au http://www.maths.uwa.edu.au/~adrian/ and Rolf Turner r.turner@auckland.ac.nz

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)
  
  m <- ppm(cells, ~ polynom(x,y,2), Strauss(0.05))
  trend <- predict(m, type="trend")
  ## Not run: 
  image(trend)
  points(cells)
  
## End(Not run)
  cif <- predict(m, type="cif")
  ## Not run: 
  persp(cif)
  
## End(Not run)
  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, japanesepines$window)
  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")

  

[Package spatstat version 1.25-3 Index]