A Julia package for probability distributions and associated functions. Particularly, Distributions implements:
- Moments (e.g mean, variance, skewness, and kurtosis), entropy, and other properties
- Probability density/mass functions (pdf) and their logarithm (logpdf)
- Moment generating functions and characteristic functions
- Sampling from a population or from a distribution
- Maximum likelihood estimation
Note: The functionalities related to conjugate priors have been moved to the ConjugatePriors package.
Support: We use GitHub for the development of the Julia package Distributions itself. For support and questions, please use the Julia Discourse forum. Also, for casual conversation and quick questions, there are the channels
#statisticsin the official Julia chat (https://julialang.slack.com). To get an invitation, please visit https://julialang.org/slack/.
- If you need help or an explanation of how to use Distributions ask in the forum (https://discourse.julialang.org) or, for informal questions, visit the chat (https://julialang.slack.com).
If you have a bug linked with Distributions, check that it has not been reported yet on the issues of the repository. If not, you can file a new issue, add your version of the package which you can get with this command in the Julia REPL:
julia> ]status Distributions
Be exhaustive in your report, summarize the bug, and provide: a Minimal Working Example (MWE), what happens, and what you expected to happen.
Workflow with Git and GitHub
To contribute to the package, fork the repository on GitHub, clone it and make modifications on a new branch, do not commit modifications on master. Once your changes are made, push them on your fork and create the Pull Request on the main repository.
Distributions is a central package which many rely on, the following are required for contributions to be accepted:
Docstrings must be added to all interface and non-trivial functions.
Tests validating the modified behavior in the
testfolder. If new test files are added, do not forget to add them in
test/runtests.jl. Cover possible edge cases. Run the tests locally before submitting the PR.
At the end of the tests,
Test.detect_ambiguities(Distributions)is run to check method ambiguities. Verify that your modified code did not yield method ambiguities.
Make corresponding modifications to the
docsfolder, build the documentation locally and verify that your modifications display correctly and did not yield warnings. To build the documentation locally, you first need to instantiate the
julia --project=docs/ pkg> instantiate pkg> dev .
julia --project=docs/ docs/make.jlto build the documentation.
CITATION.bib, or use the DOI badge above.