Introduction
The Copulas.jl package provides a large collection of models for dependence structures of real random vectors, so-called copulas, with a good selection of features:
- random number generation,
- evaluation of (log)density and distribution functions
- copula-based multivariate distributions through Sklar's theorem
- fitting procedures, including marginal models or not
- evaluation of dependence metrics
Since copulas are distribution functions, we fully comply with the Distributions.jl
API. This compliance allows direct interoperability with other packages based on this API such as, e.g., Turing.jl
.
Usually, people that use and work with copulas turn to the R
package copula
. While still well-maintained and regularly updated, the R
package copula
is a complicated code base for readability, extensibility, reliability, and maintenance. This is an attempt to provide a very light, fast, reliable and maintainable copula implementation in native Julia. Among others, one of the notable benefits of such a native implementation is the floating point type agnosticism, i.e., compatibility with BigFloat
, DoubleFloats
, MultiFloats
and other kind of numbers.
The package revolves around two main types:
Copula
, the abstract mother type of all copulasSklarDist
, the type for multivariate compound distribution through Sklar's theorem.
Installation
The package is available on Julia's general registry, and can be installed as follows:
] add Copulas
Contributing
If you want to contribute to the package, ask a question, found a bug or simply want to chat, do not hesitate to open an issue on this repo. General guidelines on collaborative practices (colprac) are available at https://github.com/SciML/ColPrac.
Cite this work
Please use the following BibTeX if you want to cite this work:
@article{Laverny2024,
doi = {10.21105/joss.06189},
url = {https://doi.org/10.21105/joss.06189},
year = {2024},
publisher = {The Open Journal},
volume = {9},
number = {94},
pages = {6189},
author = {Oskar Laverny and Santiago Jimenez},
title = {Copulas.jl: A fully Distributions.jl-compliant copula package}, journal = {Journal of Open Source Software}
}