Generate Multitype Poisson Point Pattern
Generate a random point pattern, a realisation of the (homogeneous or inhomogeneous) multitype Poisson process.
rmpoispp(lambda, lmax=NULL, win, types, ..., nsim=1, drop=TRUE, warnwin=!missing(win))
lambda |
Intensity of the multitype Poisson process.
Either a single positive number, a vector, a |
lmax |
An upper bound for the value of |
win |
Window in which to simulate the pattern.
An object of class |
types |
All the possible types for the multitype pattern. |
... |
Arguments passed to |
nsim |
Number of simulated realisations to be generated. |
drop |
Logical. If |
warnwin |
Logical value specifying whether to issue a warning
when |
This function generates a realisation of the marked Poisson
point process with intensity lambda
.
Note that the intensity function lambda(x,y,m) is the average number of points of type m per unit area near the location (x,y). Thus a marked point process with a constant intensity of 10 and three possible types will have an average of 30 points per unit area, with 10 points of each type on average.
The intensity function may be specified in any of the following ways.
If lambda
is a single number,
then this algorithm generates a realisation
of the uniform marked Poisson process inside the window win
with
intensity lambda
for each type. The total intensity of
points of all types is lambda * length(types)
.
The argument types
must be given
and determines the possible types in the multitype pattern.
If lambda
is a numeric vector,
then this algorithm generates a realisation
of the stationary marked Poisson process inside the window
win
with intensity lambda[i]
for points of type
types[i]
. The total intensity of points of all types
is sum(lambda)
.
The argument types
defaults to
names(lambda)
, or if that is null, 1:length(lambda)
.
If lambda
is a function, the process has intensity
lambda(x,y,m,...)
at spatial location (x,y)
for points of type m
.
The function lambda
must work correctly with vectors x
,
y
and m
, returning a vector of function values.
(Note that m
will be a factor
with levels equal to types
.)
The value lmax
, if present, must be an upper bound on the
values of lambda(x,y,m,...)
for all locations (x, y)
inside the window win
and all types m
.
The argument types
must be given.
If lambda
is a list of functions,
the process has intensity lambda[[i]](x,y,...)
at spatial
location (x,y)
for points of type types[i]
.
The function lambda[[i]]
must work correctly with vectors
x
and y
, returning a vector of function values.
The value lmax
, if given, must be an upper bound on the
values of lambda(x,y,...)
for all locations (x, y)
inside the window win
.
The argument types
defaults to
names(lambda)
, or if that is null, 1:length(lambda)
.
If lambda
is a pixel image object of class "im"
(see im.object
), the intensity at a location
(x,y)
for points of any type is equal to the pixel value
of lambda
for the pixel nearest to (x,y)
.
The argument win
is ignored;
the window of the pixel image is used instead.
The argument types
must be given.
If lambda
is a list of pixel images,
then the image lambda[[i]]
determines the intensity
of points of type types[i]
.
The argument win
is ignored;
the window of the pixel image is used instead.
The argument types
defaults to
names(lambda)
, or if that is null, 1:length(lambda)
.
If lmax
is missing, an approximate upper bound will be calculated.
To generate an inhomogeneous Poisson process
the algorithm uses “thinning”: it first generates a uniform
Poisson process of intensity lmax
for points of each type m
,
then randomly deletes or retains each point independently,
with retention probability
p(x,y,m) = lambda(x,y)/lmax.
A point pattern (an object of class "ppp"
) if nsim=1
,
or a list of point patterns if nsim > 1
.
Each point pattern is multitype (it carries a vector of marks
which is a factor).
Adrian Baddeley Adrian.Baddeley@curtin.edu.au
and Rolf Turner r.turner@auckland.ac.nz
rpoispp
for unmarked Poisson point process;
rmpoint
for a fixed number of random marked points;
ppp.object
,
owin.object
.
# uniform bivariate Poisson process with total intensity 100 in unit square pp <- rmpoispp(50, types=c("a","b")) # stationary bivariate Poisson process with intensity A = 30, B = 70 pp <- rmpoispp(c(30,70), types=c("A","B")) pp <- rmpoispp(c(30,70)) # works in any window pp <- rmpoispp(c(30,70), win=letterR, types=c("A","B")) # inhomogeneous lambda(x,y,m) # note argument 'm' is a factor lam <- function(x,y,m) { 50 * (x^2 + y^3) * ifelse(m=="A", 2, 1)} pp <- rmpoispp(lam, win=letterR, types=c("A","B")) # extra arguments lam <- function(x,y,m,scal) { scal * (x^2 + y^3) * ifelse(m=="A", 2, 1)} pp <- rmpoispp(lam, win=letterR, types=c("A","B"), scal=50) # list of functions lambda[[i]](x,y) lams <- list(function(x,y){50 * x^2}, function(x,y){20 * abs(y)}) pp <- rmpoispp(lams, win=letterR, types=c("A","B")) pp <- rmpoispp(lams, win=letterR) # functions with extra arguments lams <- list(function(x,y,scal){5 * scal * x^2}, function(x,y, scal){2 * scal * abs(y)}) pp <- rmpoispp(lams, win=letterR, types=c("A","B"), scal=10) pp <- rmpoispp(lams, win=letterR, scal=10) # florid example lams <- list(function(x,y){ 100*exp((6*x + 5*y - 18*x^2 + 12*x*y - 9*y^2)/6) } # log quadratic trend , function(x,y){ 100*exp(-0.6*x+0.5*y) } # log linear trend ) X <- rmpoispp(lams, win=unit.square(), types=c("on", "off")) # pixel image Z <- as.im(function(x,y){30 * (x^2 + y^3)}, letterR) pp <- rmpoispp(Z, types=c("A","B")) # list of pixel images ZZ <- list( as.im(function(x,y){20 * (x^2 + y^3)}, letterR), as.im(function(x,y){40 * (x^3 + y^2)}, letterR)) pp <- rmpoispp(ZZ, types=c("A","B")) pp <- rmpoispp(ZZ) # randomising an existing point pattern rmpoispp(intensity(amacrine), win=Window(amacrine))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.