# 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 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()`

.

## 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 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.

## 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.

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 objects
`distr6`

builds on `distr`

, but uses R6 objects
`distr`

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