[R] smooth.spline
rkevinburton at charter.net
rkevinburton at charter.net
Sun Jul 20 05:43:04 CEST 2008
Fair enough. FOr a spline interpolation I can do the following:
> n <- 9
> x <- 1:n
> y <- rnorm(n)
> plot(x, y, main = paste("spline[fun](.) through", n, "points"))
> lines(spline(x, y))
Then look at the coefficients generated as:
> f <- splinefun(x, y)
> ls(envir = environment(f))
[1] "ties" "ux" "z"
> splinecoef <- get("z", envir = environment(f))
> slinecoef
$method
[1] 3
$n
[1] 9
$x
[1] 1 2 3 4 5 6 7 8 9
$y
[1] 0.93571604 0.44240485 0.45451903 -0.96207396 -1.13246522 -0.60032698
[7] -1.77506105 -0.09171419 -0.23262573
$b
[1] -1.53673409 0.22775629 -0.81788209 -1.16966436 0.73558677 -0.68744178
[7] 0.08639287 1.86770869 -2.92992167
$c
[1] 1.3657783 0.3987121 -1.4443504 1.0925682 0.8126830 -2.2357115 3.0095462
[8] -1.2282303 -3.5694000
$d
[1] -0.32235542 -0.61435416 0.84563953 -0.09329507 -1.01613149 1.74841922
[7] -1.41259217 -0.78038989 -0.78038989
WHen I look at ?spline there is even an example of "manually" using these coefficeients:
## Manual spline evaluation --- demo the coefficients :
.x <- get("ux", envir = environment(f))
u <- seq(3,6, by = 0.25)
(ii <- findInterval(u, .x))
dx <- u - .x[ii]
f.u <- with(splinecoef,
y[ii] + dx*(b[ii] + dx*(c[ii] + dx* d[ii])))
stopifnot(all.equal(f(u), f.u))
For the smooth.spline as
spl <- smooth.spline(x,y)
I can also look at the coefficients:
spl$fit
$knot
[1] 0.000 0.000 0.000 0.000 0.125 0.250 0.375 0.500 0.625 0.750 0.875 1.000
[13] 1.000 1.000 1.000
$nk
[1] 11
$min
[1] 1
$range
[1] 8
$coef
[1] 0.90345898 0.73823276 0.40777431 -0.08046715 -0.54625461 -0.85205147
[7] -0.96233408 -0.91373830 -0.66529714 -0.47674774 -0.38246971
attr(,"class")
[1] "smooth.spline.fit"
But there isn't an example on how to "manual" use these coefficients. This is what I was asking about. Once I hae the coefficients how do I "manually" interpolate using the coefficients given and x.
Thank you.
Kevin
---- Spencer Graves <spencer.graves at pdf.com> wrote:
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html and provide commented,
> minimal, self-contained, reproducible code.
>
> I do NOT know how to do what you want, but with a self-contained
> example, I suspect many people on this list -- probably including me --
> could easily solve the problem. Without such an example, there is a
> high probability that any answer might (a) not respond to your need, and
> (b) take more time to develop, just because we don't know enough of what
> you are asking.
>
> Spencer
>
> rkevinburton at charter.net wrote:
> > Like I indicated. I understand the coefficients in a B-spline context. If I use the the 'spline' or 'splinefun' I can get the coefficients and they are grouped as 'a', 'b', 'c', and 'd' coefficients. But the coefficients for smooth.spline is just an array. I basically want to take these coefficients and outside of 'R' use them to form an interpolation. In other words I want 'R' to do the hard work and then export the results so they can be used else where.
> >
> > Thank you.
> >
> > Kevin
> >
>
> Spencer Graves wrote:
> > I believe that a short answer to your question is that the
> > "smooth" is a linear combination of B-spline basis functions, and the
> > coefficients are the weights assigned to the different B-splines in
> > that basis.
> > Before offering a much longer answer, I would want to know what
> > problem you are trying to solve and why you want to know. For a brief
> > description of B-splines, see
> > "http://en.wikipedia.org/wiki/B-spline". For a slightly longer
> > commentary on them I suggest the "scripts\ch01.R" in the DierckxSpline
> > package: That script computes and displays some B-splines using
> > "splineDesign", "spline.des" in the 'splines' package plus comparable
> > functions in the 'fda' package. For more info on this, I found the
> > first chapter of Paul Dierckx (1993) Curve and Surface Fitting with
> > Splines (Oxford U. Pr.). Beyond that, I've learned a lot from the
> > 'fda' package and the two companion volumes by Ramsay and Silverman
> > (2006) Functional Data Analysis, 2nd ed. and (2002) Applied Functional
> > Data Analysis (both Springer).
> > If you'd like more help from this listserve, PLEASE do read the
> > posting guide http://www.R-project.org/posting-guide.html and provide
> > commented, minimal, self-contained, reproducible code.
> > Hope this helps. Spencer Graves
> >
> > rkevinburton at charter.net wrote:
> >> I like what smooth.spline does but I am unclear on the output. I can
> >> see from the documentation that there are fit.coef but I am unclear
> >> what those coeficients are applied to.With spline I understand the
> >> "noraml" coefficients applied to a cubic polynomial. But these
> >> coefficients I am not sure how to interpret. If I had a description
> >> of the algorithm maybe I could figure it out but as it is I have this
> >> question. Any help?
> >>
> >> Kevin
> >>
> >> ______________________________________________
> >> R-help at 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.
> >>
> >
More information about the R-help
mailing list