Force Point Process Model to be Valid

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

models, spatial
project.ppm(object, ..., fatal=FALSE, trace=FALSE)
Fitted point process model (object of class "ppm").
Logical value indicating whether to generate an error if the model cannot be projected to a valid model.
Logical value indicating whether to print a trace of the decision process.

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 \le 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 project.ppm modifies the model object so that the model is valid.

project.ppm 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 project.ppm is the true maximum pseudolikelihood fit to the data.

For large datasets or complex models, the algorithm used in 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( 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.


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

See Also

ppm, valid.ppm, spatstat.options

  • project.ppm
fit <- ppm(redwood, ~1, Strauss(0.1))
   fit2 <- project.ppm(fit)
Documentation reproduced from package spatstat, version 1.27-0, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.