Search code examples
rplotspline

Can't plot smooth spline in R


I am trying to use a smoothing spline on my dataset. I use smooth.spline function. And want to plot my fit next. However, for some reason it won't plot my model. It doesn't even give any error. I only get a error message after running smooth.spline function that 'cross-validation with non-unique 'x' values seems doubtful'. But I don't think it shouldn't make too much of a difference to the practical result.

My code is:

library('splines')


fit_spline <- smooth.spline(data.train$age,data.train$effect,cv = TRUE)


plot(data$effect,data$age,col="grey")
lines(fit_spline,lwd=2,col="purple")



legend("topright",("Smoothing Splines with 5.048163 df selected by CV"),col="purple",lwd=2)

What I get is:

enter image description here

Can someone tell me what I am doing wrong here?


Solution

  • Two issues:

    Number 1. If you do smooth.spline(x, y), plot your data with plot(x, y) not plot(y, x).

    Number 2. Don’t pass in data.train for fitting then a different dataset data for plotting. If you want to see how the spline looks like at new data points, use predict.smooth.spline first. See ?predict.smooth.spline.