Learn R Programming

palm (version 1.1.5)

fit.ns: Fitting a Neyman-Scott point process model

Description

Estimates parameters for a Neyman-Scott point process by maximising the Palm likelihood. This approach was first proposed by Tanaka et al. (2008) for two-dimensional Thomas processes. Further generalisations were made by Stevenson, Borchers, and Fewster (2019) and Jones-Todd et al. (2019).

Usage

fit.ns(
  points,
  lims,
  R,
  disp = "gaussian",
  child.dist = "pois",
  child.info = NULL,
  sibling.list = NULL,
  edge.correction = "pbc",
  start = NULL,
  bounds = NULL,
  use.bobyqa = FALSE,
  trace = FALSE
)

Value

An R6 reference class object.

Arguments

points

A matrix or list of matrices containing locations of observed points, where each row corresponds to a point and each column corresponds to a dimension. If a list, then the patterns are assumed to be independent and a single process is fitted to all.

lims

A matrix or list of matrices with two columns, corresponding to the upper and lower limits of each dimension, respectively. If a list, then each matrix provides the limits for the corresponding pattern in points.

R

Truncation distance for the difference process.

disp

A character string indicating the distribution of children around their parents. Use "gaussian" for multivariate normal dispersion with standard deviation sigma, or "uniform" for uniform dispersion within distance tau of the parent.

child.dist

The distribution of the number of children generated by a randomly selected parent. For a Poisson distribution, use "pois"; for a binomial distribution, use "binomx", where "x" is replaced by the fixed value of the number of independent trials (e.g., "binom5" for a Binomial(5, p) distribution, and "binom50" for a Binomial(50, p) distribution); and "twocamera" for a child distribution appropriate for a two-camera aerial survey.

child.info

A list of further information that is required about the distribution for the number of children generated by parents. See `Details'.

sibling.list

An optional list that comprises (i) a component named sibling.mat, containing a matrix such that the jth entry in the ith row is TRUE if the ith and jth points are known siblings, FALSE if they are known nonsiblings, and NA if their sibling status is not known; (ii) alpha, providing the probability that a sibling is successfully identified as a sibling; and (iii) beta, providing the probability that a nonsibling is successfully identified as a nonsibling. For multi-pattern fitting, this object must be a list of such lists, one for each pattern.

edge.correction

The method used for the correction of edge effects. Either "pbc" for periodic boundary conditions, or "buffer" for a buffer-zone correction.

start

A named vector of starting values for the model parameters.

bounds

A list with named components. Each component should be a vector of length two, giving the upper and lower bounds for the named parameter.

use.bobyqa

Logical; if TRUE the bobyqa function is used for optimisation. Otherwise the nlminb function is used. Note that bobyqa seems to be less stable than nlminb, but does not require calculation of the Palm likelihood's partial derivatives.

trace

Logical; if TRUE, parameter values are printed to the screen for each iteration of the optimisation procedure.

Details

The parameter D is the density of parent points, which is always estimated. Possible additional parameters are

  • lambda, the expected number of children generated per parent (when child.dist = "pois").

  • p, the proportion of the x possible children that are generated (when child.dist = "binomx").

  • kappa, the average length of the surface phase of a diving cetacean (when child.dist = "twocamera"; see Stevenson, Borchers, and Fewster, 2019).

  • sigma, the standard deviation of dispersion along each dimension (when disp = "gaussian").

  • tau, the maximum distance a child can be from its parent (when disp = "uniform").

The "child.info" argument is required when child.dist is set to "twocamera". It must be a list that comprises (i) a component named w, providing the halfwidth of the detection zone; (ii) a component named b, providing the halfwidth of the survey area; (iii) a component named l, providing the time lag between cameras (in seconds); and (iv) a component named tau, providing the mean dive-cycle duration. See Stevenson, Borchers, and Fewster (2019) for details.

References

Jones-Todd, C. M., Caie, P., Illian, J. B., Stevenson, B. C., Savage, A., Harrison, D. J., and Bown, J. L. (in press). Identifying prognostic structural features in tissue sections of colon cancer patients using point pattern analysis. Statistics in Medicine, 38: 1421--1441.

Stevenson, B. C., Borchers, D. L., and Fewster, R. M. (2019) Cluster capture-recapture to account for identification uncertainty on aerial surveys of animal populations. Biometrics, 75: 326--336.

Tanaka, U., Ogata, Y., and Stoyan, D. (2008) Parameter estimation and model selection for Neyman-Scott point processes. Biometrical Journal, 50: 43--57.

See Also

Use coef.palm to extract estimated parameters, and plot.palm to plot the estimated Palm intensity function. Use boot.palm to run a parametric bootstrap, allowing calculation of standard errors and confidence intervals.

See sim.ns to simulate from a Neyman-Scott point process.

Examples

Run this code
## Fitting model to example data.
fit <- fit.ns(example.2D, lims = rbind(c(0, 1), c(0, 1)), R = 0.5)
## Printing estimates.
coef(fit)
## Plotting the estimated Palm intensity.
plot(fit)
if (FALSE) {
## Simulating data and fitting additional models.
set.seed(1234)
## One-dimensional Thomas process.
data.thomas <- sim.ns(c(D = 10, lambda = 5, sigma = 0.025), lims = rbind(c(0, 1)))
## Fitting a model to these data.
fit.thomas <- fit.ns(data.thomas$points, lims = rbind(c(0, 1)), R = 0.5)
## Three-dimensional Matern process.
data.matern <- sim.ns(c(D = 10, lambda = 10, tau = 0.1), disp = "uniform",
                      lims = rbind(c(0, 1), c(0, 2), c(0, 3)))
## Fitting a model to these data.
fit.matern <- fit.ns(data.matern$points, lims = rbind(c(0, 1), c(0, 2), c(0, 3)),
                     R = 0.5, disp = "uniform")
}

Run the code above in your browser using DataLab