spatstat.core (version 2.1-2)

valid.ppm: Check Whether Point Process Model is Valid


Determines whether a fitted point process model satisfies the integrability conditions for existence of the point process.


# S3 method for ppm
valid(object, warn=TRUE, …)



Fitted point process model (object of class "ppm").


Logical value indicating whether to issue a warning if the validity of the model cannot be checked (due to unavailability of the required code).



A logical value, or NA.


This is a method for the generic function valid for Poisson and Gibbs point process models (class "ppm").

The model-fitting function ppm fits Gibbs point process models to point pattern data. By default, ppm does not check whether the fitted model actually exists as a point process. This checking is done by valid.ppm.

Unlike a regression model, which is well-defined for any 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 valid.ppm checks whether the fitted model object specifies a well-defined point process. It returns TRUE if the model is well-defined.

Another possible reason for invalid models is that the data may not be adequate for estimation of the model parameters. In this case, some of the fitted coefficients could be NA or infinite values. If this happens then valid.ppm returns FALSE.

Use the function project.ppm to force the fitted model to be valid.

See Also

ppm, project.ppm


   fit1 <- ppm(cells, ~1, Strauss(0.1))
   fit2 <- ppm(redwood, ~1, Strauss(0.1))
# }