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()
.You can install distributions3
with:
install.packages("distributions3")
You can install the development version with:
install.packages("devtools")
::install_github("alexpghayes/distributions3") devtools
The basic usage of distributions3
looks like:
library(distributions3)
<- Bernoulli(0.1)
X
random(X, 10)
#> [1] 0 0 0 0 0 1 0 0 0 0
pdf(X, 1)
#> [1] 0.1
cdf(X, 0)
#> [1] 0.9
quantile(X, 0.5)
#> [1] 0
Note 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.
distributions3
is not under active development, but is
fairly stable and used by several academics for teaching intro stat
courses. We are happy to review PRs contributing bug fixes. If you are
interested in more actively maintaining and developing
distributions3
, please reach out on Github!
Please note that distributions3
is released with a Contributor
Code of Conduct. By contributing to this project, you agree to abide
by its terms.
For a comprehensive overview of the many packages providing various distribution related functionality see the CRAN Task View.
distributional
provides distribution objects as vectorized S3 objectsdistr6
builds on distr
, but uses R6 objectsdistr
is quite similar to distributions
, but uses S4 objects and
is less focused on documentation.fitdistrplus
provides extensive functionality for fitting various distributions but
does not treat distributions themselves as objects