Collection of EOF analysis and related techniques for climate science
Project description
Example showing North American surface temperature decomposed via EOF analysis, Varimax rotation and Promax rotation.
xeofs: Multi-dimensional EOF analysis and variants
Empirical orthogonal function (EOF) analysis, more commonly known as principal component analysis (PCA), is one of the most popular methods for dimension reduction and structure identification in Earth system sciences. Due to this popularity, a number of different EOF variants have been developed over the last few years, either to mitigate some pitfalls of ordinary EOF analysis (e.g. orthogonality, interpretability, linearity) or to broaden its scope (e.g. multivariate variants).
Currently, there are several implementations of EOF analysis on GitHub that facilitate the acceptance and application of this method by the broader scientific community. Each of these implementations has its own strengths, which need to be highlighted (please let me know, if I forgot any):
Available Models
Package |
xeofs |
|||||
---|---|---|---|---|---|---|
EOF analysis |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
Rotated EOF analysis |
✅ |
❌ |
✅ |
❌ |
❌ |
✅ |
Complex EOF analysis |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
Multivariate EOF |
✅ |
✅ |
❌ |
❌ |
❌ |
❌ |
MCA |
✅ |
❌ |
❌ |
❌ |
✅ |
✅ |
Rotated MCA |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
Complex MCA |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
Multivariate MCA |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
Additional features
Package |
xeofs |
|||||
---|---|---|---|---|---|---|
numpy interface |
✅ |
✅ |
❌ |
❌ |
❌ |
✅ |
pandas interface |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
xarray interface |
✅ |
? |
✅ |
✅ |
✅ |
✅ |
Fast algorithm |
✅ |
❌ |
✅ |
❌ |
❌ |
❌ |
Dask support |
❌ |
✅ |
❌ |
✅ |
❌ |
❌ |
Multi-dimensional |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
Significance analysis |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
Why xeofs?
The goal of xeofs is to merge these different implementations and to simplify the integration of other existing and future variants of EOF analysis thanks to its modular code structure. The official name is deliberately chosen to be similar to the other implementations to make it clear that xeofs is nothing revolutionary new in itself. The point is not to distinguish this implementation from the others, but rather to unify (+ extend) already existing implementations.
This project is intended to be a collaborative project of the scientific community and the contribution of EOF variants in the form of pull requests is explicitly encouraged. If you are interested, just contact me or open an Issue.
Installation
If you are using conda, it is recommend to install via:
conda install -c conda-forge xeofs
Alternatively, you can install the package through pip:
pip install xeofs
How to use it?
Documentation is work in progress. Meanwhile check out some examples to get started:
EOF analysis (S-mode)
EOF analysis (T-mode)
Rotated EOF analysis (Varimax, Promax)
Weighted EOF analysis
Multivariate EOF analysis
Significance analysis via bootstrapping
Maximum Covariance Analysis
Credits
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.