Last chance! 50% off unlimited learning
Sale ends in
ppm
which finds optimal values of the irregular trend parameters in a
point process model.ippm(Q, ...,
iScore=NULL,
start=list(),
covfunargs=start,
nlm.args=list(),
silent=FALSE,
warn.unused=TRUE)
ppm
to fit the point process model.ppm
.
A named list containing values for all irregular parameters
required by the covariates in the model.
Must include all the parameters named in start
.nlm
to control the optimization algorithm.start
are not used in the model."ppm"
).ppm
.
The extension allows the trend of the model to include irregular parameters,
which will be maximised by a Newton-type iterative
method, using nlm
. For the sake of explanation,
consider a Poisson point process with intensity function
$\lambda(u)$ at location $u$. Assume that
ippm
, we specify the
intensity using the trend
formula
in the same way as usual for ppm
.
The trend formula is a representation of the log intensity.
In the above example the log intensity is
~Z + offset(log(f))
. Note that the irregular part of the model
is an offset term, which means that it is included in the log trend
as it is, without being multiplied by another regular parameter.
The optimisation runs faster if we specify the derivative
of $\log f(u,\gamma)$ with
respect to $\gamma$. We call this the
irregular score. To specify this, the user must write an Rfunction
that computes the irregular score for any value of
$\gamma$ at any location (x,y)
.
Thus, to code such a problem,
trend
should define the
log intensity, with the irregular part as an offset;start
should be a list
containing initial values of each of the irregular parameters;iScore
, if provided,
must be a list (with one entry
for each entry ofstart
) of functions
with argumentsx,y,...
, that evaluate the partial derivatives
of$\log f(u,\gamma)$with
respect to each irregular parameter. Arguments ...
passed to ppm
may
also include interaction
. In this case the model is not
a Poisson point process but a more general Gibbs point process;
the trend formula trend
determines the first-order trend
of the model (the first order component of the conditional intensity),
not the intensity.
ppm
,
profilepl
nd <- 32
<testonly>nd <- 10</testonly>
gamma0 <- 3
delta0 <- 5
POW <- 3
# Terms in intensity
Z <- function(x,y) { -2*y }
f <- function(x,y,gamma,delta) { 1 + exp(gamma - delta * x^POW) }
# True intensity
lamb <- function(x,y,gamma,delta) { 200 * exp(Z(x,y)) * f(x,y,gamma,delta) }
# Simulate realisation
lmax <- max(lamb(0,0,gamma0,delta0), lamb(1,1,gamma0,delta0))
set.seed(42)
X <- rpoispp(lamb, lmax=lmax, win=owin(), gamma=gamma0, delta=delta0)
# Partial derivatives of log f
DlogfDgamma <- function(x,y, gamma, delta) {
topbit <- exp(gamma - delta * x^POW)
topbit/(1 + topbit)
}
DlogfDdelta <- function(x,y, gamma, delta) {
topbit <- exp(gamma - delta * x^POW)
- (x^POW) * topbit/(1 + topbit)
}
# irregular score
Dlogf <- list(gamma=DlogfDgamma, delta=DlogfDdelta)
# fit model
ippm(X, ~Z + offset(log(f)),
covariates=list(Z=Z, f=f),
iScore=Dlogf,
start=list(gamma=1, delta=1),
nd=nd)
Run the code above in your browser using DataLab