cSpline | R Documentation |
Generates the convex regression spline (called C-spline) basis matrix by integrating I-spline basis for a polynomial spline or the corresponding derivatives.
cSpline(
x,
df = NULL,
knots = NULL,
degree = 3L,
intercept = TRUE,
Boundary.knots = NULL,
derivs = 0L,
scale = TRUE,
warn.outside = getOption("splines2.warn.outside", TRUE),
...
)
csp(
x,
df = NULL,
knots = NULL,
degree = 3L,
intercept = TRUE,
Boundary.knots = NULL,
derivs = 0L,
scale = TRUE,
warn.outside = getOption("splines2.warn.outside", TRUE),
...
)
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 the returned
matrix. One can specify |
knots |
The internal breakpoints that define the splines. The default
is |
degree |
The degree of C-spline defined to be the degree of the associated M-spline instead of actual polynomial degree. For example, C-spline basis of degree 2 is defined as the scaled double integral of associated M-spline basis of degree 2. |
intercept |
If |
Boundary.knots |
Boundary points at which to anchor the splines. By
default, they are the range of |
derivs |
A nonnegative integer specifying the order of derivatives of
C-splines. The default value is |
scale |
A logical value indicating if scaling C-splines is required. If
|
warn.outside |
A logical value indicating if a warning should be thrown
out when any |
... |
Optional arguments that are not used. |
It is an implementation of the closed-form C-spline basis derived from the
recursion formula of I-splines and M-splines. The function csp()
is
an alias of to encourage the use in a model formula.
A numeric matrix of length(x)
rows and df
columns if
df
is specified. If knots
are specified instead, the
output matrix will consist of length(knots) + degree +
as.integer(intercept)
columns. Attributes that correspond to the
arguments specified are returned for usage of other functions in this
package.
Meyer, M. C. (2008). Inference using shape-restricted regression splines. The Annals of Applied Statistics, 2(3), 1013–1033.
iSpline
for I-splines;
mSpline
for M-splines.
library(splines2)
x <- seq.int(0, 1, 0.01)
knots <- c(0.3, 0.5, 0.6)
### when 'scale = TRUE' (by default)
csMat <- cSpline(x, knots = knots, degree = 2)
plot(csMat, ylab = "C-spline basis", mark_knots = "internal")
isMat <- deriv(csMat)
msMat <- deriv(csMat, derivs = 2)
plot(isMat, ylab = "scaled I-spline basis")
plot(msMat, ylab = "scaled M-spline basis")
### when 'scale = FALSE'
csMat <- cSpline(x, knots = knots, degree = 2, scale = FALSE)
## the corresponding I-splines and M-splines (with same arguments)
isMat <- iSpline(x, knots = knots, degree = 2)
msMat <- mSpline(x, knots = knots, degree = 2, intercept = TRUE)
## or using deriv methods (more efficient)
isMat1 <- deriv(csMat)
msMat1 <- deriv(csMat, derivs = 2)
## equivalent
stopifnot(all.equal(isMat, isMat1, check.attributes = FALSE))
stopifnot(all.equal(msMat, msMat1, check.attributes = FALSE))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.