GSL (GNU Scientific Library) B-spline/B-spline Derivatives

Description

gsl.bs generates the B-spline basis matrix for a polynomial spline and (optionally) the B-spline basis matrix derivative of a specified order with respect to each predictor

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
gsl.bs(...)
## Default S3 method:
gsl.bs(x,
       degree = 3,
       nbreak = 2,
       deriv = 0,
       x.min = NULL,
       x.max = NULL,
       intercept = FALSE,
       knots = NULL,
       ...)

Arguments

x

the predictor variable. Missing values are not allowed

degree

degree of the piecewise polynomial - default is ‘3’ (cubic spline)

nbreak

number of breaks in each interval - default is ‘2’

deriv

the order of the derivative to be computed-default if 0

x.min

the lower bound on which to construct the spline - defaults to min(x)

x.max

the upper bound on which to construct the spline - defaults to max(x)

intercept

if ‘TRUE’, an intercept is included in the basis; default is ‘FALSE’

knots

a vector (default knots="NULL") specifying knots for the spline basis (default enables uniform knots, otherwise those provided are used)

...

optional arguments

Details

Typical usages are (see below for a list of options and also the examples at the end of this help file)

1
2
    B <- gsl.bs(x,degree=10)
    

Value

gsl.bs returns a gsl.bs object. A matrix of dimension ‘c(length(x), degree+nbreak-1)’.

A primary use is in modelling formulas to directly specify a piecewise polynomial term in a model. See http://www.gnu.org/software/gsl/ for further details.

Author(s)

Jeffrey S. Racine racinej@mcmaster.ca

References

Li, Q. and J.S. Racine (2007), Nonparametric Econometrics: Theory and Practice, Princeton University Press.

Ma, S. and J.S. Racine and L. Yang (under revision), “Spline Regression in the Presence of Categorical Predictors,” Journal of Applied Econometrics.

Ma, S. and J.S. Racine (2013), “Additive Regression Splines with Irrelevant Categorical and Continuous Regressors,” Statistica Sinica, Volume 23, 515-541.

See Also

bs

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
## Plot the spline bases and their first order derivatives
x <- seq(0,1,length=100)
matplot(x,gsl.bs(x,degree=5),type="l")
matplot(x,gsl.bs(x,degree=5,deriv=1),type="l")

## Regression example
n <- 1000
x <- sort(runif(n))
y <- cos(2*pi*x) + rnorm(n,sd=.25)
B <- gsl.bs(x,degree=5,intercept=FALSE)
plot(x,y,cex=.5,col="grey")
lines(x,fitted(lm(y~B)))