spatstat.geom (version 2.1-0)

quadscheme: Generate a Quadrature Scheme from a Point Pattern


Generates a quadrature scheme (an object of class "quad") from point patterns of data and dummy points.


quadscheme(data, dummy, method="grid", …)



The observed data point pattern. An object of class "ppp" or in a format recognised by as.ppp()


The pattern of dummy points for the quadrature. An object of class "ppp" or in a format recognised by as.ppp() Defaults to default.dummy(data, ...)


The name of the method for calculating quadrature weights: either "grid" or "dirichlet".

Parameters of the weighting method (see below) and parameters for constructing the dummy points if necessary.


An object of class "quad" describing the quadrature scheme (data points, dummy points, and quadrature weights) suitable as the argument Q of the function ppm() for fitting a point process model.

The quadrature scheme can be inspected using the print and plot methods for objects of class "quad".


This is the primary method for producing a quadrature schemes for use by ppm.

The function ppm fits a point process model to an observed point pattern using the Berman-Turner quadrature approximation (Berman and Turner, 1992; Baddeley and Turner, 2000) to the pseudolikelihood of the model. It requires a quadrature scheme consisting of the original data point pattern, an additional pattern of dummy points, and a vector of quadrature weights for all these points. Such quadrature schemes are represented by objects of class "quad". See quad.object for a description of this class.

Quadrature schemes are created by the function quadscheme. The arguments data and dummy specify the data and dummy points, respectively. There is a sensible default for the dummy points (provided by default.dummy). Alternatively the dummy points may be specified arbitrarily and given in any format recognised by as.ppp. There are also functions for creating dummy patterns including corners, gridcentres, stratrand and spokes.

The quadrature region is the region over which we are integrating, and approximating integrals by finite sums. If dummy is a point pattern object (class "ppp") then the quadrature region is taken to be Window(dummy). If dummy is just a list of \(x, y\) coordinates then the quadrature region defaults to the observation window of the data pattern, Window(data).

If dummy is missing, then a pattern of dummy points will be generated using default.dummy, taking account of the optional arguments .... By default, the dummy points are arranged in a rectangular grid; recognised arguments include nd (the number of grid points in the horizontal and vertical directions) and eps (the spacing between dummy points). If random=TRUE, a systematic random pattern of dummy points is generated instead. See default.dummy for details.

If method = "grid" then the optional arguments (for ) are (nd, ntile, eps). The quadrature region (defined above) is divided into an ntile[1] by ntile[2] grid of rectangular tiles. The weight for each quadrature point is the area of a tile divided by the number of quadrature points in that tile.

If method="dirichlet" then the optional arguments are (exact=TRUE, nd, eps). The quadrature points (both data and dummy) are used to construct the Dirichlet tessellation. The quadrature weight of each point is the area of its Dirichlet tile inside the quadrature region. If exact == TRUE then this area is computed exactly using the package deldir; otherwise it is computed approximately by discretisation.


Baddeley, A. and Turner, R. Practical maximum pseudolikelihood for spatial point patterns. Australian and New Zealand Journal of Statistics 42 (2000) 283--322.

Berman, M. and Turner, T.R. Approximating point process likelihoods with GLIM. Applied Statistics 41 (1992) 31--38.

See Also

ppm, as.ppp, quad.object, gridweights, dirichletWeights, corners, gridcentres, stratrand, spokes



  # grid weights
  Q <- quadscheme(simdat)
  Q <- quadscheme(simdat, method="grid")
  Q <- quadscheme(simdat, eps=0.5)         # dummy point spacing 0.5 units

  Q <- quadscheme(simdat, nd=50)           # 1 dummy point per tile
  Q <- quadscheme(simdat, ntile=25, nd=50) # 4 dummy points per tile

  # Dirichlet weights
  Q <- quadscheme(simdat, method="dirichlet", exact=FALSE)

  # random dummy pattern
  # D <- runifrect(250, Window(simdat))
  # Q <- quadscheme(simdat, D, method="dirichlet", exact=FALSE)

  # polygonal window
  X <- unmark(demopat)
  Q <- quadscheme(X)

  # mask window
  Window(X) <- as.mask(Window(X))
  Q <- quadscheme(X)
# }