License | GPL-3 |
---|---|

Maintainer | hackage@mail.kevinl.io |

Stability | experimental |

Safe Haskell | Safe |

Language | Haskell2010 |

This module contains convenience functions to
construct `Sample`

s or `StochProcess`

es corresponding
to several probability distributions.

It also contains functions that can be used for
running the constructed `StochProcess`

es and generating
datapoints, or sampling from a constructed `Sample`

.

Some examples for usage can be found here: http://kevinl.io/posts/2016-08-17-sampling-monad.html

- composeProcess :: Integral i => i -> StochProcess -> (Double -> StochProcess) -> StochProcess
- sampleProcess_ :: StochProcess -> StdGen -> Double
- sampleProcess :: StochProcess -> StdGen -> (Double, StdGen)
- sampleProcessN :: Integral i => i -> StochProcess -> StdGen -> Seq Double
- runProcess :: StochProcess -> StdGen -> (Seq Double, StdGen)
- runProcess_ :: StochProcess -> StdGen -> Seq Double
- runProcessN :: Integral i => i -> StochProcess -> StdGen -> Seq (Seq Double)
- normalProcess :: Mean -> StDev -> StochProcess
- certainProcess :: Double -> StochProcess
- discreteProcess :: [(Double, Double)] -> StochProcess
- uniformProcess :: [Double] -> StochProcess
- mkSample :: (RandomGen g, Sampleable d) => d a -> Sample g d a
- normal :: RandomGen g => Mean -> StDev -> Sample g Distribution Double
- bernoulli :: RandomGen g => Double -> Sample g Distribution Bool
- discrete :: RandomGen g => [(a, Double)] -> Sample g Distribution a
- uniform :: RandomGen g => [a] -> Sample g Distribution a
- certain :: (RandomGen g, Sampleable d) => a -> Sample g d a
- sample :: (RandomGen g, Sampleable d) => Sample g d a -> g -> (a, g)
- sample_ :: (RandomGen g, Sampleable d) => Sample g d a -> g -> a
- sampleN :: (RandomGen g, Sampleable d, Integral i) => i -> Sample g d a -> g -> Seq a
- sampleIO :: Sampleable d => Sample StdGen d a -> IO (a, StdGen)
- sampleIO_ :: Sampleable d => Sample StdGen d a -> IO a
- sampleION :: (Sampleable d, Integral i) => i -> Sample StdGen d a -> IO (Seq a)

# Documentation

composeProcess :: Integral i => i -> StochProcess -> (Double -> StochProcess) -> StochProcess Source #

Function to construct a `StochProcess`

computation
given an initial computation, a `StochProcess`

function,
and number of times to apply the function with bind.

sampleProcess_ :: StochProcess -> StdGen -> Double Source #

Sample from the `StochProcess`

computation, discarding
the new `RandomGen`

.

sampleProcess :: StochProcess -> StdGen -> (Double, StdGen) Source #

Sample from the `StochProcess`

computation, returning
the value of type a and a new `RandomGen`

.

sampleProcessN :: Integral i => i -> StochProcess -> StdGen -> Seq Double Source #

Get a certain number of samples from the `StochProcess`

computation.

runProcess :: StochProcess -> StdGen -> (Seq Double, StdGen) Source #

Run a `StochProcess`

computation and retrieve the recorded
results along with a new `RandomGen`

.

runProcess_ :: StochProcess -> StdGen -> Seq Double Source #

Run a `StochProcess`

computation and retrieve the recorded
results, discarding the new `RandomGen`

.

runProcessN :: Integral i => i -> StochProcess -> StdGen -> Seq (Seq Double) Source #

Runs a `StochProcess`

computation a given number times
and produces a `Sequence`

of `Sequence`

s of Doubles.

normalProcess :: Mean -> StDev -> StochProcess Source #

`StochProcess`

sample for a normal distribution that records
the value sampled from the normal distribution.

certainProcess :: Double -> StochProcess Source #

`StochProcess`

sample for a distribution over `Double`

s that always
returns the same value when sampled, and records that value.

discreteProcess :: [(Double, Double)] -> StochProcess Source #

`StochProcess`

sample for a discrete distribution over `Double`

s
that records the value sampled from the normal distribution.

uniformProcess :: [Double] -> StochProcess Source #

`StochProcess`

sample for a uniform distribution over `Double`

s
that records the value sampled from it.

mkSample :: (RandomGen g, Sampleable d) => d a -> Sample g d a Source #

Function to make a `Sample`

out of a provided
`Distribution`

.

bernoulli :: RandomGen g => Double -> Sample g Distribution Bool Source #

`Sample`

for a Bernoulli distribution with given
probability to produce True.

uniform :: RandomGen g => [a] -> Sample g Distribution a Source #

`Sample`

for a uniform distribution
given a list of provided values.

certain :: (RandomGen g, Sampleable d) => a -> Sample g d a Source #

`Sample`

for a distribution where we always sample
the same value.

sampleN :: (RandomGen g, Sampleable d, Integral i) => i -> Sample g d a -> g -> Seq a Source #

Get a certain number of samples from the `Sample`