[Rd] bug in spline()? (PR#653)
imsw@holyrood.ed.ac.uk
imsw@holyrood.ed.ac.uk
Mon, 4 Sep 2000 13:29:08 +0200 (MET DST)
BUG IN SPLINE()?
Version R-1.0.1, system i486,linux
If the spline(x,y,method="natural") function is given values outside the
range of the data, it does not give a warning. Moreover, the extrapolated
value reported is not the ordinate of the natural spline defined by (x,y).
Example. Let x <- c(2,5,8,10) and y <- c(1.2266,-1.7606,-0.5051,1.0390).
Then interpolate/extrapolate with a natural cubic spline at 1:10 using
either
spline(x,y,n=10,method="natural",xmin=1,xmax=10)
or
fn <- splinefun(x,y,method="natural")
fn(1:10)
This gives c(2.5366,1.2266,-0.0834,...,1.0390). I agree with all values
except that at x=1. The interpolation formula in Green and Silverman's
book on splines gives the derivative of a natural spline at the first
knot as f'(x1)=(f2-f1)/(x2-x1) -(1/6)(x2-x1)d, where d=second derivative
at the second knot. For the above example, d=0.7071, f'(x1)=-1.3493,
and the natural spline interpolant has value 1.2266-(-1.3493)=2.5759
at x=1, not 2.5366.
PS There are different e-mail addresses for bug reports given in the
FAQ file and in the help information for bug.report.
************************************************
* I.White *
* ICAPB, University of Edinburgh *
* Ashworth Laboratories, West Mains Road *
* Edinburgh EH9 3JT *
* Fax: 0131 667 3210 Tel: 0131 650 5490 *
* E-mail: i.m.s.white@ed.ac.uk *
************************************************
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._