distributions3, inspired by the eponynmous Julia package, provides a generic function interface to probability distributions. distributions3 has two goals:
Replace the rnorm(), pnorm(), etc, family of functions with S3 methods for distribution objects
Be extremely well documented and friendly for students in intro stat classes.
The main generics are:
random(): Draw samples from a distribution.pdf(): Evaluate the probability density (or mass) at a point.cdf(): Evaluate the cumulative probability up to a point.quantile(): Determine the quantile for a given probability. Inverse of cdf().The basic usage of distributions3 looks like:
library(distributions3)
X <- Bernoulli(0.1)
random(X, 10)
#> [1] 1 0 0 0 0 0 0 1 0 0
pdf(X, 1)
#> [1] 0.1
cdf(X, 0)
#> [1] 0.9
quantile(X, 0.5)
#> [1] 0Note that quantile() always returns lower tail probabilities. If you aren’t sure what this means, please read the last several paragraphs of vignette("one-sample-z-confidence-interval") and have a gander at the plot.
I am very happy to review PRs and provide advice on how to add new functionality to the package. Documentation improvements are particularly appreciated!
To add a new distribution, the best way to get started is to look at R/Beta.R and tests/testthat/test-Beta.R, copy them, and modify them for whatever new distribution you’d like to add.
Please note that distributions3 is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.