I would like to announce Diagonalizations.jl, a new package for multivariate statistics/signal processing. Currently it implements the following linear filters:

Acronym

Full Name

Datasets ( m )

Observations ( k )

PCA

Principal Component Analysis

1

1

Whitening

Whitening (Sphering)

1

1

MCA

Maximum Covariance Analysis

2

1

CCA

Canonical Correlation Analysis

2

1

gMCA

generalized MCA

>1

1

gCCA

generalized CCA

>1

1

CSP

Common Spatial Pattern

1

2

CSTP

Common Spatio-Temporal Pattern

1

>1

AJD

Approximate Joint Diagonalization

1

>1

mAJD

multiple AJD

>1

>1

It is thoroughly tested (for real data input for the moment being) and documented.

Also worth mentioning other existing efforts in the ecosystem like LowRankModels.jl, which generalizes some of these methods to work with other types of data like categorical data.

Quick question: did you contact the people in MultivariateStats.jl to discuss the possibility of adding the features you described above?

I absolutely love what I’m seeing here and second @juliohm. Last I checked MultivariateStats.jl was working towards restructuring its type system and it would probably be beneficial for everyone if they (we) got perspectives from people with multiple use cases.

no, I didn’t. I arrived to Julia less then one year ago and i learnt about MultivariateStats.jl pretty late. In any case, the scope of Diagonalizations.jl is much more restricted as compared to the scope of MultivariateStats.jl. As per the overlapping with MultivariateStats.jl, it is limited to the PCA, Whitening and CCA, which are basic procedures. From there, the path of the two packages diverges. For the future, I guess the iterative solvers implemented in Diagonalizations.jl (more of them could be added later on) may be useful in MultivariateStats.jl, for example, to add more independent component analysis and blind source separation methods. I am actually interested in this if there is any plan.