R: Fit a Polynomial Smoothing Spline of Arbitrary Order
smooth.Pspline
R Documentation
Fit a Polynomial Smoothing Spline of Arbitrary Order
Description
Returns an object of class "smooth.Pspline" which is a natural
polynomial smooth of the input data of order fixed by the user.
Usage
smooth.Pspline(x, y, w=rep(1, length(x)), norder=2, df=norder + 2,
spar=0, method=1)
sm.spline(x, y, w, cv=FALSE, ...)
Arguments
x
values of the predictor variable. These must be strictly increasing,
and there must be at least 2*norder + 1 of them.
sm.spline provides a simplified interface, in which the x
values can be unsorted, or a list with components "x" and
"y" or a two-column matrix or a complex vector.
y
one or more sets of response variable values. If there is one
response variable, y is an array of the same length as x; if more
than one, then y is a matrix with length(x) rows and number of
columns equal to the number of variables.
w
vector of positive weights for smoothing of the same length as x.
If measurements at different values of x have different
variances, w
should be inversely proportional to the variances. The default is
that all weights are one.
norder
the order of the spline. norder = 2 gives the cubic smoothing
spline, and more generally the smoothing function is a piecewise
polynomial of degree 2*norder - 1. If derivatives are to be
computed from the smoothing using predict.smooth.Pspline, the order
should be one or two more than the highest order of derivative.
df
a number which specifies the degrees of freedom = trace(S). Here S is
the implicit smoothing matrix. df controls the amount of smoothing
if method = 2.
spar
the usual smoothing parameter for smoothing splines, which is the
coefficient of the integrated squared derivative of order norder.
spar controls the amount of smoothing if method = 1.
cv
logical: should ordinary cross-validation be used (true) or
generalized cross-validation.
method
the method for controlling the amount of smoothing. method = 1 uses
the value supplied for spar. method = 2 adjusts spar so that the
degrees of freedom is equal to df. method = 3 adjusts spar so
that the generalized cross-validation criterion is minimized.
method = 4 adjusts spar so that the ordinary cross-validation criterion is
minimized. If method = 3 or method = 4, spar defines the initial
value for the minimization algorithm if positive; otherwise an
internally generated value is used.
sm.spline chooses this automatically based on the supplied values
and that of cv.
...
additional arguments to be passed to smooth.Pspline.
Details
The method produces results similar to function smooth.spline, but
the smoothing function is a natural smoothing spline rather than a B-spline
smooth, and as a consequence will differ slightly for norder = 2 over the
initial and final intervals.
The main extension is the possibility of setting the order of
derivative to be penalized, so that derivatives of any order can be
computed using the companion function predict.smooth.Pspline. The
algorithm is of order N, meaning that the number of floating point
operations is proportional to the number of values being smoothed.
Note that the argument values must be strictly increasing, a condition
that is not required by smooth.spline.
Note that the appropriate or minimized value of the smoothing parameter
spar will depend heavily on the order; the larger the order, the smaller
this parameter will tend to be.
Value
an object of class "smooth.Pspline" is returned, consisting of the fitted
smoothing spline evaluated at the supplied data, some fitting criteria
and constants. This object contains the information necessary to evaluate
the smoothing spline or one of its derivatives at arbitrary argument
values using predict.smooth.Pspline. The components of the returned
list are
norder
the order of the spline
x
values of the predictor variable
ysmth
a matrix with length(x) rows, each column of which contains
the smoothed response variable values for the corresponding column of y.
lev
leverage values, which are the diagonal elements of the smoother matrix S.
gcv
generalized cross-validation criterion value
cv
ordinary cross-validation criterion value
df
a number which supplies the degrees of freedom = trace(S) rather than
a smoothing parameter.
spar
the final smoothing parameter for smoothing splines. This
is unchanged if method = 1, but adjusted otherwise.
call
the call that produced the fit.
References
Heckman, N. and Ramsay, J. O. (1996) Spline smoothing with model based
penalties. McGill University, unpublished manuscript.
See Also
predict.smooth.Pspline, smooth.spline
Examples
data(cars)
attach(cars)
plot(speed, dist, main = "data(cars) & smoothing splines")
cars.spl <- sm.spline(speed, dist)
cars.spl
lines(cars.spl, col = "blue")
lines(sm.spline(speed, dist, df=10), lty=2, col = "red")