Raw File
eval.basis.Rd
\name{eval.basis}
\alias{eval.basis}
\alias{predict.basisfd}
\title{
  Values of Basis Functions or their Derivatives
}
\description{
  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.
}
\usage{
eval.basis(evalarg, basisobj, Lfdobj=0, returnMatrix=FALSE)
\method{predict}{basisfd}(object, newdata=NULL, Lfdobj=0,
                          returnMatrix=FALSE, ...)
}
\arguments{
  \item{evalarg, newdata}{
    a vector of argument values at which the basis functiona is to be
    evaluated.
  }
  \item{basisobj}{
    a basis object defining basis functions whose values
    are to be computed.
  }
  \item{Lfdobj}{
    either a nonnegative integer or a linear differential.
    operator object.
  }
  \item{object}{
    an object of class \code{basisfd}
  }
  \item{\dots}{
    optional arguments for \code{predict}, not currently used
  }
  \item{returnMatrix}{
    logical:  If TRUE,  a two-dimensional is returned using a
    special class from the Matrix package.
  }
}
\details{
  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.
}
\value{
  a matrix of basis function values with rows corresponding
  to argument values and columns to basis functions.

  \code{predict.basisfd} is a convenience wrapper for
  \code{eval.basis}.
}
\source{
  Ramsay, James O., and Silverman, Bernard W. (2006), \emph{Functional
    Data Analysis, 2nd ed.}, Springer, New York.

  Ramsay, James O., and Silverman, Bernard W. (2002), \emph{Applied
    Functional Data Analysis}, Springer, New York
}
\seealso{
  \code{\link{getbasismatrix}},
  \code{\link{eval.fd}},
  \code{\link{plot.basisfd}}
}
\examples{
##
## 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') )
\dontshow{stopifnot(}
all.equal(eval.bspl1.1, eval.bspl1.1.)
\dontshow{)}

# 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)
\dontshow{stopifnot(}
all.equal(basisMat, basisMat.)
\dontshow{)}

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

}
% docclass is function
\keyword{smooth}
back to top