I finally found the answer: the easiest way to enforce this is just
removing the 2 knots, like this:
## thanks for all those who replied to the increasing sequences questions
incseq <- function(a,b) {
if (a <= b)
seq.int(from=a,to=b)
else
integer(0)
}
## remove & augment knots
extendknots <- function(x) {
stopifnot(length(x) >= 4 && all(diff(x) > 0))
l <- length(x) # last element
c(rep(x[1],4),x[incseq(3,l-2)],rep(x[l],4))
}
library(splines)
x <- 0:10 # knots
splineDesign(extendknots(x),x) # design matrix to fit not-a-knot cubic splines
Tamas
On Tue, Nov 14, 2006 at 10:41:39PM -0500, Tamas K Papp wrote:
> Hi,
>
> I would like to fit an (interpolating) spline to data where the
> derivatives at the endpoints of the interval are nonzero, thus the
> natural spline endpoint-specification does not make sense. Books (de
> Boor, etc) suggest that in this case I use not-a-knot splines.
>
> I know what not-a-knot splines are (so if I were solving for the
> coefficients directly I knew how to do this), but I don't know how to
> sensibly enforce this restriction on the B-spline basis. I would
> appreciate any advice, references or example code.
>
> Thanks,
>
> Tamas
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.