rMatClust(kappa, scale, mu, win = owin(c(0,1),c(0,1)), nsim=1, drop=TRUE, saveLambda=FALSE, expand = scale, ..., poisthresh=1e-6, saveparents=TRUE)
"owin"
or something acceptable to as.owin
.
nsim=1
and drop=TRUE
(the default), the
result will be a point pattern, rather than a list
containing a point pattern.
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.
scale
which is the cluster
radius.
clusterfield
to control the image
resolution when saveLambda=TRUE
.
"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
.
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 placed and uniformly inside
a disc of radius scale
centred on the parent point.
The resulting point pattern
is a realisation of the classical
stationary Matern cluster process
generated inside the window win
.
This point process has intensity kappa * mu
.
The algorithm can also generate spatially inhomogeneous versions of the Matern cluster process:
kappa
is a function(x,y)
or a pixel image (object of class "im"
), then it is taken
as specifying the intensity function of an inhomogeneous Poisson
process that generates the parent points.
mu
is a function(x,y)
or a pixel image (object of class "im"
), then it is
interpreted as the reference density for offspring points,
in the sense of Waagepetersen (2007).
For a given parent point, the offspring constitute a Poisson process
with intensity function equal to
mu/(pi * scale^2)
inside the disc of radius scale
centred on the parent
point, and zero intensity outside this disc.
Equivalently we first generate,
for each parent point, a Poisson ($M$) random number of
offspring (where $M$ is the maximum value of mu
)
placed independently and uniformly in the disc of radius scale
centred on the parent location, and then randomly thin the
offspring points, with retention probability mu/M
.
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 Matern cluster
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 scale
.
The Matern cluster process model
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
Matern cluster process 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.
Matern, B. (1986) Spatial Variation. Lecture Notes in Statistics 36, Springer-Verlag, New York.
Waagepetersen, R. (2007) An estimating function approach to inference for inhomogeneous Neyman-Scott processes. Biometrics 63, 252--258.
rpoispp
,
rThomas
,
rCauchy
,
rVarGamma
,
rNeymanScott
,
rGaussPoisson
,
kppm
,
clusterfit
.
# homogeneous
X <- rMatClust(10, 0.05, 4)
# inhomogeneous
ff <- function(x,y){ 4 * exp(2 * abs(x) - 1) }
Z <- as.im(ff, owin())
Y <- rMatClust(10, 0.05, Z)
YY <- rMatClust(ff, 0.05, 3)
Run the code above in your browser using DataLab