Learn R Programming

⚠️There's a newer version (0.2.2) of this package.Take me there.

distributions

distributions3, inspired by the eponynmous Julia package, provides a generic function interface to probability distributions. distributions has two goals:

  1. Replace the rnorm(), pnorm(), etc, family of functions with S3 methods for distribution objects

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

distributions is not yet on CRAN. 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 1
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

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.

Related work

For a comprehensive overview of the many packages providing various distribution related functionality see the CRAN Task View.

  • distr is quite similar to distributions, but uses S4 objects and is less focused on documentation.
  • distr6 builds on distr, but uses R6 objects
  • fitdistrplus provides extensive functionality for fitting various distributions but does not treat distributions themselves as objects

Copy Link

Version

Install

install.packages('distributions3')

Monthly Downloads

1,756

Version

0.1.1

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Alex Hayes

Last Published

September 3rd, 2019

Functions in distributions3 (0.1.1)

FisherF

Create an F distribution
Bernoulli

Create a Bernoulli distribution
ChiSquare

Create a Chi-Square distribution
Exponential

Create a Exponential distribution
Cauchy

Create a Cauchy distribution
Binomial

Create a Binomial distribution
Gamma

Create a Gamma distribution
Beta

Create a Beta distribution
Logistic

Create a Logistic distribution
Categorical

Create a Categorical distribution
Geometric

Create a Geometric distribution
Poisson

Create a Poisson distribution
StudentsT

Create a Student's T distribution
HyperGeometric

Create a HyperGeometric distribution
cdf.Geometric

Evaluate the cumulative distribution function of a Geometric distribution
cdf.HyperGeometric

Evaluate the cumulative distribution function of a HyperGeometric distribution
Multinomial

Create a Multinomial distribution
cdf.Bernoulli

Evaluate the cumulative distribution function of a Bernoulli distribution
LogNormal

Create a LogNormal distribution
Weibull

Create a Weibull distribution
pdf.NegativeBinomial

Evaluate the probability mass function of a NegativeBinomial distribution
pdf.Multinomial

Evaluate the probability mass function of a Multinomial distribution
cdf.NegativeBinomial

Evaluate the cumulative distribution function of a negative binomial distribution
cdf.ChiSquare

Evaluate the cumulative distribution function of a chi square distribution
Tukey

Create a Tukey distribution
cdf.FisherF

Evaluate the cumulative distribution function of an F distribution
cdf.Exponential

Evaluate the cumulative distribution function of a Exponential distribution
Uniform

Create a Continuous Uniform distribution
cdf.Weibull

Evaluate the cumulative distribution function of a Weibull distribution
cdf.Categorical

Evaluate the cumulative distribution function of a Categorical distribution
cdf.Cauchy

Evaluate the cumulative distribution function of a Cauchy distribution
NegativeBinomial

Create a Negative Binomial distribution
cdf.Uniform

Evaluate the cumulative distribution function of a continuous Uniform distribution
Normal

Create a Normal distribution
quantile.Binomial

Determine quantiles of a Binomial distribution
quantile.Categorical

Determine quantiles of a Categorical discrete distribution
cdf.Gamma

Evaluate the cumulative distribution function of a Gamma distribution
cdf.LogNormal

Evaluate the cumulative distribution function of a LogNormal distribution
fit_mle.Gamma

Fit a Gamma distribution to data
fit_mle.Geometric

Fit a Geometric distribution to data
cdf.Normal

Evaluate the cumulative distribution function of a Normal distribution
quantile.Logistic

Determine quantiles of a Logistic distribution
log_likelihood

Compute the log-likelihood of a probability distribution given data
cdf.Logistic

Evaluate the cumulative distribution function of a Logistic distribution
distributions3-package

distributions3: Probability Distributions as S3 Objects
cdf.Binomial

Evaluate the cumulative distribution function of a Binomial distribution
quantile.NegativeBinomial

Determine quantiles of a NegativeBinomial distribution
cdf.Beta

Evaluate the cumulative distribution function of a Beta distribution
pdf.Binomial

Evaluate the probability mass function of a Binomial distribution
pdf.Beta

Evaluate the probability mass function of a Beta distribution
cdf.StudentsT

Evaluate the cumulative distribution function of a StudentsT distribution
cdf.Poisson

Evaluate the cumulative distribution function of a Poisson distribution
cdf

Evaluate the probability density of a probability distribution
random.Binomial

Draw a random sample from a Binomial distribution
random.Beta

Draw a random sample from a Beta distribution
pdf.Bernoulli

Evaluate the probability mass function of a Bernoulli distribution
pdf.Poisson

Evaluate the probability mass function of a Poisson distribution
pdf.Normal

Evaluate the probability mass function of a Normal distribution
cdf.Tukey

Evaluate the cumulative distribution function of a Tukey distribution
fit_mle.LogNormal

Fit a Log Normal distribution to data
fit_mle.Exponential

Fit an Exponential distribution to data
is_distribution

Is an object a distribution?
random.Multinomial

Draw a random sample from a Multinomial distribution
pdf.Categorical

Evaluate the probability mass function of a Categorical discrete distribution
fit_mle.Bernoulli

Fit a Bernoulli distribution to data
fit_mle.Binomial

Fit a Binomial distribution to data
random.NegativeBinomial

Draw a random sample from a negative binomial distribution
likelihood

Compute the likelihood of a probability distribution given data
suff_stat

Compute the sufficient statistics of a distribution from data
pdf.Gamma

Evaluate the probability mass function of a Gamma distribution
pdf

Evaluate the probability density of a probability distribution
pdf.Cauchy

Evaluate the probability mass function of a Cauchy distribution
pdf.FisherF

Evaluate the probability mass function of an F distribution
pdf.StudentsT

Evaluate the probability mass function of a StudentsT distribution
pdf.ChiSquare

Evaluate the probability mass function of a chi square distribution
fit_mle.Poisson

Fit an Poisson distribution to data
fit_mle

Fit a distribution to data
fit_mle.Normal

Fit a Normal distribution to data
pdf.Geometric

Evaluate the probability mass function of a Geometric distribution
pdf.HyperGeometric

Evaluate the probability mass function of a HyperGeometric distribution
quantile.Geometric

Determine quantiles of a Geometric distribution
quantile.HyperGeometric

Determine quantiles of a HyperGeometric distribution
quantile.Normal

Determine quantiles of a Normal distribution
quantile.Gamma

Determine quantiles of a Gamma distribution
quantile.LogNormal

Determine quantiles of a LogNormal distribution
quantile

Find the quantile of a probability distribution
pdf.LogNormal

Evaluate the probability mass function of a LogNormal distribution
quantile.Bernoulli

Determine quantiles of a Bernoulli distribution
pdf.Logistic

Evaluate the probability mass function of a Logistic distribution
pdf.Exponential

Evaluate the probability mass function of a Exponential distribution
quantile.StudentsT

Determine quantiles of a StudentsT distribution
pdf.Uniform

Evaluate the probability mass function of a continuous Uniform distribution
quantile.Poisson

Determine quantiles of a Poisson distribution
random.StudentsT

Draw a random sample from a StudentsT distribution
random

Draw a random sample from a probability distribution
random.ChiSquare

Draw a random sample from a chi square distribution
random.Exponential

Draw a random sample from a Exponential distribution
random.LogNormal

Draw a random sample from a LogNormal distribution
quantile.Cauchy

Determine quantiles of a Cauchy distribution
quantile.Beta

Determine quantiles of a Beta distribution
quantile.ChiSquare

Determine quantiles of a chi square distribution
random.Logistic

Draw a random sample from a Logistic distribution
suff_stat.Normal

Compute the sufficient statistics for a Normal distribution from data
pdf.Weibull

Evaluate the probability mass function of a Weibull distribution
random.Bernoulli

Draw a random sample from a Bernoulli distribution
quantile.Exponential

Determine quantiles of a Exponential distribution
quantile.Weibull

Determine quantiles of a Weibull distribution
quantile.FisherF

Determine quantiles of an F distribution
random.Geometric

Draw a random sample from a Geometric distribution
quantile.Tukey

Determine quantiles of a Tukey distribution
quantile.Uniform

Determine quantiles of a continuous Uniform distribution
random.HyperGeometric

Draw a random sample from a HyperGeometric distribution
random.Normal

Draw a random sample from a Normal distribution
random.Poisson

Draw a random sample from a Poisson distribution
suff_stat.Poisson

Compute the sufficient statistics of an Poisson distribution from data
random.Categorical

Draw a random sample from a Categorical distribution
suff_stat.Gamma

Compute the sufficient statistics for a bernoulli distribution from data
random.Gamma

Draw a random sample from a Gamma distribution
suff_stat.Exponential

Compute the sufficient statistics of an Exponential distribution from data
random.Uniform

Draw a random sample from a continuous Uniform distribution
random.FisherF

Draw a random sample from an F distribution
random.Weibull

Draw a random sample from a Weibull distribution
random.Cauchy

Draw a random sample from a Cauchy distribution
suff_stat.Bernoulli

Compute the sufficient statistics for a Bernoulli distribution from data
suff_stat.Binomial

Compute the sufficient statistics for the Binomial distribution from data
suff_stat.Geometric

Compute the sufficient statistics for the Geometric distribution from data
suff_stat.LogNormal

Compute the sufficient statistics for a Log-normal distribution from data