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

## Description

Evaluate a monotone functional data object at specified argument values, or evaluate a derivative of the functional object.

## Usage

 ```1 2 3 4 5 6 7``` ```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`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60``` ```# 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.)) ```