spatstat (version 1.64-1)

bw.diggle: Cross Validated Bandwidth Selection for Kernel Density


Uses cross-validation to select a smoothing bandwidth for the kernel estimation of point process intensity.


bw.diggle(X, ..., correction="good", hmax=NULL, nr=512, warn=TRUE)



A point pattern (object of class "ppp").



Character string passed to Kest determining the edge correction to be used to calculate the \(K\) function.


Numeric. Maximum value of bandwidth that should be considered.


Integer. Number of steps in the distance value \(r\) to use in computing numerical integrals.


Logical. If TRUE, issue a warning if the minimum of the cross-validation criterion occurs at one of the ends of the search interval.


A numerical value giving the selected bandwidth. The result also belongs to the class "bw.optim" which can be plotted.

Definition of bandwidth

The smoothing parameter sigma returned by bw.diggle (and displayed on the horizontal axis of the plot) corresponds to h/2, where h is the smoothing parameter described in Diggle (2003, pages 116-118) and Berman and Diggle (1989). In those references, the smoothing kernel is the uniform density on the disc of radius h. In density.ppp, the smoothing kernel is the isotropic Gaussian density with standard deviation sigma. When replacing one kernel by another, the usual practice is to adjust the bandwidths so that the kernels have equal variance (cf. Diggle 2003, page 118). This implies that sigma = h/2.


This function selects an appropriate bandwidth sigma for the kernel estimator of point process intensity computed by density.ppp.

The bandwidth \(\sigma\) is chosen to minimise the mean-square error criterion defined by Diggle (1985). The algorithm uses the method of Berman and Diggle (1989) to compute the quantity $$ M(\sigma) = \frac{\mbox{MSE}(\sigma)}{\lambda^2} - g(0) $$ as a function of bandwidth \(\sigma\), where \(\mbox{MSE}(\sigma)\) is the mean squared error at bandwidth \(\sigma\), while \(\lambda\) is the mean intensity, and \(g\) is the pair correlation function. See Diggle (2003, pages 115-118) for a summary of this method.

The result is a numerical value giving the selected bandwidth. The result also belongs to the class "bw.optim" which can be plotted to show the (rescaled) mean-square error as a function of sigma.


Berman, M. and Diggle, P. (1989) Estimating weighted integrals of the second-order intensity of a spatial point process. Journal of the Royal Statistical Society, series B 51, 81--92.

Diggle, P.J. (1985) A kernel method for smoothing point process data. Applied Statistics (Journal of the Royal Statistical Society, Series C) 34 (1985) 138--147.

Diggle, P.J. (2003) Statistical analysis of spatial point patterns, Second edition. Arnold.

See Also

density.ppp, bw.ppl, bw.scott, bw.CvL, bw.frac.


Run this code
  b <- bw.diggle(hickory)
  plot(b, ylim=c(-2, 0), main="Cross validation for hickories")
# }
   plot(density(hickory, b))
# }

Run the code above in your browser using DataLab