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