goal-probability-0.20: Optimization on manifolds of probability distributions with Goal
Safe HaskellNone
LanguageHaskell2010

Goal.Probability.Statistical

Description

Core types, classes, and functions for working with manifolds of probability distributions.

Synopsis

Random

newtype Random a Source #

A random variable.

Constructors

Random (forall s. Gen s -> ST s a) 

Instances

Instances details
Monad Random Source # 
Instance details

Defined in Goal.Probability.Statistical

Methods

(>>=) :: Random a -> (a -> Random b) -> Random b #

(>>) :: Random a -> Random b -> Random b #

return :: a -> Random a #

Functor Random Source # 
Instance details

Defined in Goal.Probability.Statistical

Methods

fmap :: (a -> b) -> Random a -> Random b #

(<$) :: a -> Random b -> Random a #

Applicative Random Source # 
Instance details

Defined in Goal.Probability.Statistical

Methods

pure :: a -> Random a #

(<*>) :: Random (a -> b) -> Random a -> Random b #

liftA2 :: (a -> b -> c) -> Random a -> Random b -> Random c #

(*>) :: Random a -> Random b -> Random b #

(<*) :: Random a -> Random b -> Random a #

class Manifold x => Statistical x Source #

A Manifold is Statistical if it is a set of probability distributions over a particular sample space, where the sample space is a set of the specified SamplePoints.

Associated Types

type SamplePoint x :: Type Source #

Instances

Instances details
Statistical VonMises Source # 
Instance details

Defined in Goal.Probability.Distributions

Associated Types

type SamplePoint VonMises Source #

Statistical Poisson Source # 
Instance details

Defined in Goal.Probability.Distributions

Associated Types

type SamplePoint Poisson Source #

Statistical Bernoulli Source # 
Instance details

Defined in Goal.Probability.Distributions

Associated Types

type SamplePoint Bernoulli Source #

Statistical NormalMean Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

Associated Types

type SamplePoint NormalMean Source #

Statistical x => Statistical [x] Source # 
Instance details

Defined in Goal.Probability.Statistical

Associated Types

type SamplePoint [x] Source #

KnownNat k => Statistical (Dirichlet k) Source # 
Instance details

Defined in Goal.Probability.Distributions

Associated Types

type SamplePoint (Dirichlet k) Source #

KnownNat n => Statistical (Categorical n) Source # 
Instance details

Defined in Goal.Probability.Distributions

Associated Types

type SamplePoint (Categorical n) Source #

KnownNat n => Statistical (Binomial n) Source # 
Instance details

Defined in Goal.Probability.Distributions

Associated Types

type SamplePoint (Binomial n) Source #

KnownNat n => Statistical (MVNMean n) Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

Associated Types

type SamplePoint (MVNMean n) Source #

(Statistical x, Statistical y) => Statistical (x, y) Source # 
Instance details

Defined in Goal.Probability.Statistical

Associated Types

type SamplePoint (x, y) Source #

(Statistical x, KnownNat k, Storable (SamplePoint x)) => Statistical (Replicated k x) Source # 
Instance details

Defined in Goal.Probability.Statistical

Associated Types

type SamplePoint (Replicated k x) Source #

(Statistical l, Manifold s) => Statistical (LocationShape l s) Source # 
Instance details

Defined in Goal.Probability.Distributions

Associated Types

type SamplePoint (LocationShape l s) Source #

type Sample x = [SamplePoint x] Source #

A Sample is a list of SamplePoints.

realize :: Random a -> IO a Source #

Turn a random variable into an IO action.

Initializiation

initialize :: (Manifold x, Generative d y, SamplePoint y ~ Double) => (d # y) -> Random (c # x) Source #

Generates a random point on the target Manifold by generating random samples from the given distribution.

uniformInitialize :: Manifold x => (Double, Double) -> Random (Point c x) Source #

Generates an initial point on the target Manifold by generating uniform samples from the given vector of bounds.

uniformInitialize' :: Manifold x => Vector (Dimension x) (Double, Double) -> Random (Point c x) Source #

Generates an initial point on the target Manifold by generating uniform samples from the given vector of bounds.

Properties of Distributions

class Statistical x => Generative c x where Source #

A distribution is Generative if we can sample from it. Generation is powered by mwc-random.

Minimal complete definition

Nothing

Methods

samplePoint :: Point c x -> Random (SamplePoint x) Source #

sample :: Int -> Point c x -> Random (Sample x) Source #

Instances

Instances details
Transition c Source Poisson => Generative c Poisson Source # 
Instance details

Defined in Goal.Probability.Distributions

Transition c Source Bernoulli => Generative c Bernoulli Source # 
Instance details

Defined in Goal.Probability.Distributions

Transition c Source Normal => Generative c Normal Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

Transition c Source CoMPoisson => Generative c CoMPoisson Source # 
Instance details

Defined in Goal.Probability.Distributions.CoMPoisson

Generative Natural VonMises Source # 
Instance details

Defined in Goal.Probability.Distributions

Generative Source VonMises Source # 
Instance details

Defined in Goal.Probability.Distributions

(KnownNat k, Transition c Source (Dirichlet k)) => Generative c (Dirichlet k) Source # 
Instance details

Defined in Goal.Probability.Distributions

Methods

samplePoint :: Point c (Dirichlet k) -> Random (SamplePoint (Dirichlet k)) Source #

sample :: Int -> Point c (Dirichlet k) -> Random (Sample (Dirichlet k)) Source #

(KnownNat n, Transition c Source (Categorical n)) => Generative c (Categorical n) Source # 
Instance details

Defined in Goal.Probability.Distributions

(KnownNat n, Transition c Source (Binomial n)) => Generative c (Binomial n) Source # 
Instance details

Defined in Goal.Probability.Distributions

Methods

samplePoint :: Point c (Binomial n) -> Random (SamplePoint (Binomial n)) Source #

sample :: Int -> Point c (Binomial n) -> Random (Sample (Binomial n)) Source #

(KnownNat n, KnownNat (Triangular n), Transition c Source (MultivariateNormal n)) => Generative c (MultivariateNormal n) Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

(Generative c x, Generative c y) => Generative c (x, y) Source # 
Instance details

Defined in Goal.Probability.Statistical

Methods

samplePoint :: Point c (x, y) -> Random (SamplePoint (x, y)) Source #

sample :: Int -> Point c (x, y) -> Random (Sample (x, y)) Source #

(KnownNat k, Generative c x, Storable (SamplePoint x)) => Generative c (Replicated k x) Source # 
Instance details

Defined in Goal.Probability.Statistical

Methods

samplePoint :: Point c (Replicated k x) -> Random (SamplePoint (Replicated k x)) Source #

sample :: Int -> Point c (Replicated k x) -> Random (Sample (Replicated k x)) Source #

class Statistical x => AbsolutelyContinuous c x where Source #

The distributions \(P \in \mathcal M\) in a Statistical Manifold \(\mathcal M\) are AbsolutelyContinuous if there is a reference measure \(\mu\) and a function \(p\) such that \(P(A) = \int_A p d\mu\). We refer to \(p(x)\) as the density of the probability distribution.

Minimal complete definition

Nothing

Methods

logDensities :: Point c x -> Sample x -> [Double] Source #

densities :: Point c x -> Sample x -> [Double] Source #

Instances

Instances details
AbsolutelyContinuous Mean Poisson Source # 
Instance details

Defined in Goal.Probability.Distributions

AbsolutelyContinuous Mean Bernoulli Source # 
Instance details

Defined in Goal.Probability.Distributions

AbsolutelyContinuous Mean Normal Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

AbsolutelyContinuous Natural VonMises Source # 
Instance details

Defined in Goal.Probability.Distributions

AbsolutelyContinuous Natural Poisson Source # 
Instance details

Defined in Goal.Probability.Distributions

AbsolutelyContinuous Natural Bernoulli Source # 
Instance details

Defined in Goal.Probability.Distributions

AbsolutelyContinuous Natural Normal Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

AbsolutelyContinuous Natural CoMPoisson Source # 
Instance details

Defined in Goal.Probability.Distributions.CoMPoisson

AbsolutelyContinuous Source VonMises Source # 
Instance details

Defined in Goal.Probability.Distributions

AbsolutelyContinuous Source Poisson Source # 
Instance details

Defined in Goal.Probability.Distributions

AbsolutelyContinuous Source Bernoulli Source # 
Instance details

Defined in Goal.Probability.Distributions

AbsolutelyContinuous Source Normal Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

KnownNat n => AbsolutelyContinuous Mean (Categorical n) Source # 
Instance details

Defined in Goal.Probability.Distributions

KnownNat n => AbsolutelyContinuous Mean (Binomial n) Source # 
Instance details

Defined in Goal.Probability.Distributions

Methods

logDensities :: Point Mean (Binomial n) -> Sample (Binomial n) -> [Double] Source #

densities :: Point Mean (Binomial n) -> Sample (Binomial n) -> [Double] Source #

KnownNat k => AbsolutelyContinuous Natural (Dirichlet k) Source # 
Instance details

Defined in Goal.Probability.Distributions

KnownNat n => AbsolutelyContinuous Natural (Categorical n) Source # 
Instance details

Defined in Goal.Probability.Distributions

KnownNat n => AbsolutelyContinuous Natural (Binomial n) Source # 
Instance details

Defined in Goal.Probability.Distributions

Methods

logDensities :: Point Natural (Binomial n) -> Sample (Binomial n) -> [Double] Source #

densities :: Point Natural (Binomial n) -> Sample (Binomial n) -> [Double] Source #

(KnownNat n, KnownNat (Triangular n)) => AbsolutelyContinuous Natural (MultivariateNormal n) Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

KnownNat k => AbsolutelyContinuous Source (Dirichlet k) Source # 
Instance details

Defined in Goal.Probability.Distributions

KnownNat n => AbsolutelyContinuous Source (Categorical n) Source # 
Instance details

Defined in Goal.Probability.Distributions

KnownNat n => AbsolutelyContinuous Source (Binomial n) Source # 
Instance details

Defined in Goal.Probability.Distributions

Methods

logDensities :: Point Source (Binomial n) -> Sample (Binomial n) -> [Double] Source #

densities :: Point Source (Binomial n) -> Sample (Binomial n) -> [Double] Source #

(KnownNat n, KnownNat (Triangular n)) => AbsolutelyContinuous Source (MultivariateNormal n) Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

(AbsolutelyContinuous c x, AbsolutelyContinuous c y) => AbsolutelyContinuous c (x, y) Source # 
Instance details

Defined in Goal.Probability.Statistical

Methods

logDensities :: Point c (x, y) -> Sample (x, y) -> [Double] Source #

densities :: Point c (x, y) -> Sample (x, y) -> [Double] Source #

(KnownNat k, Storable (SamplePoint x), AbsolutelyContinuous c x) => AbsolutelyContinuous c (Replicated k x) Source # 
Instance details

Defined in Goal.Probability.Statistical

Methods

logDensities :: Point c (Replicated k x) -> Sample (Replicated k x) -> [Double] Source #

densities :: Point c (Replicated k x) -> Sample (Replicated k x) -> [Double] Source #

(Statistical l, Statistical s, Product (LocationShape l s), Storable (SamplePoint s), SamplePoint l ~ SamplePoint s, AbsolutelyContinuous c (LocationShape l s), KnownNat n) => AbsolutelyContinuous c (LocationShape (Replicated n l) (Replicated n s)) Source # 
Instance details

Defined in Goal.Probability.Distributions

Methods

logDensities :: Point c (LocationShape (Replicated n l) (Replicated n s)) -> Sample (LocationShape (Replicated n l) (Replicated n s)) -> [Double] Source #

densities :: Point c (LocationShape (Replicated n l) (Replicated n s)) -> Sample (LocationShape (Replicated n l) (Replicated n s)) -> [Double] Source #

class KnownNat (Cardinality x) => Discrete x where Source #

Probability distributions for which the sample space is countable. This affords brute force computation of expectations.

Associated Types

type Cardinality x :: Nat Source #

Methods

sampleSpace :: Proxy x -> Sample x Source #

Instances

Instances details
Discrete Bernoulli Source # 
Instance details

Defined in Goal.Probability.Distributions

Associated Types

type Cardinality Bernoulli :: Nat Source #

KnownNat n => Discrete (Categorical n) Source # 
Instance details

Defined in Goal.Probability.Distributions

Associated Types

type Cardinality (Categorical n) :: Nat Source #

KnownNat n => Discrete (Binomial n) Source # 
Instance details

Defined in Goal.Probability.Distributions

Associated Types

type Cardinality (Binomial n) :: Nat Source #

pointSampleSpace :: forall c x. Discrete x => (c # x) -> Sample x Source #

Convenience function for getting the sample space of a Discrete probability distribution.

expectation :: forall c x. (AbsolutelyContinuous c x, Discrete x) => Point c x -> (SamplePoint x -> Double) -> Double Source #

expectation computes the brute force expected value of a Finite set given an appropriate density.

Maximum Likelihood Estimation

class Statistical x => MaximumLikelihood c x where Source #

mle computes the MaximumLikelihood estimator.

Methods

mle :: Sample x -> c # x Source #

Instances

Instances details
Transition Mean c Poisson => MaximumLikelihood c Poisson Source # 
Instance details

Defined in Goal.Probability.Distributions

Methods

mle :: Sample Poisson -> c # Poisson Source #

Transition Mean c Bernoulli => MaximumLikelihood c Bernoulli Source # 
Instance details

Defined in Goal.Probability.Distributions

Transition Mean c Normal => MaximumLikelihood c Normal Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

Methods

mle :: Sample Normal -> c # Normal Source #

(KnownNat n, Transition Mean c (Categorical n)) => MaximumLikelihood c (Categorical n) Source # 
Instance details

Defined in Goal.Probability.Distributions

Methods

mle :: Sample (Categorical n) -> c # Categorical n Source #

(KnownNat n, Transition Mean c (Binomial n)) => MaximumLikelihood c (Binomial n) Source # 
Instance details

Defined in Goal.Probability.Distributions

Methods

mle :: Sample (Binomial n) -> c # Binomial n Source #

(KnownNat n, Transition Mean c (MultivariateNormal n)) => MaximumLikelihood c (MultivariateNormal n) Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

class Manifold x => LogLikelihood c x s where Source #

Average log-likelihood and the differential for gradient ascent.

Methods

logLikelihood :: [s] -> (c # x) -> Double Source #

logLikelihoodDifferential :: [s] -> (c # x) -> c #* x Source #

Instances

Instances details
LogLikelihood Natural VonMises Double Source # 
Instance details

Defined in Goal.Probability.Distributions

LogLikelihood Natural Poisson Int Source # 
Instance details

Defined in Goal.Probability.Distributions

LogLikelihood Natural Bernoulli Bool Source # 
Instance details

Defined in Goal.Probability.Distributions

LogLikelihood Natural Normal Double Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

LogLikelihood Natural NormalMean Double Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

LogLikelihood Natural CoMPoisson Int Source # 
Instance details

Defined in Goal.Probability.Distributions.CoMPoisson

KnownNat n => LogLikelihood Natural (Categorical n) Int Source # 
Instance details

Defined in Goal.Probability.Distributions

KnownNat n => LogLikelihood Natural (Binomial n) Int Source # 
Instance details

Defined in Goal.Probability.Distributions

KnownNat k => LogLikelihood Natural (Dirichlet k) (Vector k Double) Source # 
Instance details

Defined in Goal.Probability.Distributions

KnownNat n => LogLikelihood Natural (MultivariateNormal n) (Vector n Double) Source # 
Instance details

Defined in Goal.Probability.Distributions.Gaussian

(KnownNat k, LogLikelihood c x s, Storable s) => LogLikelihood c (Replicated k x) (Vector k s) Source # 
Instance details

Defined in Goal.Probability.Statistical

Methods

logLikelihood :: [Vector k s] -> (c # Replicated k x) -> Double Source #

logLikelihoodDifferential :: [Vector k s] -> (c # Replicated k x) -> c #* Replicated k x Source #