# profilepl

##### Profile Maximum Pseudolikelihood or AIC

Fits point process models by maximising the profile likelihood, profile pseudolikelihood, profile composite likelihood or AIC.

##### Usage

`profilepl(s, f, ..., aic=FALSE, rbord=NULL, verbose = TRUE)`

##### Arguments

- s
- Data frame containing values of the irregular parameters over which the criterion will be computed.
- f
- Function (such as
`Strauss`

) that generates an interpoint interaction object, given values of the irregular parameters. - ...
- Data passed to
`ppm`

to fit the model. - aic
- Logical value indicating whether to find the parameter values
which minimise the AIC (
`aic=TRUE`

) or maximise the profile likelihood (`aic=FALSE`

, the default). - rbord
- Radius for border correction (same for all models). If omitted, this will be computed from the interactions.
- verbose
- Logical flag indicating whether to print progress reports.

##### Details

The model-fitting function `ppm`

fits point process
models to point pattern data. However,
only the `ppm`

. The model may also depend on `ppm`

.

This function `profilepl`

is a wrapper which finds the values of the
irregular parameters that give the best fit.
If `aic=FALSE`

(the default),
the best fit is the model which maximises the
likelihood (if the models are Poisson processes) or maximises
the pseudolikelihood or logistic likelihood.
If `aic=TRUE`

then the best fit is the model which
minimises the Akaike Information Criterion `AIC.ppm`

.
The argument `s`

must be a data frame whose columns contain
values of the irregular parameters over which the maximisation is
to be performed.

An irregular parameter may affect either the interpoint interaction
or the spatial trend.
[object Object],[object Object]
The argument `f`

determines the interaction
for each model to be fitted. It would typically be one of the functions
`Poisson`

,
`AreaInter`

,
`BadGey`

,
`DiggleGatesStibbard`

,
`DiggleGratton`

,
`Fiksel`

,
`Geyer`

,
`Hardcore`

,
`LennardJones`

,
`OrdThresh`

,
`Softcore`

,
`Strauss`

or
`StraussHard`

.
Alternatively it could be a function written by the user.

Columns of `s`

which match the names of arguments of `f`

will be interpreted as interaction parameters. Other columns will be
interpreted as trend parameters.

The data frame `s`

must provide values for each argument of
`f`

, except for the optional arguments, which are those arguments of
`f`

that have the default value `NA`

.

To find the best fit,
each row of `s`

will be taken in turn. Interaction parameters in this
row will be passed to `f`

, resulting in an interaction object.
Then `ppm`

will be applied to the data `...`

using this interaction. Any trend parameters will be passed to
`ppm`

through the argument `covfunargs`

.
This results in a fitted point process model.
The value of the log pseudolikelihood or AIC from this model is stored.
After all rows of `s`

have been processed in this way, the
row giving the maximum value of log pseudolikelihood will be found.

The object returned by `profilepl`

contains the profile
pseudolikelihood (or profile AIC) function,
the best fitting model, and other data.
It can be plotted (yielding a
plot of the log pseudolikelihood or AIC values against the irregular
parameters) or printed (yielding information about the best fitting
values of the irregular parameters).
In general, `f`

may be any function that will return
an interaction object (object of class `"interact"`

)
that can be used in a call to `ppm`

. Each argument of
`f`

must be a single value.

##### Value

##### Examples

```
# one irregular parameter
s <- data.frame(r=seq(0.05,0.15, by=0.01))
<testonly>s <- data.frame(r=c(0.05,0.1,0.15))</testonly>
ps <- profilepl(s, Strauss, cells)
ps
if(interactive()) plot(ps)
# two irregular parameters
s <- expand.grid(r=seq(0.05,0.15, by=0.01),sat=1:3)
<testonly>s <- expand.grid(r=c(0.07,0.12),sat=1:2)</testonly>
pg <- profilepl(s, Geyer, cells)
pg
if(interactive()) {
plot(pg)
as.ppm(pg)
}
# multitype pattern with a common interaction radius
s <- data.frame(R=seq(0.03,0.05,by=0.01))
MS <- function(R) { MultiStrauss(radii=diag(c(R,R))) }
pm <- profilepl(s, MS, amacrine, ~marks)
```

*Documentation reproduced from package spatstat, version 1.41-1, License: GPL (>= 2)*