Least-squares cross-validation (LSCV) bandwidth matrix selector for multivariate data
Hlscv.RdLSCV bandwidth for 1- to 6-dimensional data
Usage
Hlscv(x, Hstart, binned, bgridsize, amise=FALSE, deriv.order=0,
verbose=FALSE, optim.fun="optim", trunc)
Hlscv.diag(x, Hstart, binned, bgridsize, amise=FALSE, deriv.order=0,
verbose=FALSE, optim.fun="optim", trunc)
hlscv(x, binned=TRUE, bgridsize, amise=FALSE, deriv.order=0, bw.ucv=TRUE)
Hucv(...)
Hucv.diag(...)
hucv(...)Arguments
- x
vector or matrix of data values
- Hstart
initial bandwidth matrix, used in numerical optimisation
- binned
flag for binned kernel estimation
- bgridsize
vector of binning grid sizes
- amise
flag to return the minimal LSCV value. Default is FALSE.
- deriv.order
derivative order
- verbose
flag to print out progress information. Default is FALSE.
- optim.fun
optimiser function: one of
nlmoroptim- trunc
parameter to control truncation for numerical optimisation. Default is 4 for density.deriv>0, otherwise no truncation. For details see below.
- bw.ucv
flag to use
stats::bw.ucvas minimiser function. Default is TRUE.- ...
parameters as above
References
Bowman, A. (1984) An alternative method of cross-validation for the smoothing of kernel density estimates. Biometrika, 71, 353–60.
Rudemo, M. (1982) Empirical choice of histograms and kernel density estimators. Scandinavian Journal of Statistics, 9, 65–78.
Details
hlscv is the univariate LSCV
selector of Bowman (1984) and Rudemo (1982). Hlscv is a
multivariate generalisation of this. Use Hlscv for unconstrained
bandwidth matrices and Hlscv.diag for diagonal bandwidth matrices.
Hucv, Hucv.diag and hucv are aliases with UCV
(unbiased cross validation) instead of LSCV.
For ks \(\geq\) 1.13.0, the default minimiser in hlscv is based on the UCV minimiser
stats::bw.ucv. To reproduce prior behaviour, set bw.ucv=FALSE.
Truncation of the parameter space is usually required for the LSCV selector,
for r > 0, to find a reasonable solution to the numerical optimisation.
If a candidate matrix H is
such that det(H) is not in [1/trunc, trunc]*det(H0) or
abs(LSCV(H)) > trunc*abs(LSCV0) then the LSCV(H) is reset to LSCV0 where
H0=Hns(x) and LSCV0=LSCV(H0).
For details about the advanced options for binned,Hstart,optim.fun,
see Hpi.
Examples
data(forbes, package="MASS")
Hlscv(forbes)
#> [,1] [,2]
#> [1,] 6.173408 2.943307
#> [2,] 2.943307 1.405394
hlscv(forbes$bp)
#> [1] 2.693934