Learn R Programming

spatstat (version 1.52-1)

Pairwise: Generic Pairwise Interaction model

Description

Creates an instance of a pairwise interaction point process model which can then be fitted to point pattern data.

Usage

Pairwise(pot, name, par, parnames, printfun)

Arguments

pot

An R language function giving the user-supplied pairwise interaction potential.

name

Character string.

par

List of numerical values for irregular parameters

parnames

Vector of names of irregular parameters

printfun

Do not specify this argument: for internal use only.

Value

An object of class "interact" describing the interpoint interaction structure of a point process.

Details

This code constructs a member of the pairwise interaction family pairwise.family with arbitrary pairwise interaction potential given by the user.

Each pair of points in the point pattern contributes a factor \(h(d)\) to the probability density, where \(d\) is the distance between the two points. The factor term \(h(d)\) is $$h(d) = \exp(-\theta \mbox{pot}(d))$$ provided \(\mbox{pot}(d)\) is finite, where \(\theta\) is the coefficient vector in the model.

The function pot must take as its first argument a matrix of interpoint distances, and evaluate the potential for each of these distances. The result must be either a matrix with the same dimensions as its input, or an array with its first two dimensions the same as its input (the latter case corresponds to a vector-valued potential).

If irregular parameters are present, then the second argument to pot should be a vector of the same type as par giving those parameter values.

The values returned by pot may be finite numeric values, or -Inf indicating a hard core (that is, the corresponding interpoint distance is forbidden). We define \(h(d) = 0\) if \(\mbox{pot}(d) = -\infty\). Thus, a potential value of minus infinity is always interpreted as corresponding to \(h(d) = 0\), regardless of the sign and magnitude of \(\theta\).

See Also

ppm, pairwise.family, ppm.object

Examples

Run this code
# NOT RUN {
   #This is the same as StraussHard(r=0.7,h=0.05)
   strpot <- function(d,par) {
         r <- par$r
         h <- par$h
         value <- (d <= r)
         value[d < h] <- -Inf
         value
   }
   mySH <- Pairwise(strpot, "StraussHard process", list(r=0.7,h=0.05),
           c("interaction distance r", "hard core distance h"))
   data(cells)
   ppm(cells, ~ 1, mySH, correction="isotropic")

   # Fiksel (1984) double exponential interaction
   # see Stoyan, Kendall, Mecke 1987 p 161

   fikspot <- function(d, par) {
      r <- par$r
      h <- par$h
      zeta <- par$zeta
      value <- exp(-zeta * d)
      value[d < h] <- -Inf
      value[d > r] <- 0
      value
   }
   Fiksel <- Pairwise(fikspot, "Fiksel double exponential process",
                      list(r=3.5, h=1, zeta=1),
                      c("interaction distance r",
                        "hard core distance h",
                        "exponential coefficient zeta"))
   data(spruces)
   fit <- ppm(unmark(spruces), ~1, Fiksel, rbord=3.5)
   fit
   plot(fitin(fit), xlim=c(0,4))
   coef(fit)
   # corresponding values obtained by Fiksel (1984) were -1.9 and -6.0
# }

Run the code above in your browser using DataLab