Learn R Programming

spatstat.core (version 2.3-1)

rStrauss: Perfect Simulation of the Strauss Process

Description

Generate a random pattern of points, a simulated realisation of the Strauss process, using a perfect simulation algorithm.

Usage

rStrauss(beta, gamma = 1, R = 0, W = owin(), expand=TRUE, nsim=1, drop=TRUE)

Arguments

beta

intensity parameter (a positive number).

gamma

interaction parameter (a number between 0 and 1, inclusive).

R

interaction radius (a non-negative number).

W

window (object of class "owin") in which to generate the random pattern.

expand

Logical. If FALSE, simulation is performed in the window W, which must be rectangular. If TRUE (the default), simulation is performed on a larger window, and the result is clipped to the original window W. Alternatively expand can be an object of class "rmhexpand" (see rmhexpand) determining the expansion method.

nsim

Number of simulated realisations to be generated.

drop

Logical. If nsim=1 and drop=TRUE (the default), the result will be a point pattern, rather than a list containing a point pattern.

Value

If nsim = 1, a point pattern (object of class "ppp"). If nsim > 1, a list of point patterns.

Details

This function generates a realisation of the Strauss point process in the window W using a ‘perfect simulation’ algorithm.

The Strauss process (Strauss, 1975; Kelly and Ripley, 1976) is a model for spatial inhibition, ranging from a strong `hard core' inhibition to a completely random pattern according to the value of gamma.

The Strauss process with interaction radius \(R\) and parameters \(\beta\) and \(\gamma\) is the pairwise interaction point process with probability density $$ f(x_1,\ldots,x_n) = \alpha \beta^{n(x)} \gamma^{s(x)} $$ where \(x_1,\ldots,x_n\) represent the points of the pattern, \(n(x)\) is the number of points in the pattern, \(s(x)\) is the number of distinct unordered pairs of points that are closer than \(R\) units apart, and \(\alpha\) is the normalising constant. Intuitively, each point of the pattern contributes a factor \(\beta\) to the probability density, and each pair of points closer than \(r\) units apart contributes a factor \(\gamma\) to the density.

The interaction parameter \(\gamma\) must be less than or equal to \(1\) in order that the process be well-defined (Kelly and Ripley, 1976). This model describes an ``ordered'' or ``inhibitive'' pattern. If \(\gamma=1\) it reduces to a Poisson process (complete spatial randomness) with intensity \(\beta\). If \(\gamma=0\) it is called a ``hard core process'' with hard core radius \(R/2\), since no pair of points is permitted to lie closer than \(R\) units apart.

The simulation algorithm used to generate the point pattern is ‘dominated coupling from the past’ as implemented by Berthelsen and Moller (2002, 2003). This is a ‘perfect simulation’ or ‘exact simulation’ algorithm, so called because the output of the algorithm is guaranteed to have the correct probability distribution exactly (unlike the Metropolis-Hastings algorithm used in rmh, whose output is only approximately correct).

There is a tiny chance that the algorithm will run out of space before it has terminated. If this occurs, an error message will be generated.

References

Berthelsen, K.K. and Moller, J. (2002) A primer on perfect simulation for spatial point processes. Bulletin of the Brazilian Mathematical Society 33, 351-367.

Berthelsen, K.K. and Moller, J. (2003) Likelihood and non-parametric Bayesian MCMC inference for spatial point processes based on perfect simulation and path sampling. Scandinavian Journal of Statistics 30, 549-564.

Kelly, F.P. and Ripley, B.D. (1976) On Strauss's model for clustering. Biometrika 63, 357--360.

Moller, J. and Waagepetersen, R. (2003). Statistical Inference and Simulation for Spatial Point Processes. Chapman and Hall/CRC.

Strauss, D.J. (1975) A model for clustering. Biometrika 62, 467--475.

See Also

rmh, Strauss, rHardcore, rStraussHard, rDiggleGratton, rDGS, rPenttinen.

Examples

Run this code
# NOT RUN {
  X <- rStrauss(0.05,0.2,1.5,square(50))
# }

Run the code above in your browser using DataLab