CopulAX is an open-source software for probability distribution fitting written in JAX, with an emphasis on low-dimensional optimization. The spirital successor to the eariler SklarPy project, this JAX implementation provides improved standardization and optimization performance across distribution objects, in addition to inbuilt automatic differentiation capabilities and greater speed via JIT compilation for both CPUs and GPUs.
We foresee this library having many different possible use cases, ranging from machine learning to finance.
CopulAX is available on PyPI and can be installed by running:
pip install copulaxIn many fields data remains limited, which can be one of the main motivators for using probabilistic software which can allow the generaton of additional data points with similar statistical properties. However, when dealing with multivariate data, even this can become challenging, due the shape / covariance / correlation matrix arguments of many multivariate and copula distributions resulting in the number of parameters required to be estimated to be O(
As CopulAX is still in its early stages, we have so far only released a limited number of continuous univariate and multivariate distributions and their copulas, however in the near future we aim to implement the following:
- Many more univariate distributions, including for discrete variables.
- Incorporating goodness of fit tests into univariate_fitter.
- More multivariate distributions. Namely, the special and limiting cases of the generalized hyperbolic.
- Copulas based on each of the aformentioned multivariate distributions.
- Cdf functions for multivariate and copula distributions. This will depend upon the progress of third party jax-based numerical integration libraries such as quadax.
- Archimedean copulas.
- Empirical distributions, with different fitting methods (smoothing splines vs 'as is'/ non-smoothed).
CopulAX is currently under active development and so bugs are to be expected. However we have extensive tests for each distribution and function, so we are aiming to limit there number.
A list of all implemented distributions can be found here:
- Univariate implemented distributions
- Multivariate implemented distributions
- Copula implemented distributions
We have provided jupyter notebooks containing example code for using univariate, multivariate and copula distribution objects.