R: Force Point Process Model to be Valid

emend.ppm {spatstat} | R Documentation

## Force Point Process Model to be Valid

### Description

Ensures that a fitted point process model satisfies the integrability conditions for existence of the point process.

### Usage

    project.ppm(object, ..., fatal=FALSE, trace=FALSE)

    ## S3 method for class 'ppm'
    emend(object, ..., fatal=FALSE, trace=FALSE)

### Arguments

`object` | Fitted point process model (object of class `"ppm"`).
`...` | Ignored.
`fatal` | Logical value indicating whether to generate an error if the model cannot be projected to a valid model.
`trace` | Logical value indicating whether to print a trace of the decision process.

### Details

The functions `emend.ppm` and `project.ppm` are identical: `emend.ppm` is a method for the generic `emend`, while `project.ppm` is an older name for the same function.

The purpose of the function is to ensure that a fitted model is valid.

The model-fitting function `ppm` fits Gibbs point process models to point pattern data. By default, the fitted model returned by `ppm` may not actually exist as a point process.

First, some of the fitted coefficients of the model may be `NA` or infinite values. This usually occurs when the data are insufficient to estimate all the parameters. The model is said to be unidentifiable or confounded.

Second, unlike a regression model, which is well-defined for any finite values of the fitted regression coefficients, a Gibbs point process model is only well-defined if the fitted interaction parameters satisfy some constraints. A famous example is the Strauss process (see `Strauss`) which exists only when the interaction parameter gamma is less than or equal to 1. For values gamma > 1, the probability density is not integrable and the process does not exist (and cannot be simulated).

By default, `ppm` does not enforce the constraint that a fitted Strauss process (for example) must satisfy gamma <= 1. This is because a fitted parameter value of gamma > 1 could be useful information for data analysis, as it indicates that the Strauss model is not appropriate, and suggests a clustered model should be fitted.

The function `emend.ppm` or `project.ppm` modifies the model `object` so that the model is valid. It identifies the terms in the model `object` that are associated with illegal parameter values (i.e. parameter values which are either `NA`, infinite, or outside their permitted range). It considers all possible sub-models of `object` obtained by deleting one or more of these terms. It identifies which of these submodels are valid, and chooses the valid submodel with the largest pseudolikelihood. The result of `emend.ppm` or `project.ppm` is the true maximum pseudolikelihood fit to the data.

For large datasets or complex models, the algorithm used in `emend.ppm` or `project.ppm` may be time-consuming, because it takes time to compute all the sub-models. A faster, approximate algorithm can be applied by setting `spatstat.options(project.fast=TRUE)`. This produces a valid submodel, which may not be the maximum pseudolikelihood submodel.

Use the function `valid.ppm` to check whether a fitted model object specifies a well-defined point process.

Use the expression `all(is.finite(coef(object)))` to determine whether all parameters are identifiable.

### Value

Another point process model (object of class `"ppm"`).

### Author(s)

Adrian Baddeley Adrian.Baddeley@curtin.edu.au

and Rolf Turner r.turner@auckland.ac.nz

### See Also

`ppm`, `valid.ppm`, `emend`, `spatstat.options`

### Examples

       fit <- ppm(redwood, ~1, Strauss(0.1))
       coef(fit)
       fit2 <- emend(fit)
       coef(fit2)

[Package spatstat version 1.54-0 Index]