This function uses the technique of cross-validation to select a smoothing parameter suitable for constructing a density estimate or nonparametric regression curve in one or two dimensions.
a vector, or two-column matrix of data. If
a vector of response values for nonparametric regression.
the smallest value of the grid points to be used in an initial grid search for the value of the smoothing parameter.
the largest value of the grid points to be used in an initial grid search for the value of the smoothing parameter.
other optional parameters are passed to the
See Sections 2.4 and 4.5 of the reference below.
The two-dimensional case uses a smoothing parameter derived from a single value, scaled by the standard deviation of each component.
This function does not employ a sophisticated algorithm and some
adjustment of the search parameters may be required for different sets
of data. An initial estimate of the value of h which minimises the
cross-validatory criterion is located from a grid search using values
which are equally spaced on a log scale between
hend. A quadratic approximation is then used to refine this
the value of the smoothing parameter which minimises the cross-validation criterion over the selected grid.
If the minimising value is located at the end of the grid of search positions,
or if some values of the cross-validatory criterion cannot be evaluated,
then a warning message is printed. In these circumstances altering the
hend may improve performance.
As from version 2.1 of the package, a similar effect can be
obtained with the new function
h.select(x, method="cv"). Users are encouraged to adopt
this route, since
hcv might be not accessible directly
in future releases of the package. When the
sample size is large
hcv uses the raw data while
h.select(x, method="cv") uses binning. The latter is
likely to produce a more stable choice for
Bowman, A.W. and Azzalini, A. (1997). Applied Smoothing Techniques for Data Analysis: the Kernel Approach with S-Plus Illustrations. Oxford University Press, Oxford.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# Density estimation x <- rnorm(50) par(mfrow=c(1,2)) h.cv <- hcv(x, display="lines", ngrid=32) sm.density(x, h=hcv(x)) par(mfrow=c(1,1)) # Nonparametric regression x <- seq(0, 1, length = 50) y <- rnorm(50, sin(2 * pi * x), 0.2) par(mfrow=c(1,2)) h.cv <- hcv(x, y, display="lines", ngrid=32) sm.regression(x, y, h=hcv(x, y)) par(mfrow=c(1,1))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.