bs
BSpline Basis for Polynomial Splines
Generate the Bspline basis matrix for a polynomial spline.
 Keywords
 smooth
Usage
bs(x, df = NULL, knots = NULL, degree = 3, intercept = FALSE, Boundary.knots = range(x))
Arguments
 x
 the predictor variable. Missing values are allowed.
 df
 degrees of freedom; one can specify
df
rather thanknots
;bs()
then choosesdfdegree
(minus one if there is an intercept) knots at suitable quantiles ofx
(which will ignore missing values). The default,NULL
, corresponds to no inner knots, i.e.,degree  intercept
.  knots
 the internal breakpoints that define the
spline. The default is
NULL
, which results in a basis for ordinary polynomial regression. Typical values are the mean or median for one knot, quantiles for more knots. See alsoBoundary.knots
.  degree
 degree of the piecewise polynomialdefault is
3
for cubic splines.  intercept
 if
TRUE
, an intercept is included in the basis; default isFALSE
.  Boundary.knots
 boundary points at which to anchor the Bspline
basis (default the range of the data). If both
knots
andBoundary.knots
are supplied, the basis parameters do not depend onx
. Data can extend beyondBoundary.knots
.
Details
bs
is based on the function spline.des
.
It generates a basis matrix for
representing the family of piecewise polynomials with the specified
interior knots and degree, evaluated at the values of x
. A
primary use is in modeling formulas to directly specify a piecewise
polynomial term in a model.
Value

A matrix of dimension
c(length(x), df)
, where either df
was supplied or if knots
were supplied, df =
length(knots) + degree
plus one if there is an intercept. Attributes
are returned that correspond to the arguments to bs
, and
explicitly give the knots
, Boundary.knots
etc for use by
predict.bs()
.
References
Hastie, T. J. (1992) Generalized additive models. Chapter 7 of Statistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.
See Also
Examples
library(splines)
require(stats); require(graphics)
bs(women$height, df = 5)
summary(fm1 < lm(weight ~ bs(height, df = 5), data = women))
## example of safe prediction
plot(women, xlab = "Height (in)", ylab = "Weight (lb)")
ht < seq(57, 73, length.out = 200)
lines(ht, predict(fm1, data.frame(height = ht)))
Community examples
Looks like there are no examples yet.