| License | GPL-3 |
|---|---|
| Maintainer | hackage@mail.kevinl.io |
| Stability | experimental |
| Safe Haskell | Safe |
| Language | Haskell2010 |
Data.Stochastic
Description
This module contains convenience functions to
construct Samples or StochProcesses corresponding
to several probability distributions.
It also contains functions that can be used for
running the constructed StochProcesses 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 Sequences 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 Doubles that always
returns the same value when sampled, and records that value.
discreteProcess :: [(Double, Double)] -> StochProcess Source #
StochProcess sample for a discrete distribution over Doubles
that records the value sampled from the normal distribution.
uniformProcess :: [Double] -> StochProcess Source #
StochProcess sample for a uniform distribution over Doubles
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