Returns the spline function (with the specified coefficients) or evaluate
the basis functions at the specified x
if the coefficients are not
specified.
# S3 method for BSpline
predict(object, newx = NULL, coef = NULL, ...)# S3 method for MSpline
predict(object, newx = NULL, coef = NULL, ...)
# S3 method for ISpline
predict(object, newx = NULL, coef = NULL, ...)
# S3 method for CSpline
predict(object, newx = NULL, coef = NULL, ...)
# S3 method for BernsteinPoly
predict(object, newx = NULL, coef = NULL, ...)
# S3 method for NaturalSpline
predict(object, newx = NULL, coef = NULL, ...)
# S3 method for NaturalSplineK
predict(object, newx = NULL, coef = NULL, ...)
The function returns the spline basis functions with the new values
of x
if coef
is not specified. Otherwise, the function
returns the resulting spline function (or its derivative if
derivs
is specified as a positive integer through ...
).
Spline objects produced by the splines2
package.
The x
values at which evaluations are required. If it is
NULL
(by default), the original x
used to create the
spline object will be used.
A numeric vector specifying the coefficients of the spline basis
functions. If it is NULL
(by default), the spline basis
functions will be returned. Otherwise, the resulting spline function
will be returned.
Other options passed to the corresponding function that
constructs the input object
. For example, the additional options
will be passed to bSpline()
for a BSpline
object.
library(splines2)
x <- seq.int(0, 1, 0.2)
knots <- c(0.3, 0.5, 0.6)
newx <- seq.int(0.1, 0.9, 0.2)
## Cubic B-spline basis functions
bs_mat <- bSpline(x, knots = knots)
## compute the B-spline basis functions at new x
predict(bs_mat, newx)
## compute the B-spline function for the specified coefficients
beta <- runif(ncol(bs_mat))
predict(bs_mat, coef = beta)
## compute the first derivative of the B-spline function
predict(bs_mat, coef = beta, derivs = 1)
## or equivalently
predict(deriv(bs_mat), coef = beta)
## compute the second derivative
predict(bs_mat, coef = beta, derivs = 2)
## or equivalently
predict(deriv(bs_mat, derivs = 2), coef = beta)
## compute the integral
predict(bs_mat, coef = beta, integral = TRUE)
## or equivalently
predict(update(bs_mat, integral = TRUE), coef = beta)
## visualize
op <- par(mfrow = c(2, 2), mar = c(2.5, 2.5, 0.5, 0.1), mgp = c(1.5, 0.5, 0))
plot(bs_mat, coef = beta, ylab = "B-Spline Function", mark_knots = "all")
plot(deriv(bs_mat), coef = beta, ylab = "1st Derivative", mark_knots = "all")
plot(deriv(bs_mat, derivs = 2), coef = beta,
ylab = "2nd Derivative", mark_knots = "all")
plot(update(bs_mat, integral = TRUE), coef = beta,
ylab = "Integral", mark_knots = "all")
par(op)
Run the code above in your browser using DataLab