Hi r-helpers. Please forgive my ignorance, but I would like to plot a smoothing spline (smooth.spline) from package "stats", and show the knots in the plot, and I can't seem to figure out where smooth.spline has located the knots (when I use nknots). Unfortunately, I don't know a lot about splines, but I know that they provide me an easy way to estimate the location of local maxima and minima on varying time-scales (number of knots) in my original data.
I see there is a fit$knot, but it's not clear to me what those values are: for some reason I had expected that they would be contained in my original y values, but they're not. I tried generating nknots equally spaced points in my x, but when I plotted the points that corresponded to my original y values at those equally-spaced x values, I found that the spline did not pass through them, which, perhaps naively, I thought it might. Also, the manual says that yin comprises "the y values used at the unique y values" -- should this read "at the unique x values"? Could someone kindly point to a resource where I can get a slightly fuller explanation? I looked at the code for smooth.spline, but can't readily follow it. Here's a toy example: > x<-seq(from=0,to=4*pi,length=1002) > y<-sin(x) > ss<-smooth.spline(x,y=y,all.knots=F,nknots=25) > ss Call: smooth.spline(x = x, y = y, all.knots = F, nknots = 25) Smoothing Parameter spar= -0.4573636 lambda= 1.006117e-09 (14 iterations) Equivalent Degrees of Freedom (Df): 26.99935 Penalized Criterion: 3.027077e-06 GCV: 3.190666e-09 > str(ss) List of 15 $ x : num [1:1002] 0 0.0126 0.0251 0.0377 0.0502 ... $ y : num [1:1002] 2.88e-05 1.26e-02 2.51e-02 3.77e-02 5.02e-02 ... $ w : num [1:1002] 1 1 1 1 1 1 1 1 1 1 ... $ yin : num [1:1002] 0 0.0126 0.0251 0.0377 0.0502 ... $ data :List of 3 ..$ x: num [1:1002] 0 0.0126 0.0251 0.0377 0.0502 ... ..$ y: num [1:1002] 0 0.0126 0.0251 0.0377 0.0502 ... ..$ w: num [1:1002] 1 1 1 1 1 1 1 1 1 1 ... $ lev : num [1:1002] 0.2238 0.177 0.1399 0.1111 0.0891 ... $ cv.crit : num 3.19e-09 $ pen.crit: num 3.03e-06 $ crit : num 3.19e-09 $ df : num 27 $ spar : num -0.457 $ lambda : num 1.01e-09 $ iparms : Named int [1:3] 1 0 14 ..- attr(*, "names")= chr [1:3] "icrit" "ispar" "iter" $ fit :List of 5 ..$ knot : num [1:31] 0 0 0 0 0.041 ... ..$ nk : num 27 ..$ min : num 0 ..$ range: num 12.6 ..$ coef : num [1:27] 2.88e-05 1.72e-01 5.19e-01 9.04e-01 1.05 ... ..- attr(*, "class")= chr "smooth.spline.fit" $ call : language smooth.spline(x = x, y = y, all.knots = F, nknots = 25) - attr(*, "class")= chr "smooth.spline" > Many thanks! Regards, Mike Nielsen [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.