# predict.smooth.spline: Predict from Smoothing Spline Fit

## Description

Predict a smoothing spline fit at new points, return the derivative if desired. The predicted fit is linear beyond the original data.

## Usage

 ```1 2``` ```## S3 method for class 'smooth.spline' predict(object, x, deriv = 0, ...) ```

## Arguments

 `object` a fit from `smooth.spline`. `x` the new values of x. `deriv` integer; the order of the derivative required. `...` further arguments passed to or from other methods.

## Value

A list with components

 `x` The input `x`. `y` The fitted values or derivatives at `x`.

`smooth.spline`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33``` ```require(graphics) attach(cars) cars.spl <- smooth.spline(speed, dist, df = 6.4) ## "Proof" that the derivatives are okay, by comparing with approximation diff.quot <- function(x, y) { ## Difference quotient (central differences where available) n <- length(x); i1 <- 1:2; i2 <- (n-1):n c(diff(y[i1]) / diff(x[i1]), (y[-i1] - y[-i2]) / (x[-i1] - x[-i2]), diff(y[i2]) / diff(x[i2])) } xx <- unique(sort(c(seq(0, 30, by = .2), kn <- unique(speed)))) i.kn <- match(kn, xx) # indices of knots within xx op <- par(mfrow = c(2,2)) plot(speed, dist, xlim = range(xx), main = "Smooth.spline & derivatives") lines(pp <- predict(cars.spl, xx), col = "red") points(kn, pp\$y[i.kn], pch = 3, col = "dark red") mtext("s(x)", col = "red") for(d in 1:3){ n <- length(pp\$x) plot(pp\$x, diff.quot(pp\$x,pp\$y), type = "l", xlab = "x", ylab = "", col = "blue", col.main = "red", main = paste0("s" ,paste(rep("'", d), collapse = ""), "(x)")) mtext("Difference quotient approx.(last)", col = "blue") lines(pp <- predict(cars.spl, xx, deriv = d), col = "red") points(kn, pp\$y[i.kn], pch = 3, col = "dark red") abline(h = 0, lty = 3, col = "gray") } detach(); par(op) ```