distributions3
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 objectsBe 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 ofcdf().
Installation
You can install distributions3 with:
install.packages("distributions3")You can install the development version with:
install.packages("devtools")
devtools::install_github("alexpghayes/distributions3")Basic Usage
The basic usage of distributions3 looks like:
library("distributions3")
X <- Bernoulli(0.1)
random(X, 10)
#> [1] 0 0 0 0 0 0 1 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.
Contributing
If you are interested in contributing to distributions3, please reach
out on Github! We are happy to review PRs contributing bug fixes.
Please note that distributions3 is released with a Contributor Code
of
Conduct.
By contributing to this project, you agree to abide by its terms.
Related work
For a comprehensive overview of the many packages providing various distribution related functionality see the CRAN Task View.
distributionalprovides distribution objects as vectorized S3 objectsdistr6builds ondistr, but uses R6 objectsdistris quite similar todistributions, but uses S4 objects and is less focused on documentation.fitdistrplusprovides extensive functionality for fitting various distributions but does not treat distributions themselves as objects