getdx: A wrapper function to call functions in the fda package to...

View source: R/dynrGetDerivs.R

getdxR Documentation

A wrapper function to call functions in the fda package to obtain smoothed estimated derivatives at a specified order

Description

A wrapper function to call functions in the fda package to obtain smoothed estimated derivatives at a specified order

Usage

getdx(theTimes, norder, roughPenaltyMax, lambda, dataMatrix, derivOrder)

Arguments

theTimes

The time points at which derivative estimation are requested

norder

Order of Bsplines - usually 2 higher than roughPenaltyMax

roughPenaltyMax

Penalization order. Usually set to 2 higher than the highest-order derivatives desired

lambda

A positive smoothing parameter: larger –> more smoothing

dataMatrix

Data of size total number of time points x total number of subjects

derivOrder

The order of the desired derivative estimates

Value

A list containing: 1. out (a matrix containing the derivative estimates at the specified order that matches the dimension of dataMatrix); 2. basisCoef (estimated basis coefficients); 3. basis2 (basis functions)

References

Chow, S-M. (2019). Practical Tools and Guidelines for Exploring and Fitting Linear and Nonlinear Dynamical Systems Models. Multivariate Behavioral Research. https://www.nihms.nih.gov/pmc/articlerender.fcgi?artid=1520409

Chow, S-M., *Bendezu, J. J., Cole, P. M., & Ram, N. (2016). A Comparison of Two- Stage Approaches for Fitting Nonlinear Ordinary Differential Equation (ODE) Models with Mixed Effects. Multivariate Behavioral Research, 51, 154-184. Doi: 10.1080/00273171.2015.1123138.

Examples

data("LinearOsc")
# Number of subjects is 10
numP <- length(unique(LinearOsc$ID))
# Number of time points is 100
numT <- max(table(LinearOsc$ID))
out2 <- matrix(LinearOsc$x, ncol=numP, byrow=FALSE)
theTimes <- LinearOsc$theTimes[1:numT]
# Order of Bsplines - usually 2 higher than roughPenaltyMax
norder <- 6
# Penalization order
roughPenaltyMax <- 4 
# Pick lambda value that gives the low GCV
# Could/should use plotGCV instead
sp <- 1/2
# Smoothed level
x <- getdx(theTimes, norder, roughPenaltyMax, sp, out2, 0)[[1]]
# Smoothed 1st derivs
dx <- getdx(theTimes, norder, roughPenaltyMax, sp, out2, 1)[[1]]
# Smoothed 2nd derivs
d2x = getdx(theTimes, norder, roughPenaltyMax, sp, out2, 2)[[1]]

dynr documentation built on Oct. 17, 2022, 9:06 a.m.