R: Evaluate cyclic B spline basis

cSplineDes {mgcv} | R Documentation

## Evaluate cyclic B spline basis

### Description

Uses `splineDesign` to set up the model matrix for a cyclic B-spline basis.

### Usage

    cSplineDes(x, knots, ord = 4)

### Arguments

`x` | covariate values for smooth.
`knots` | The knot locations: the range of these must include all the data.
`ord` | order of the basis. 4 is a cubic spline basis. Must be >1.

### Details

The routine is a wrapper that sets up a B-spline basis, where the basis functions wrap at the first and last knot locations.

### Value

A matrix with `length(x)` rows and `length(knots)-1` columns.

### Author(s)

Simon N. Wood simon.wood@r-project.org

### See Also

`cyclic.p.spline`

### Examples

     require(mgcv)
     ## create some x's and knots...
     n <- 200
     x <- 0:(n-1)/(n-1);k<- 0:5/5
     X <- cSplineDes(x,k) ## cyclic spline design matrix
     ## plot evaluated basis functions...
     plot(x,X[,1],type="l"); for (i in 2:5) lines(x,X[,i],col=i)
     ## check that the ends match up....
     ee <- X[1,]-X[n,];ee
     tol <- .Machine$double.eps^.75
     if (all.equal(ee,ee*0,tolerance=tol)!=TRUE)
       stop("cyclic spline ends don't match!")

     ## similar with uneven data spacing...
     x <- sort(runif(n)) + 1 ## sorting just makes end checking easy
     k <- seq(min(x),max(x),length=8) ## create knots
     X <- cSplineDes(x,k) ## get cyclic spline model matrix
     plot(x,X[,1],type="l"); for (i in 2:ncol(X)) lines(x,X[,i],col=i)
     ee <- X[1,]-X[n,];ee ## do ends match??
     tol <- .Machine$double.eps^.75
     if (all.equal(ee,ee*0,tolerance=tol)!=TRUE)
       stop("cyclic spline ends don't match!")

[Package mgcv version 1.8-3 Index]