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

Copyright(c) 2009 Bryan O'Sullivan
LicenseBSD3
Maintainerbos@serpentine.com
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell98

Statistics.Distribution

Contents

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 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 (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

maybeEntropy :: d -> Maybe Double Source

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 (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

findRoot Source

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.