In order to fit a smoothing spline, we use the smooth.spline() function.

This figure was produced with the following code:
plot(age, wage, xlim = agelims, cex = .5, col = "darkgrey")
title("Smoothing Spline")
fit <- smooth.spline(age, wage, df = 16)
fit2 <- smooth.spline(age, wage, cv = TRUE)
fit2$df
[1] 6.794596
lines(fit, col = "red", lwd = 2)
lines(fit2, col = "blue", lwd = 2)
legend("topright", legend = c("16 DF", "6.8 DF"), col = c("red", "blue"), lty = 1, lwd = 2, cex = .8)
Notice that in the first call to smooth.spline(), we specified df=16. The
function then determines which value of \(\lambda\) leads to 16 degrees of freedom. In
the second call to smooth.spline(), we select the smoothness level by cross-validation;
this results in a value of \(\lambda\) that yields 6.8 degrees of freedom.
medv as dependent variable and rm as independent variable.
Determine the optimal degrees of freedom with cross-validation.
Store the result in the variable fit. (note: please ignore the warning about non-unique ‘x’ values)df.cv and do not hardcode the value.Assume that: