Prediction using a natural spline fit

r, spline

Solution

Create a data frame with a column called `x`, and pass it as the `newdata` argument to `predict`:

predict(fit.temp, newdata=data.frame(x=x.new))

Problem

I have a fitted a simple natural spline (df = 3) model and I'm trying to predict for some out of sample observations. Using the function `predict()`, I'm able to get fitted values for in-sample observations but I've not been able to get the predicted value for new observations. Here is my code: ``` library(splines) set.seed(12345) x <- seq(0, 2, by = 0.01) y <- rnorm(length(x)) + 2*sin(2*pi*(x-1/4)) # My n.s fit: fit.temp <- lm(y ~ ns(x, knots = seq(0.01, 2, by = 0.1))) # Getting fitted values: fit.temp.values <- predict(fit.temp,interval="prediction", level = 1 - 0.05) # Plotting the data, the fit, and the 95% CI: plot(x, y, ylim = c(-6, +6)) lines(x, fit.temp.values[,1], col = "darkred") lines(x, fit.temp.values[,2], col = "darkblue", lty = 2) lines(x, fit.temp.values[,3], col = "darkblue", lty = 2) # Consider the points for which we want to get the predicted values: x.new <- c(0.275, 0.375, 0.475, 0.575, 1.345) ``` How can I get the predicted values for x.new? Thanks very much for your help, p.s. I searched all related questions on SO and I didn't find the answer.

Original source