
Last chance! 50% off unlimited learning
Sale ends in
A set of basis functions are evaluated at a vector of argument values. If a linear differential object is provided, the values are the result of applying the the operator to each basis function.
eval.basis(evalarg, basisobj, Lfdobj=0, returnMatrix=FALSE)
# S3 method for basisfd
predict(object, newdata=NULL, Lfdobj=0,
returnMatrix=FALSE, ...)
a vector of argument values at which the basis functiona is to be evaluated.
a basis object defining basis functions whose values are to be computed.
either a nonnegative integer or a linear differential. operator object.
an object of class basisfd
optional arguments for predict
, not currently used
logical: If TRUE, a two-dimensional is returned using a special class from the Matrix package.
a matrix of basis function values with rows corresponding to argument values and columns to basis functions.
predict.basisfd
is a convenience wrapper for
eval.basis
.
If a linear differential operator object is supplied, the basis must be such that the highest order derivative can be computed. If a B-spline basis is used, for example, its order must be one larger than the highest order of derivative required.
# NOT RUN {
##
## 1. B-splines
##
# The simplest basis currently available:
# a single step function
bspl1.1 <- create.bspline.basis(norder=1, breaks=0:1)
eval.bspl1.1 <- eval.basis(seq(0, 1, .2), bspl1.1)
# check
eval.bspl1.1. <- matrix(rep(1, 6), 6,
dimnames=list(NULL, 'bspl') )
# }
# NOT RUN {
all.equal(eval.bspl1.1, eval.bspl1.1.)
# }
# NOT RUN {
# The second simplest basis:
# 2 step functions, [0, .5], [.5, 1]
bspl1.2 <- create.bspline.basis(norder=1, breaks=c(0,.5, 1))
eval.bspl1.2 <- eval.basis(seq(0, 1, .2), bspl1.2)
# Second order B-splines (degree 1: linear splines)
bspl2.3 <- create.bspline.basis(norder=2, breaks=c(0,.5, 1))
eval.bspl2.3 <- eval.basis(seq(0, 1, .1), bspl2.3)
# 3 bases: order 2 = degree 1 = linear
# (1) line from (0,1) down to (0.5, 0), 0 after
# (2) line from (0,0) up to (0.5, 1), then down to (1,0)
# (3) 0 to (0.5, 0) then up to (1,1).
##
## 2. Fourier
##
# The false Fourier series with 1 basis function
falseFourierBasis <- create.fourier.basis(nbasis=1)
eval.fFB <- eval.basis(seq(0, 1, .2), falseFourierBasis)
# Simplest real Fourier basis with 3 basis functions
fourier3 <- create.fourier.basis()
eval.fourier3 <- eval.basis(seq(0, 1, .2), fourier3)
# 3 basis functions on [0, 365]
fourier3.365 <- create.fourier.basis(c(0, 365))
eval.F3.365 <- eval.basis(day.5, fourier3.365)
matplot(eval.F3.365, type="l")
# The next simplest Fourier basis (5 basis functions)
fourier5 <- create.fourier.basis(nbasis=5)
eval.F5 <- eval.basis(seq(0, 1, .1), fourier5)
matplot(eval.F5, type="l")
# A more complicated example
dayrng <- c(0, 365)
nbasis <- 51
norder <- 6
weatherBasis <- create.fourier.basis(dayrng, nbasis)
basisMat <- eval.basis(day.5, weatherBasis)
matplot(basisMat[, 1:5], type="l")
##
## 3. predict.basisfd
##
basisMat. <- predict(weatherBasis, day.5)
# }
# NOT RUN {
all.equal(basisMat, basisMat.)
# }
# NOT RUN {
##
## 4. Date and POSIXct
##
# Date
July4.1776 <- as.Date('1776-07-04')
Apr30.1789 <- as.Date('1789-04-30')
AmRev <- c(July4.1776, Apr30.1789)
BspRevolution <- create.bspline.basis(AmRev)
AmRevYears <- seq(July4.1776, Apr30.1789, length.out=14)
AmRevBases <- predict(BspRevolution, AmRevYears)
matplot(AmRevYears, AmRevBases, type='b')
# Image is correct, but
# matplot does not recogize the Date class of x
# POSIXct
AmRev.ct <- as.POSIXct1970(c('1776-07-04', '1789-04-30'))
BspRev.ct <- create.bspline.basis(AmRev.ct)
AmRevYrs.ct <- seq(AmRev.ct[1], AmRev.ct[2], length.out=14)
AmRevBas.ct <- predict(BspRev.ct, AmRevYrs.ct)
matplot(AmRevYrs.ct, AmRevBas.ct, type='b')
# Image is correct, but
# matplot does not recognize the POSIXct class of x
# }
Run the code above in your browser using DataLab