dpca {freqdom} | R Documentation |
Dynamic principal component analysis (DPCA) decomposes multivariate time series into uncorrelated components. Compared to classical principal components, DPCA decomposition outputs components which are uncorrelated in time, allowing simpler modeling of the processes and maximizing long run variance of the projection.
dpca(X, q = 30, freq = (-1000:1000/1000) * pi, Ndpc = dim(X)[2])
X |
a vector time series given as a |
q |
window size for the kernel estimator, i.e. a positive integer. |
freq |
a vector containing frequencies in |
Ndpc |
is the number of principal component filters to compute as in |
This convenience function applies the DPCA methodology and returns filters (dpca.filters
), scores
(dpca.scores
), the spectral density (spectral.density
), variances (dpca.var
) and
Karhunen-Leove expansion (dpca.KLexpansion
).
See the example for understanding usage, and help pages for details on individual functions.
A list containing
scores
\quad
DPCA scores (dpca.scores
)
filters
\quad
DPCA filters (dpca.filters
)
spec.density
\quad
spectral density of X
(spectral.density
)
var
\quad
amount of variance explained by dynamic principal components (dpca.var
)
Xhat
\quad
Karhunen-Loeve expansion using Ndpc
dynamic principal components (dpca.KLexpansion
)
Hormann, S., Kidzinski, L., and Hallin, M. Dynamic functional principal components. Journal of the Royal Statistical Society: Series B (Statistical Methodology) 77.2 (2015): 319-348.
Brillinger, D. Time Series (2001), SIAM, San Francisco.
Shumway, R., and Stoffer, D. Time series analysis and its applications: with R examples (2010), Springer Science & Business Media
X = rar(100,3)
# Compute DPCA with only one component
res.dpca = dpca(X, q = 5, Ndpc = 1)
# Compute PCA with only one component
res.pca = prcomp(X, center = TRUE)
res.pca$x[,-1] = 0
# Reconstruct the data
var.dpca = (1 - sum( (res.dpca$Xhat - X)**2 ) / sum(X**2))*100
var.pca = (1 - sum( (res.pca$x %*% t(res.pca$rotation) - X)**2 ) / sum(X**2))*100
cat("Variance explained by DPCA:\t",var.dpca,"%\n")
cat("Variance explained by PCA:\t",var.pca,"%\n")