evaluate_spline {castor} | R Documentation |
Given a natural spline function Y:\R\to\R, defined as a series of Y values on a discrete X grid, evaluate its values (or derivative) at arbitrary X points. Supported splines degrees are 0 (Y is piecewise constant), 1 (piecewise linear), 2 (piecewise quadratic) and 3 (piecewise cubic).
evaluate_spline(Xgrid, Ygrid, splines_degree, Xtarget, extrapolate = "const", derivative = 0)
Xgrid |
Numeric vector, listing x-values in ascending order. |
Ygrid |
Numeric vector of the same length as |
splines_degree |
Integer, either 0, 1, 2 or 3, specifying the polynomial degree of the spline curve Y between grid points. For example, 0 means Y is piecewise constant, 1 means Y is piecewise linear and so on. |
Xtarget |
Numeric vector, listing arbitrary X values on which to evaluate Y. |
extrapolate |
Character, specifying how to extrapolate Y beyond |
derivative |
Integer, specifying which derivative to return. To return the spline's value, set |
Spline functions are returned by some of castor's fitting routines, so evaluate_spline
is meant to aid with the evaluation and plotting of such functions. A spline function of degree D≥q1 has continuous derivatives up to degree D-1. The function evaluate_spline
is much more efficient if Xtarget
is monotonically increasing or decreasing.
This function is used to evaluate the spline's values at arbitrary points. To obtain the spline's polynomial coefficients, use spline_coefficients
.
A numeric vector of the same length as Xtarget
, listing the values (or derivatives, if derivative>0
) of Y on Xtarget
.
Stilianos Louca
# specify Y on a coarse X grid Xgrid = seq(from=0,to=10,length.out=10) Ygrid = sin(Xgrid) # define a fine grid of target X values Xtarget = seq(from=0,to=10,length.out=1000) # evaluate Y on Xtarget, either as piecewise linear or piecewise cubic function Ytarget_lin = evaluate_spline(Xgrid,Ygrid,splines_degree=1,Xtarget=Xtarget) Ytarget_cub = evaluate_spline(Xgrid,Ygrid,splines_degree=3,Xtarget=Xtarget) # plot both the piecewise linear and piecewise cubic curves plot(x=Xtarget, y=Ytarget_cub, type='l', col='red', xlab='X', ylab='Y') lines(x=Xtarget, y=Ytarget_lin, type='l', col='blue', xlab='X', ylab='Y')