statistics-0.13.2.3: A library of statistical types, data, and functions

Statistics.Distribution

Description

Types classes for probability distrubutions

Synopsis

# Type classes

class Distribution d where Source

Type class common to all distributions. Only c.d.f. could be defined for both discrete and continous distributions.

Minimal complete definition

cumulative

Methods

cumulative :: d -> Double -> Double Source

Cumulative distribution function. The probability that a random variable X is less or equal than x, i.e. P(Xx). Cumulative should be defined for infinities as well:

```cumulative d +∞ = 1
cumulative d -∞ = 0```

complCumulative :: d -> Double -> Double Source

One's complement of cumulative distibution:

`complCumulative d x = 1 - cumulative d x`

It's useful when one is interested in P(X<x) and expression on the right side begin to lose precision. This function have default implementation but implementors are encouraged to provide more precise implementation.

class Distribution d => DiscreteDistr d where Source

Discrete probability distribution.

Minimal complete definition

Nothing

Methods

probability :: d -> Int -> Double Source

Probability of n-th outcome.

logProbability :: d -> Int -> Double Source

Logarithm of probability of n-th outcome

class Distribution d => ContDistr d where Source

Continuous probability distributuion.

Minimal complete definition is `quantile` and either `density` or `logDensity`.

Minimal complete definition

quantile

Methods

density :: d -> Double -> Double Source

Probability density function. Probability that random variable X lies in the infinitesimal interval [x,x+δx) equal to density(x)⋅δx

quantile :: d -> Double -> Double Source

Inverse of the cumulative distribution function. The value x for which P(Xx) = p. If probability is outside of [0,1] range function should call `error`

logDensity :: d -> Double -> Double Source

Natural logarithm of density.

## Distribution statistics

class Distribution d => MaybeMean d where Source

Type class for distributions with mean. `maybeMean` should return `Nothing` if it's undefined for current value of data

Methods

maybeMean :: d -> Maybe Double Source

class MaybeMean d => Mean d where Source

Type class for distributions with mean. If distribution have finite mean for all valid values of parameters it should be instance of this type class.

Methods

mean :: d -> Double Source

class MaybeMean d => MaybeVariance d where Source

Type class for distributions with variance. If variance is undefined for some parameter values both `maybeVariance` and `maybeStdDev` should return Nothing.

Minimal complete definition is `maybeVariance` or `maybeStdDev`

Minimal complete definition

Nothing

class (Mean d, MaybeVariance d) => Variance d where Source

Type class for distributions with variance. If distibution have finite variance for all valid parameter values it should be instance of this type class.

Minimal complete definition is `variance` or `stdDev`

Minimal complete definition

Nothing

Methods

variance :: d -> Double Source

stdDev :: d -> Double Source

class Distribution d => MaybeEntropy d where Source

Type class for distributions with entropy, meaning Shannon entropy in the case of a discrete distribution, or differential entropy in the case of a continuous one. `maybeEntropy` should return `Nothing` if entropy is undefined for the chosen parameter values.

Methods

Returns the entropy of a distribution, in nats, if such is defined.

class MaybeEntropy d => Entropy d where Source

Type class for distributions with entropy, meaning Shannon entropy in the case of a discrete distribution, or differential entropy in the case of a continuous one. If the distribution has well-defined entropy for all valid parameter values then it should be an instance of this type class.

Methods

entropy :: d -> Double Source

Returns the entropy of a distribution, in nats.

## Random number generation

class Distribution d => ContGen d where Source

Generate discrete random variates which have given distribution.

Methods

genContVar :: PrimMonad m => d -> Gen (PrimState m) -> m Double Source

class (DiscreteDistr d, ContGen d) => DiscreteGen d where Source

Generate discrete random variates which have given distribution. `ContGen` is superclass because it's always possible to generate real-valued variates from integer values

Methods

genDiscreteVar :: PrimMonad m => d -> Gen (PrimState m) -> m Int Source

genContinous :: (ContDistr d, PrimMonad m) => d -> Gen (PrimState m) -> m Double Source

Generate variates from continous distribution using inverse transform rule.

# Helper functions

Arguments

 :: ContDistr d => d Distribution -> Double Probability p -> Double Initial guess -> Double Lower bound on interval -> Double Upper bound on interval -> Double

Approximate the value of X for which P(x>X)=p.

This method uses a combination of Newton-Raphson iteration and bisection with the given guess as a starting point. The upper and lower bounds specify the interval in which the probability distribution reaches the value p.

sumProbabilities :: DiscreteDistr d => d -> Int -> Int -> Double Source

Sum probabilities in inclusive interval.