rmpoispp
Generate Multitype Poisson Point Pattern
Generate a random point pattern using the (homogeneous or inhomogeneous) multitype Poisson process.
- Keywords
- spatial
Usage
rmpoispp(lambda, lmax=NULL, win, types, ...)
Arguments
- lambda
- Intensity of the multitype Poisson process.
Either a single positive number, a vector, a
function(x,y,m, ...)
, a pixel image, a list of functionsfunction(x,y, ...)
, or a list of pixel images. - lmax
- An upper bound for the value of
lambda
. May be omitted - win
- Window in which to simulate the pattern.
An object of class
"owin"
or something acceptable toas.owin
. Ignored iflambda
is a pixel image or list of images. - types
- All the possible types for the multitype pattern.
- ...
- Arguments passed to
lambda
if it is a function.
Details
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.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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,m)/\mbox{lmax}$.
Value
- The simulated multitype point pattern (an object of class
"ppp"
with a componentmarks
which is a factor).
See Also
Examples
# 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
data(letterR)
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)