Learn R Programming

spatstat (version 1.48-0)

profilepl: Fit Models by Profile Maximum Pseudolikelihood or AIC

Description

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.

Value

An object of class "profilepl". There are methods for plot, print, summary, simulate, as.ppm and parameters for objects of this class.The components of the object includeTo extract the best fitting model you can also use as.ppm.

Details

The model-fitting function ppm fits point process models to point pattern data. However, only the ‘regular’ parameters of the model can be fitted by ppm. The model may also depend on ‘irregular’ parameters that must be fixed in any call to 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.

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.

Examples

Run this code
    # one irregular parameter
    rr <- data.frame(r=seq(0.05,0.15, by=0.01))
    
    ps <- profilepl(rr, Strauss, cells)
    ps
    if(interactive()) plot(ps)

    # two irregular parameters
    rs <- expand.grid(r=seq(0.05,0.15, by=0.01),sat=1:3)
    
    pg <- profilepl(rs, Geyer, cells)
    pg
    if(interactive()) {
      plot(pg)
      as.ppm(pg)
    }

    # multitype pattern with a common interaction radius
    ## Not run: 
#      RR <- data.frame(R=seq(0.03,0.05,by=0.01))
#      MS <- function(R) { MultiStrauss(radii=diag(c(R,R))) }
#      pm <- profilepl(RR, MS, amacrine ~marks)
#     ## End(Not run)
    ## more information 
    summary(pg)

Run the code above in your browser using DataLab