# eval.monfd: Values of a Monotone Functional Data Object In fda: Functional Data Analysis

 eval.monfd R Documentation

## 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), returnMatrix=FALSE)
## S3 method for class 'monfd'
predict(object, newdata=NULL, Lfdobj=0, returnMatrix=FALSE, ...)
## S3 method for class 'monfd'
fitted(object, ...)
## S3 method for class 'monfd'
residuals(object, ...)
```

### Arguments

 `evalarg, newdata` a vector of argument values at which the functional data object is to be evaluated. `Wfdobj` an object of class `fd` that defines the monotone function to be evaluated. Only univariate functions are permitted. `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. `object` an object of class `monfd` that defines the monotone function to be evaluated. Only univariate functions are permitted. `returnMatrix` logical: If TRUE, a two-dimensional is returned using a special class from the Matrix package. `...` optional arguments required by `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 `lsfit`. The function `Wfdobj` that defines the monotone function is usually estimated by monotone smoothing function `smooth.monotone.`

`eval.monfd` only computes the standardized monotone form. `predict.monfd` computes the scaled version using `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 `evalarg` and the second to replications.

`eval.fd`, `smooth.monotone` `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   <- length(age)
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)
#  Smooth the data for the first girl
hgt1 <- growth\$hgtf[,1]
#   set conv = 0.1 and iterlim=1 to reduce the compute time
#   required for this test on CRAN;
#   We would not do this normally.
result <- smooth.monotone(age, hgt1, growfdPar, conv=0.1,
iterlim=1)
#  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=60)
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)

all.equal(hgtfit, hgtfit.)

accfine. <- predict(result, agefine, Lfdobj=2)

all.equal(accfine, accfine.)

growthResid <- resid(result)

all.equal(growthResid, with(result, y-hgtfit.))

```

fda documentation built on April 27, 2022, 1:07 a.m.