https://github.com/cran/fda
Raw File
Tip revision: 229f7206c9196b18bb88d6ee7c3c775e8b28e5d3 authored by J. O. Ramsay on 01 June 2009, 00:00:00 UTC
version 2.1.3
Tip revision: 229f720
eval.monfd.Rd
\name{eval.monfd}
\alias{eval.monfd}
\alias{predict.monfd}
\alias{fitted.monfd}
\alias{residuals.monfd}
\title{
  Values of a Monotone Functional Data Object
}
\description{
  Evaluate a monotone functional data object at specified argument
  values, or evaluate a derivative of the functional object.
}
\usage{
eval.monfd(evalarg, Wfdobj, Lfdobj=int2Lfd(0))
\method{predict}{monfd}(object, newdata=NULL, Lfdobj=0, ...)
\method{fitted}{monfd}(object, ...)
\method{residuals}{monfd}(object, ...)
}
\arguments{
  \item{evalarg, newdata}{
    a vector of argument values at which the functional data object is
    to be evaluated.
  }
  \item{Wfdobj}{
    an object of class \code{fd} that defines the monotone function
    to be evaluated.  Only univariate functions are permitted.
  }
  \item{Lfdobj}{
    a nonnegative integer specifying a derivative to be evaluated.  At
    this time of writing, permissible derivative values are 0, 1, 2, or
    3.  A linear differential operator is not allowed.
  }
  \item{object}{
    an object of class \code{monfd} that defines the monotone function
    to be evaluated.  Only univariate functions are permitted.
  }
  \item{\dots}{
    optional arguments required by \code{predict};  not currently used.
  }
}
\details{
  A monotone function data object $h(t)$ is defined by $h(t) = [D^\{-1\}
  exp Wfdobj](t)$.  In this equation, the operator  $D^\{-1\}$ means
  taking the indefinite integral of the function to which it applies.
  Note that this equation implies that the monotone function has a value
  of zero at the lower limit of the arguments.  To actually fit monotone
  data, it will usually be necessary to estimate an intercept and a
  regression coefficient to be applied to $h(t)$, usually with the least
  squares regression function \code{lsfit}.  The function \code{Wfdobj}
  that defines the monotone function is usually estimated by monotone
  smoothing function \code{smooth.monotone.}

  \code{eval.monfd} only computes the standardized monotone form.
  \code{predict.monfd} computes the scaled version using
  \code{with(object, beta[1] + beta[2]*eval.monfd(...))} if Lfdobj = 0
  or beta[2]*eval.monfd(...) if Lfdobj > 0.
}
\value{
  a matrix containing the monotone function values.  The first dimension
  corresponds to the argument values in \code{evalarg} and the second to
  replications.
}
\seealso{
  \code{\link{eval.fd}},
  \code{\link{smooth.monotone}}
  \code{\link{eval.posfd}}
}
\examples{

#  Estimate the acceleration functions for growth curves
#  See the analyses of the growth data.
#  Set up the ages of height measurements for Berkeley data
age <- c( seq(1, 2, 0.25), seq(3, 8, 1), seq(8.5, 18, 0.5))
#  Range of observations
rng <- c(1,18)
#  First set up a basis for monotone smooth
#  We use b-spline basis functions of order 6
#  Knots are positioned at the ages of observation.
norder <- 6
nage   <- 31
nbasis <- nage + norder - 2
wbasis <- create.bspline.basis(rng, nbasis, norder, age)
#  starting values for coefficient
cvec0 <- matrix(0,nbasis,1)
Wfd0  <- fd(cvec0, wbasis)
#  set up functional parameter object
Lfdobj    <- 3          #  penalize curvature of acceleration
lambda    <- 10^(-0.5)  #  smoothing parameter
growfdPar <- fdPar(Wfd0, Lfdobj, lambda)
#  Set up wgt vector
wgt   <- rep(1,nage)
#  Smooth the data for the first girl
hgt1 = growth$hgtf[,1]
result <- smooth.monotone(age, hgt1, growfdPar, wgt)
#  Extract the functional data object and regression
#  coefficients
Wfd  <- result$Wfdobj
beta <- result$beta
#  Evaluate the fitted height curve over a fine mesh
agefine <- seq(1,18,len=101)
hgtfine <- beta[1] + beta[2]*eval.monfd(agefine, Wfd)
#  Plot the data and the curve
plot(age, hgt1, type="p")
lines(agefine, hgtfine)
#  Evaluate the acceleration curve
accfine <- beta[2]*eval.monfd(agefine, Wfd, 2)
#  Plot the acceleration curve
plot(agefine, accfine, type="l")
lines(c(1,18),c(0,0),lty=4)

##
## using predict.monfd
##
hgtfit <- with(result, beta[1]+beta[2]*eval.monfd(argvals, Wfdobj))
hgtfit. <- fitted(result)
\dontshow{stopifnot(}
all.equal(hgtfit, hgtfit.)
\dontshow{)}

accfine. <- predict(result, agefine, Lfdobj=2)
\dontshow{stopifnot(}
all.equal(accfine, accfine.)
\dontshow{)}

growthResid <- resid(result)
\dontshow{stopifnot(}
all.equal(growthResid, with(result, y-hgtfit.))
\dontshow{)}

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