Online Principal Component Analysis

Online PCA for multivariate and functional data using perturbation methods, low-rank incremental methods, and stochastic optimization methods.


Changes to Version 1.3

  • Added function bsoipca: Block Stochastic Orthogonal Iteration. A block-wise stochastic variant of the classical power-method. Reference: Mitliagkas et al. (2013).

  • Added function incRpca.block that generalizes the vector update of incRpca to matrix updates. Reference: Levy and Lindenbaum (2000).

  • Minor modification in function incRpca for compatibility of results with incRpca.block. The covariance update is now C = (1-f) * UDU' + f * xx' where f is the forgetting factor (default 1/n), U the current PC, D the diagonal matrix of eigenvalues, and x the (eventually centered) new data vector.

  • Same modification as above (weights in covariance update) in functions perturbationRpca and secularRpca.

  • Extended function batchpca to perform batch PCA of data matrix by Implicitly Restarted Arnoldi Method (IRAM). Based on function svds of package rARPACK.

Changes to Version 1.2

  • Added function ccipca implementing the candid-covariance free incremental PCA algorithm of Weng et al. (2003).

  • Added function ghapca implementing the Generalized Hebbian Algorithm of Sanger (1989).

  • Minor modifications to code of function sgapca.

  • Added argument q to functions ghapca, sgapca, and snlpca for specifying number of PC to compute.

Changes to Version 1.1

  • Added function incRpca.rc for incremental PCA with reduced complexity.

  • Removed code related to missing data imputation from functions incRpca, perturbationRpca, secularRpca, sgapca, snlpca.

  • Added function impute to handle missing data using BLUP.

  • Minor modifications to code of function incRpca.

  • Removed argument d (eigenvalues) from function snlpca as the related technique was found unsuitable for eigenvalue calculation.

  • Added reference to Bunch et al. (1978) to secularRpca help page, removed reference to Li et al. (2000)

  • Changed status of package rARPACK from import to dependency.

Changes to Version 1.0-1

  • Fixed bug in incRpca, perturbationRpca, secularRpca, sgapca, snlpca related to missing data.

  • Added references to Brand (2002) in help pages of incRpca, perturbationRpca, secularRpca, sgapca, snlpca.

  • Added HervĂ© Cardot as contributor.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


1.3.1 by David Degras, 5 years ago

Browse source code at

Authors: David Degras [aut, cre] , Herve Cardot [ctb]

Documentation:   PDF Manual  

GPL-3 license

Imports Rcpp, splines, stats

Depends on RSpectra

Linking to Rcpp, RcppArmadillo

See at CRAN