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.
As compared to MultivariateStats.jl this package supports :
- the
dims
keyword,
- built-in shrinkage covariance matrix estimations throught the CovarianceEstimation package,
- built-in average covariance estimations with metrics for the manifold of positive definite matrices throught the PosDefManifold package,
- automatic procedures to set the subspace dimension upon construction,
- approximate diagonalization procedures for the case
m≥2
and k≥2
(see table above).
12 Likes
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?
1 Like
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.
2 Likes
Hello @juliohm,
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.
4 Likes
just a note to correct what i said here above, since i added support for complex data input.
1 Like