## Fit a Smoothing Spline

## Usage

    smooth.spline(x, y, w=rep(1, length(x)), df=5, spar=0, cv=FALSE,
                  all.knots=FALSE, df.offset=0, penalty=1)

## Arguments

`x` | a vector giving the values of the predictor variable, or a list or a two-column matrix specifying x and y.
`y` | responses. If `y` is missing, the responses are assumed to be specified by `x`.
`w` | optional vector of weights
`df` | the desired equivalent number of degrees of freedom (trace of the smoother matrix).
`spar` | the coefficient &lambda of the integral of the squared second derivative in the fit (penalized log lik.) criterion.
`cv` | ordinary (TRUE) or `generalized' (FALSE) cross-validation.
`all.knots` | if TRUE, all points in `x` are uses as knots. If FAlSE, a suitably fine grid of knots is used.
`df.offset` | allows the degrees of freedom to be increased by `df.offset` in the GCV criterion.
`penalty` | the coefficient of the penalty for degrees of freedom in the GCV criterion.

## Description

Fits a cubic smoothing spline to the supplied data.

## Details

The `x` vextor should contain at lest ten distinct values.

If `spar` is missing or 0, the value of `df` is used to determine the degree of smoothing. If both are missing, leave-one-out cross-validation is used to determine &lambda.

## Value

An object of class `"smooth.spline"` with components

`x` | the distinct `x` values in increasing order.
`y` | the fitted values corresponding to `x`.
`w` | the weights used at the unique values of `x`.
`yin` | the y values used at the unique `y` values.
`lev` | leverages, the diagonal values of the smoother matrix.
`cv.crit` | (generalized) cross-validation score.
`pen.crit` | penalized criterion
`df` | equivalent degrees of freedom used.
`spar` | the value of &lambda chosen.
`fit` | list for use by `predict.smooth.spline`.
`call` |

## Author(s)

B.D. Ripley

## See Also

`predict.smooth.spline`

## Examples

    data(cars)
    attach(cars)
    plot(speed, dist, main = "data(cars)  &  smoothing splines")
    cars.spl <- smooth.spline(speed, dist)
    (cars.spl)
    all(cars.spl $ w == table(speed)) # TRUE (weights = multiplicities)

    data(cars)
    attach(cars)
    plot(speed, dist, main = "data(cars)  &  smoothing splines")
    cars.spl <- smooth.spline(speed, dist)
    (cars.spl)
    all(cars.spl $ w == table(speed)) # TRUE (weights = multiplicities)

    lines(cars.spl, col = "blue")
    lines(smooth.spline(speed, dist, df=10), lty=2, col = "red")
    legend(5,120,c(paste("default [C.V.] => df =",round(cars.spl$df,1)),
                   "s( * , df = 10)"), col = c("blue","red"), lty = 1:2,
    	bg='bisque')
    detach()

    lines(cars.spl, col = "blue")
    lines(smooth.spline(speed, dist, df=10), lty=2, col = "red")
    legend(5,120,c(paste("default [C.V.] => df =",round(cars.spl$df,1)),
                   "s( * , df = 10)"), col = c("blue","red"), lty = 1:2,
    	bg='bisque')
    detach()

[Package Contents]