LSCV.spattemp function

Cross-validation bandwidths for spatiotemporal kernel density estimates

Cross-validation bandwidths for spatiotemporal kernel density estimates

Bandwidth selection for standalone spatiotemporal density/intensity based on either unbiased least squares cross-validation (LSCV) or likelihood (LIK) cross-validation, providing an isotropic scalar spatial bandwidth and a scalar temporal bandwidth.

LIK.spattemp(pp, tt = NULL, tlim = NULL, sedge = c("uniform", "none"), tedge = sedge, parallelise = NA, start = NULL, verbose = TRUE) LSCV.spattemp(pp, tt = NULL, tlim = NULL, sedge = c("uniform", "none"), tedge = sedge, sres = 64, tres = sres, parallelise = NA, start = NULL, verbose = TRUE)

Arguments

  • pp: An object of class ppp giving the spatial coordinates of the observations to be smoothed. Possibly marked with the time of each event; see argument tt.
  • tt: A numeric vector of equal length to the number of points in pp, giving the time corresponding to each spatial observation. If unsupplied, the function attempts to use the values in the marks attribute of the ppp.object in pp.
  • tlim: A numeric vector of length 2 giving the limits of the temporal domain over which to smooth. If supplied, all times in tt must fall within this interval (equality with limits allowed). If unsupplied, the function simply uses the range of the observed temporal values.
  • sedge: Character string dictating spatial edge correction. "uniform" (default) corrects based on evaluation grid coordinate. Setting sedge="none" requests no edge correction.
  • tedge: As sedge, for temporal edge correction.
  • sres: Numeric value > 0. Resolution of the [sres xx sres] evaluation grid in the spatial margin.
  • tres: Numeric value > 0. Resolution of the evaluation points in the temporal margin as defined by the tlim interval. If unsupplied, the density is evaluated at integer values between tlim[1] and tlim[2].
  • parallelise: Optional numeric argument to invoke parallel processing, by giving the number of CPU cores to use optimisation. This is only useful for larger data sets of many thousand observations. Experimental. Test your system first using parallel::detectCores() to identify the number of cores available to you.
  • start: Optional positive numeric vector of length 2 giving starting values for the internal call to optim, in the order of (, ).
  • verbose: Logical value indicating whether to print a function progress bar to the console during evaluation.

Returns

A numeric vector of length 2 giving the jointly optimised spatial and temporal bandwidths (named h and lambda respectively).

References

Silverman, B.W. (1986), Density Estimation for Statistics and Data Analysis, Chapman & Hall, New York.

Author(s)

T. M. Davies

Warning

Leave-one-out CV for bandwidth selection in kernel density estimation is notoriously unstable in practice and has a tendency to produce rather small bandwidths in the fixed bandwidth case. Satisfactory bandwidths are not guaranteed for every application. This method can also be computationally expensive for large data sets and fine evaluation grid resolutions.

See Also

BOOT.spattemp, spattemp.density

Examples

data(burk) # Burkitt's Uganda lymphoma data burkcas <- burk$cases hlam1 <- LSCV.spattemp(burkcas) #~9 secs hlam2 <- LSCV.spattemp(burkcas,tlim=c(400,5800)) hlam3 <- LSCV.spattemp(burkcas,start=c(7,400)) rbind(hlam1,hlam2,hlam3) hlam1 <- LIK.spattemp(burkcas) #~3 secs hlam2 <- LIK.spattemp(burkcas,tlim=c(400,5800)) hlam3 <- LIK.spattemp(burkcas,start=c(7,400)) rbind(hlam1,hlam2,hlam3)