rThomas: Simulate Thomas Process



Generate a random point pattern, a realisation of the Thomas cluster process.


  rThomas(kappa, scale, mu, win = owin(c(0,1),c(0,1)),
          nsim=1, drop=TRUE, 
          saveLambda=FALSE, expand = 4*scale, ...,
          poisthresh=1e-6, saveparents=TRUE)





Standard deviation of random displacement (along each coordinate axis) of a point from its cluster centre.






Number of simulated realisations to be generated.




Logical. If TRUE then the random intensity corresponding to the simulated parent points will also be calculated and saved, and returns as an attribute of the point pattern.


Numeric. Size of window expansion for generation of parent points. Has a sensible default.


Passed to clusterfield to control the image resolution when saveLambda=TRUE and to clusterradius when expand is missing.


Numerical threshold below which the model will be treated as a Poisson process. See Details.


Logical value indicating whether to save the locations of the parent points as an attribute.


This algorithm generates a realisation of the (‘modified’) Thomas process, a special case of the Neyman-Scott process, inside the window win.

In the simplest case, where kappa and mu are single numbers, the algorithm generates a uniform Poisson point process of “parent” points with intensity kappa. Then each parent point is replaced by a random cluster of “offspring” points, the number of points per cluster being Poisson (mu) distributed, and their positions being isotropic Gaussian displacements from the cluster parent location. The resulting point pattern is a realisation of the classical “stationary Thomas process” generated inside the window win. This point process has intensity kappa * mu.

The algorithm can also generate spatially inhomogeneous versions of the Thomas process:

Note that if kappa is a pixel image, its domain must be larger than the window win. This is because an offspring point inside win could have its parent point lying outside win. In order to allow this, the simulation algorithm first expands the original window win by a distance expand and generates the Poisson process of parent points on this larger window. If kappa is a pixel image, its domain must contain this larger window.

The intensity of the Thomas process is kappa * mu if either kappa or mu is a single number. In the general case the intensity is an integral involving kappa, mu and f.

The Thomas process with homogeneous parents (i.e. where kappa is a single number) can be fitted to data using kppm. Currently it is not possible to fit the Thomas model with inhomogeneous parents.

If the pair correlation function of the model is very close to that of a Poisson process, deviating by less than poisthresh, then the model is approximately a Poisson process, and will be simulated as a Poisson process with intensity kappa * mu, using rpoispp. This avoids computations that would otherwise require huge amounts of memory.


A point pattern (an object of class "ppp") if nsim=1, or a list of point patterns if nsim > 1.

Additionally, some intermediate results of the simulation are returned as attributes of this point pattern (see rNeymanScott). Furthermore, the simulated intensity function is returned as an attribute "Lambda", if saveLambda=TRUE.



and \rolf


Diggle, P. J., Besag, J. and Gleaves, J. T. (1976) Statistical analysis of spatial point patterns by means of distance methods. Biometrics 32 659–667.

Thomas, M. (1949) A generalisation of Poisson's binomial limit for use in ecology. Biometrika 36, 18–25.

Waagepetersen, R. (2007) An estimating function approach to inference for inhomogeneous Neyman-Scott processes. Biometrics 63, 252–258.

See Also

rpoispp, rMatClust, rCauchy, rVarGamma, rNeymanScott, rGaussPoisson, kppm, clusterfit.


  X <- rThomas(10, 0.2, 5)
  Z <- as.im(function(x,y){ 5 * exp(2 * x - 1) }, owin())
  Y <- rThomas(10, 0.2, Z)

Example output

Loading required package: nlme
Loading required package: rpart

spatstat 1.52-1       (nickname: 'Apophenia') 
For an introduction to spatstat, type 'beginner' 

Note: spatstat version 1.52-1 is out of date by more than 7 months; we recommend upgrading to the latest version.

spatstat documentation built on July 2, 2020, 2:01 a.m.