R: M-Spline Basis for Polynomial Splines

mSpline {splines2} | R Documentation

## M-Spline Basis for Polynomial Splines

### Description

Generates the basis matrix of the regression spline called M-spline or the corresponding derivatives of given order. For monotone regression, `iSpline` should be used instead of M-splines.

### Usage

    mSpline(
      x,
      df = NULL,
      knots = NULL,
      degree = 3L,
      intercept = FALSE,
      Boundary.knots = NULL,
      derivs = 0L,
      ...
    )

### 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`.
`derivs` | A non-negative integer specifying the order of derivatives of M-splines. The default value is `0L` for M-spline bases.
`...` | Optional arguments that are not used.

### Details

It is an implementation of the close form M-spline basis based on the recursion formula given by Ramsay (1988).

### 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.

### References

Ramsay, J. O. (1988). Monotone regression splines in action. Statistical science, 3(4), 425–441.

### See Also

`bSpline` for B-splines; `iSpline` for I-splines; `cSpline` for C-splines.

### Examples

    library(splines2)

    ## Example given in the reference paper by Ramsay (1988)
    x <- seq.int(0, 1, 0.01)
    knots <- c(0.3, 0.5, 0.6)
    msMat <- mSpline(x, knots = knots, degree = 2, intercept = TRUE)

    par(mar = c(2.5, 2.5, 0.2, 0.1), mgp = c(1.5, 0.5, 0))
    matplot(x, msMat, type = "l", ylab = "y")
    abline(v = knots, lty = 2, col = "gray")

    ## derivatives of M-splines
    dmsMat <- mSpline(x, knots = knots, degree = 2,
                      intercept = TRUE, derivs = 1)

    ## or using the deriv method
    dmsMat1 <- deriv(msMat)
    stopifnot(all.equal(dmsMat, dmsMat1, check.attributes = FALSE))

[Package splines2 version 0.3.1 Index]