Rev 15876 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{bs}\alias{bs}\title{Generate a Basis for Polynomial Splines}\description{Generate the B-spline basis matrix for a polynomial spline.}\usage{bs(x, df, knots, degree=3, intercept=FALSE, Boundary.knots)}\arguments{\item{x}{the predictor variable.}\item{df}{degrees of freedom; one can specify \code{df} rather than\code{knots}; \code{bs()} then chooses \code{df-degree-1} knots atsuitable quantiles of \code{x}.}\item{knots}{the \emph{internal} breakpoints that define thespline. The default is \code{NULL}, which results in a basis forordinary polynomial regression. Typical values are the mean ormedian for one knot, quantiles for more knots. See also\code{Boundary.knots}.}\item{degree}{degree of the piecewise polynomial---default is 3 forcubic splines.}\item{intercept}{if \code{TRUE}, an intercept is included in thebasis; default is \code{FALSE}.}\item{Boundary.knots}{boundary points at which to anchor the B-splinebasis (default the range of the data). If both \code{knots} and\code{Boundary.knots} are supplied, the basis parameters do notdepend on \code{x}. Data can extend beyond \code{Boundary.knots}.}}\value{A matrix of dimension \code{length(x) * df}, where either \code{df}was supplied or if \code{knots} were supplied,\code{df = length(knots) + 3 + intercept}. Attributes are returnedthat correspond to the arguments to \code{bs}, and explicitly givethe \code{knots}, \code{Boundary.knots} etc for use by\code{predict.bs()}.\code{bs()} is based on the function \code{\link{spline.des}()}written by Douglas Bates. It generates a basis matrix forrepresenting the family of piecewise polynomials with the specifiedinterior knots and degree, evaluated at the values of \code{x}. Aprimary use is in modeling formulas to directly specify a piecewisepolynomial term in a model.Beware of making predictions with new \code{x} values when \code{df}is used as an argument. Either use \code{safe.predict.gam()}, or elsespecify \code{knots} and \code{Boundary.knots}.}\seealso{\code{\link{ns}}, \code{\link{poly}}, \code{\link[modreg]{smooth.spline}},\code{\link{predict.bs}}.}\examples{data(women)bs(women$height, df = 5)summary(fm1 <- lm(weight ~ bs(height, df = 5), data = women))}\keyword{smooth}