On Jun 22, 2015, at 1:09 PM, Glenn Schultz wrote:
> I have the following code which creates a spline function
>
> x <- c(1, 12, 24, 36, 60, 120, 200, 240, 300, 360)
> y <- c(.2, 8, 8, 8, 8, 8, 8, 8, 18, 50)
>
>
> Baseline <- cbind(x,y)
> Turnover <- splinefun(Baseline[,1], Baseline[,2], method =
"natural")
> plot(Turnover(seq(1, 360, 1)), type = "l")
>
> If I change the Y ordinates the spline changes accordingly. However, the
code is the same on inspection. Thus, I figure the basis must be stored
somewhere. I have look through the documentation and cannot find its location.
Can anyone enlighten me on what is going on and where I can find the basis
matrix?
The Trunover-object is actually a closure with both a function call and an
enclosing environment:
> Turnover
function (x, deriv = 0L)
{
deriv <- as.integer(deriv)
if (deriv < 0L || deriv > 3L)
stop("'deriv' must be between 0 and 3")
if (deriv > 0L) {
z0 <- double(z$n)
z[c("y", "b", "c")] <- switch(deriv,
list(y = z$b, b = 2 *
z$c, c = 3 * z$d), list(y = 2 * z$c, b = 6 * z$d,
c = z0), list(y = 6 * z$d, b = z0, c = z0))
z[["d"]] <- z0
}
res <- .splinefun(x, z)
if (deriv > 0 && z$method == 2 && any(ind <- x <=
z$x[1L]))
res[ind] <- ifelse(deriv == 1, z$y[1L], 0)
res
}
<bytecode: 0x3b00a0ea8>
<environment: 0x37f324158>
> ls(envir=environment(Turnover))
[1] "z"> environment(Turnover)$z
$method
[1] 2
$n
[1] 10
$x
[1] 1 12 24 36 60 120 200 240 300 360
$y
[1] 0.2 8.0 8.0 8.0 8.0 8.0 8.0 8.0 18.0 50.0
$b
[1] 0.891067507 0.345137714 -0.094715653 0.033724898 -0.012918083
[6] 0.006114335 -0.011309452 0.030871189 0.362608232 0.618695884
$c
[1] 0.000000e+00 -4.962998e-02 1.297553e-02 -2.272155e-03
[5] 3.286972e-04 -1.149022e-05 -2.063071e-04 1.260823e-03
[9] 4.268128e-03 0.000000e+00
$d
[1] -1.503939e-03 1.739042e-03 -4.235469e-04 3.612294e-05
[5] -1.889930e-06 -8.117371e-07 1.222609e-05 1.670725e-05
[9] -2.371182e-05 0.000000e+00
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
David Winsemius
Alameda, CA, USA