rmpoispp(lambda, lmax=NULL, win, types, ...)
function(x,y,m, ...)
,
a pixel image, a list of functions function(x,y, ...)
,
or a list of pixel images.lambda
.
May be omitted"owin"
or something acceptable to as.owin
.
Ignored if lambda
is a pixel image or list of images.lambda
if it is a function."ppp"
with a component marks
which is a factor).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}$.
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
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)
Run the code above in your browser using DataLab