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, …)
```

object

Fitted point process model (object of class `"ppm"`

).

warn

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

…

Ignored.

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.

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