Clearly, I got it wrong.
Thanks to others for the clearer and correct message.
Terry T

On 08/02/2012 11:59 AM, William Dunlap wrote:
If R's bs() and ns() are like S+'s (they do give very similar results* and
S+'s were written by Doug Bates), then bs() does not do any linear algebra
(like qr()) on splineDesign's output. bs() needs to come up with a default
set of knots (if the user didn't supply them), combine the Boundary.knots
(repeated ord times) and knots into one vector to pass to splineDesign,
and, if there are any x's outside of range(Boundary.knots), treat them 
specially.

ns() needs to project  splineDesign's basis functions onto the subspace
of functions whose 2nd derivatives are zero at the endpoints.  The projection
can be done with qr() and friends (S+ uses qr()).

(If you want basis functions for a periodic spline you could use a similar 
procedure
to project to the subspace of functions whose first and second derivatives
match at the upper and lower Boundary.knots.)

* The only difference between the R and S+ versions of bs() that I've noticed
is in how they deal with the x's that are outside of range(Boundary.knots).
S+ extrapolates with cubics both above and below that range while R extrapolates
with a cubic below the range and with a quadratic above the range.  I don't know
what the rationale for this is.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com


-----Original Message-----
From: r-devel-boun...@r-project.org [mailto:r-devel-boun...@r-project.org] On 
Behalf
Of Terry Therneau
Sent: Thursday, August 02, 2012 6:10 AM
To: r-devel@r-project.org; Nathaniel Smith
Subject: Re: [Rd] Rd] Numerics behind splineDesign



On 08/02/2012 05:00 AM, r-devel-requ...@r-project.org wrote:
Now I just have to grovel over the R code in ns() and bs() to figure
out how exactly they pick knots and handle boundary conditions, plus
there is some code that I don't understand in ns() that uses qr() to
postprocess the output from spline.des. I assume this is involved
somehow in imposing the boundary conditions...

Thanks again everyone for your help,
-- Nathaniel
The ns and bs function post-process the spline bases to get an
orthagonal basis matrix, this is the use of qr.  I think this causes
much more grief than it is worth, for the sake of a small increase in
numeric stability.  For instance when you plot the spline bases, they
don't look anything like the basis functions one would expect.  (Perhaps
my background in numerical analysis was a hindrance here, since I know
something about splines and thus have an expectation).

Terry Therneau

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to