R: B-Spline Basis for Polynomial Splines

bSpline {splines2} | R Documentation

## B-Spline Basis for Polynomial Splines

### Description

Generates the B-spline basis matrix representing the family of piecewise polynomials with the specified interior knots and degree, evaluated at the values of `x`.

### Usage

    bSpline(
      x,
      df = NULL,
      knots = NULL,
      degree = 3L,
      intercept = FALSE,
      Boundary.knots = NULL,
      ...
    )

### Arguments

`x` | The predictor variable. Missing values are allowed and will be returned as they are.
`df` | Degree of freedom that equals to the column number of returned matrix. One can specify `df` rather than `knots`, then the function chooses `df - degree - as.integer(intercept)` internal knots at suitable quantiles of `x` ignoring missing values and those `x` outside of the boundary. If internal knots are specified via `knots`, the specified `df` will be ignored.
`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.
`degree` | A non-negative integer specifying the degree of the piecewise polynomial. The default value is 3 for cubic splines. Zero degree is allowed for piece-wise constant bases.
`intercept` | If `TRUE`, the complete basis matrix will be returned. Otherwise, the first basis will be excluded from the output.
`Boundary.knots` | Boundary points at which to anchor the spline basis. By default, they are the range of the non-`NA` data. If both `knots` and `Boundary.knots` are supplied, the basis parameters do not depend on `x`. Data can extend beyond `Boundary.knots`.
`...` | Optional arguments that are not used.

### Details

This function extends the `bs()` function in `splines` package for B-spline basis by allowing piecewise constant (left-closed and right-open except on the right boundary) spline basis with zero degree.

### Value

A numeric matrix with `length(x)` rows and `df` columns if `df` is specified or `length(knots) + degree + as.integer(intercept)` columns if `knots` are specified instead. Attributes that correspond to the arguments specified are returned for usage of other functions in this package.

### See Also

`dbs` for derivatives of B-splines; `ibs` for integrals of B-splines;

### Examples

    library(splines2)

    x <- seq.int(0, 1, 0.01)
    knots <- c(0.3, 0.5, 0.6)

    ## cubic B-splines
    bsMat <- bSpline(x, knots = knots, degree = 3, intercept = TRUE)

    par(mar = c(2.5, 2.5, 0.2, 0.1), mgp = c(1.5, 0.5, 0))
    matplot(x, bsMat, type = "l", ylab = "Cubic B-spline Bases")
    abline(v = knots, lty = 2, col = "gray")

    ## the first derivaitves
    d1Mat <- deriv(bsMat)

    ## the second derivaitves
    d2Mat <- deriv(bsMat, 2)

    ## evaluate at new values
    predict(bsMat, c(0.125, 0.801))

[Package splines2 version 0.3.1 Index]