dpca: Compute Dynamic Principal Components and dynamic Karhunen... In freqdom: Frequency Domain Based Analysis: Dynamic PCA

Description

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.

Usage

 1 dpca(X, q = 30, freq = (-1000:1000/1000) * pi, Ndpc = dim(X)[2]) 

Arguments

 X a vector time series given as a (T\times d)-matix. Each row corresponds to a timepoint. q window size for the kernel estimator, i.e. a positive integer. freq a vector containing frequencies in [-π, π] on which the spectral density should be evaluated. Ndpc is the number of principal component filters to compute as in dpca.filters

Details

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.

Value

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)

References

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

Examples

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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") 

Example output

Loading required package: mvtnorm

Attaching package: 'freqdom'

The following object is masked from 'package:base':

%*%

Variance explained by DPCA:	 53.35227 %
Variance explained by PCA:	 37.95291 %


freqdom documentation built on May 2, 2019, 2:10 p.m.