Estimates the derivatives of a time series using generalized local linear approximation (GLLA). GLLA is a filtering method for estimating derivatives from data that uses time delay embedding and a variant of Savitzky-Golay filtering to accomplish the task.
glla(
x,
n.embed,
tau,
delta,
order,
na.derivative = c("none", "kalman", "rowwise", "skipover")
)Returns a matrix containing n columns in which n
is one plus the maximum order of the derivatives to be estimated via generalized local linear approximation
Numeric vector. An observed time series
Numeric (length = 1).
Number of embedded dimensions (the number of observations
to be used in the Embed function)
Numeric (length = 1).
Number of observations to offset successive embeddings in
the Embed function. A tau of one
uses adjacent observations.
Default is 1
Numeric (length = 1).
The time between successive observations in the time series.
Default is 1
Numeric (length = 1).
The maximum order of the derivative to be estimated. For example,
"order = 2" will return a matrix with three columns with the estimates
of the observed scores and the first and second derivative for each row of the embedded
matrix (i.e. the reorganization of the time series implemented via
the Embed function)
Character (length = 1). How should missing data in the embeddings be handled? Available options (see Boker et al. (2018) for more details):
"none" (default) --- does nothing and leaves NAs in data
"kalman" --- uses Kalman smoothing (KalmanSmooth) with
structural time series models (StructTS) to impute missing values.
This approach models the underlying temporal dependencies (trend, seasonality, autocorrelation)
to generate estimates for missing observations while preserving the original time scale.
More computationally intensive than the other methods but typically provides the
most accurate imputation by respecting the stochastic properties of the time series
"rowwise" --- adjusts time interval with respect to each embedding ensuring
time intervals are adaptive to the missing data (tends to be more accurate than "none")
"skipover" --- "skips over" missing data and treats the non-missing points
as continuous points in time (note that the time scale shifts to the "per mean time interval,"
which is different and larger than the original scale)
Hudson Golino <hfg9s at virginia.edu>
GLLA implementation
Boker, S. M., Deboeck, P. R., Edler, C., & Keel, P. K. (2010)
Generalized local linear approximation of derivatives from time series. In S.-M. Chow, E. Ferrer, & F. Hsieh (Eds.),
The Notre Dame series on quantitative methodology. Statistical methods for modeling human dynamics: An interdisciplinary dialogue,
(p. 161-178). Routledge/Taylor & Francis Group.
Deboeck, P. R., Montpetit, M. A., Bergeman, C. S., & Boker, S. M. (2009) Using derivative estimates to describe intraindividual variability at multiple time scales. Psychological Methods, 14(4), 367-386.
Filtering procedure
Savitzky, A., & Golay, M. J. (1964).
Smoothing and differentiation of data by simplified least squares procedures.
Analytical Chemistry, 36(8), 1627-1639.
Missing Data
Boker, S. M., Tiberio, S. S., & Moulder, R. G. (2018).
Robustness of time delay embedding to sampling interval misspecification.
In K. van Montfort, J. H. L. Oud, & M. C. Voelkle (Eds.),
Continuous Time Modeling in the Behavioral and Related Sciences (pp. 239–258).
Springer International Publishing.
# A time series with 8 time points
tseries <- 49:56
deriv.tseries <- glla(tseries, n.embed = 4, tau = 1, delta = 1, order = 2)
Run the code above in your browser using DataLab