Travis-CI Build Status AppVeyor Build Status CRAN_Status_Badge Coverage Status

MFPCA is an R-package for calculating a PCA for multivariate functional data observed on different domains, that may also differ in dimension. The estimation algorithm relies on univariate basis expansions for each element of the multivariate functional data.


MFPCA allows to calculate a principal component analysis for multivariate (i.e. combined) functional data on up to three-dimensional domains:

It implements various univariate bases:

The representation of the data is based on the object-oriented funData package, hence all functionalities for plotting, arithmetics etc. included therein may be used.


The MFPCA pacakge is available on CRAN. To install the latest version directly from GitHub, please use devtools::install_github("ClaraHapp/MFPCA") (install devtools before).

If you would like to use the cosine bases make sure that the C-library fftw3 is installed on your computer before you install MFPCA. Otherwise, MFPCA is installed without the cosine bases and will throw an error if you attempt to use functions that need fftw3.


The MFPCA package depends on the R-package funData for representing (multivariate) functional data. It uses functionalities from abind, foreach, irlba, Matrix, mgcv and plyr.


The theoretical foundations of multivariate functional principal component analysis are described in:

C. Happ, S. Greven (2018): Multivariate Functional Principal Component Analysis for Data Observed on Different (Dimensional) Domains. Journal of the American Statistical Association, 113(522): 649-659 .

For more details on the implementation, which is based on the funData package, and a case study, see:

C. Happ-Kurz (2020): Object-Oriented Software for Functional Data. Journal of Statistical Software, 93(5): 1-38 .

Bug reports

Please use GitHub issues for reporting bugs or issues.

Try the MFPCA package in your browser

Any scripts or data that you put into this service are public.

MFPCA documentation built on Oct. 17, 2021, 5:06 p.m.