traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.Data.Probability.Class

Synopsis

Probability Classes

class (ProbType probT, Monad m) => MonadProb probT m | m -> probT where #

A probability monad, with a zero distribution and a choice operation.

Methods

choose :: ProbType probT => [(probT, m a)] -> m a #

Weighted choice from a given list of distributions.

Instances

Instances details
ProbType probT => MonadProb probT (ExpMonad probT) # 
Instance details

Defined in Traq.Data.Probability.Cont

Methods

choose :: ProbType probT => [(probT, ExpMonad probT a)] -> ExpMonad probT a #

ProbType probT => MonadProb probT (ProbList probT) # 
Instance details

Defined in Traq.Data.Probability.List

Methods

choose :: ProbType probT => [(probT, ProbList probT a)] -> ProbList probT a #

ProbType probT => MonadProb probT (Distr probT) # 
Instance details

Defined in Traq.Data.Probability.Tree

Methods

choose :: ProbType probT => [(probT, Distr probT a)] -> Distr probT a #

(ProbType probT, MonadProb probT m) => MonadProb probT (ReaderT r m) # 
Instance details

Defined in Traq.Data.Probability.Class

Methods

choose :: ProbType probT => [(probT, ReaderT r m a)] -> ReaderT r m a #

(ProbType probT, Monad m) => MonadProb probT (ProbT probT m) # 
Instance details

Defined in Traq.Data.Probability.Trans

Methods

choose :: ProbType probT => [(probT, ProbT probT m a)] -> ProbT probT m a #

class MonadProb probT m => MonadExp probT m where #

A probability monad with support for computing expectation of random variables.

Methods

expectationA :: forall f r a. (Applicative f, RVType probT r) => (a -> f r) -> m a -> f r #

compute the expectation of a random variable, by sequencing the outcomes.

Instances

Instances details
ProbType probT => MonadExp probT (ExpMonad probT) # 
Instance details

Defined in Traq.Data.Probability.Cont

Methods

expectationA :: (Applicative f, RVType probT r) => (a -> f r) -> ExpMonad probT a -> f r #

ProbType probT => MonadExp probT (ProbList probT) # 
Instance details

Defined in Traq.Data.Probability.List

Methods

expectationA :: (Applicative f, RVType probT r) => (a -> f r) -> ProbList probT a -> f r #

ProbType probT => MonadExp probT (Distr probT) # 
Instance details

Defined in Traq.Data.Probability.Tree

Methods

expectationA :: (Applicative f, RVType probT r) => (a -> f r) -> Distr probT a -> f r #

Types

type Event a = a -> Bool #

A random event: represented as a boolearn predicate function.

type ProbType probT = (Num probT, Monoidal probT) #

Representing a probability (usually double).

type RandVar a r = a -> r #

type RVType probT r = (Monoidal r, Module probT r) #

Special Distributions

zero :: MonadProb probT m => m a #

null/zero distribution

choose2 :: MonadProb probT m => probT -> m a -> m a -> m a #

binary weighted choice

uniform :: (MonadProb probT m, Fractional probT) => [a] -> m a #

uniform random choice from a list of values

bernoulli :: MonadProb probT m => probT -> m Bool #

Bernoulli random variable.

Properties

expectation :: forall probT r m a. (MonadExp probT m, RVType probT r) => RandVar a r -> m a -> r #

compute the expectation of a random variable.

mass :: (Num probT, MonadExp probT m, RVType probT probT) => m a -> probT #

Compute the mass or total probability of a given probability distribution.

probabilityOf :: forall probT m a. (MonadExp probT m, RVType probT probT) => Event a -> m a -> probT #

Probability of a given event.

Transforms

scale :: MonadProb probT m => probT -> m a -> m a #

Scale the probabilities by a factor s

normalize :: (Fractional probT, Eq probT, MonadExp probT m, RVType probT probT) => m a -> m a #

Normalize a distribution

conditional :: (MonadExp probT m, Fractional probT, Eq probT, RVType probT probT) => Event a -> m a -> m a #

unnormalized conditional probability distribution

postselect :: (MonadExp probT m, Fractional probT, Eq probT, RVType probT probT) => Event a -> m a -> m a #

Normalized conditional probability of an event.

Support Monad

support :: forall p m a. (MonadExp p m, Module p ()) => m a -> [a] #

Support of a distribution

outcomes :: (MonadExp p m, Eq a, RVType p p, Module p ()) => m a -> [(a, p)] #

outcomes

toDeterministicValue :: (MonadExp p m, Eq a, Module p ()) => m a -> Maybe a #