Description Usage Arguments Details Value Author(s) See Also Examples
This function generates a point pattern from a Poisson point process with intensity surface modeled by a mixture of normal components.
For examples see
http://faculty.missouri.edu/~micheasa/sppmix/sppmix_all_examples.html#rsppmix
1 2 3 4 |
intsurf |
Object of class |
truncate |
Logical variable indicating that the points should be within the window of observation. Default is TRUE. |
marks |
An optional vector defining the mark space. A mark value is randomly selected and attached to the generated locations. Default is NULL, so that we create an unmarked point pattern. |
... |
Further parameters passed to |
object |
A point pattern object of class |
If an intensity surface is passed to intsurf
, the function
generates a pattern from the Poisson directly.
We can also pass a normal mixture of class normmix
and specify the observation window win
and the parameter
lambda
, which is interpreted as the average number of points over the
window, as additional parameters.
Even if we pass an intensity surface to rsppmix()
,
we can still overwrite the lambda
and win
by
passing them as additional parameters. See the examples for
specific calls to the function.
For a given window W
, the number
of points N(W)
in W
follows
a Poisson distribution, with intensity measure
Lambda(W)
. The intensity surface
of the Poisson process is the Radon-Nikodym
derivative of the measure Lambda
with
respect to the Lebesgue measure.
The intensity surface is modeled using a multiple of a mixture of normal distributions, i.e., the intensity is given by
f(x|lambda,thetas)=lambda * sum(p_i*f_i(x|mu_i,sigma_i))
,
where the parameters thetas
consist
of the mixture probabilities ps
,
normal component means mus
, and
covariances sigmas
, with sum(p_i)=1
.
When the masses of all the components f_i
are within the window, then
the mixture sum(p_i*f_i(x|mu_i,sigma_i))
integrates to 1 over W
, so that the
average number of points is given by E(N(W))=lambda
.
If truncate = TRUE
, we generate points from the
unbounded Poisson with the given mixture intensity function
until there are exactly n
points
in the window (rejection method). If truncate = FALSE
,
the function will not check if the points are inside the window.
A point pattern of class c("sppmix", "ppp")
. The object has
all the traits of the ppp
object and
in addition, a comp
member indicating from which
mixture component the event comes from. The object members include:
x : a vector of x coordinates of the events,
y : a vector of y coordinates of the events,
n : the number of events,
window : the window of observation (an object of class owin
),
marks : optional vector of marks,
comp : vector of true allocation variables.
Jiaxun Chen, Sakis Micheas, Yuchen Wang
normmix
,
rmixsurf
,
square
,
rsppmix
,
plot.sppmix
,
plotmix_2d
,
plot2dPP
,
plot.normmix
,
rnormmix
,
plotmix_3d
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | # create the true mixture
truemix_surf <- normmix(ps=c(.2, .6,.2), mus=list(c(0.3, 0.3), c(0.7, 0.7), c(0.5, 0.5)),
sigmas = list(.01*diag(2), .03*diag(2), .02*diag(2)), lambda=100, win=spatstat::square(1))
plot(truemix_surf)
# generate the point pattern
genPPP1=rsppmix(truemix_surf)
summary(genPPP1)
plot2dPP(genPPP1)
plot2dPP(genPPP1,truemix_surf$mus)
plotmix_2d(truemix_surf,genPPP1)
# overwrite lambda or win
genPPP2=rsppmix(truemix_surf, lambda = 200)
plotmix_2d(truemix_surf,genPPP2)
genPPP3=rsppmix(truemix_surf, win = spatstat::square(2))
truemix_surf$window
plotmix_2d(truemix_surf,genPPP3)#will not see the points outside the surface window
plotmix_2d(truemix_surf,genPPP3, win = spatstat::square(2)) #have to pass the new window
#to see the points
#use normmix with additional parameters
truemix<- rnormmix(m = 3, sig0 = .1, df = 5, xlim= c(0, 3), ylim = c(0, 3))
plot(truemix)
normdens=dnormmix(truemix, xlim= c(0, 3), ylim = c(0, 3))
plotmix_3d(normdens)
genPPP4=rsppmix(truemix, lambda = 100, win = spatstat::square(3))
# turn off truncation
genPPP5=rsppmix(intsurf = truemix_surf, truncate = FALSE)
plotmix_2d(truemix_surf,genPPP5)
plotmix_2d(truemix_surf,genPPP5, win = spatstat::square(2))
plotmix_2d(truemix_surf,genPPP5,contour=TRUE)
intsurf6=rmixsurf(m=5,lambda=rgamma(1,shape=10,scale=5),
df=5,sig0=1,rand_m=TRUE,mu0 = c(.5,.5),Sigma0 = 0.001*diag(2))
genPPP6=rsppmix(intsurf6,marks=1:3,truncate = FALSE)
plotmix_2d(intsurf6,genPPP6)
plot(genPPP6,showmarks=TRUE)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.