-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Framework for inferring generative probabilistic models
with Gibbs sampling
--
-- bayes-stack is a framework for inference on generative probabilistic
-- models. The framework uses Gibbs sampling, although is suitable for
-- other iterative update methods.
@package bayes-stack
@version 0.2.0.1
module Data.Sequence.Chunk
-- | 'chunk n xs' splits xs into n chunks
chunk :: Int -> Seq a -> Seq (Seq a)
module Data.Random.Sequence
randomElementT :: Seq a -> RVarT m a
module BayesStack.TupleEnum
instance (Enum a, Enum b) => Enum (a, b)
module BayesStack.UniqueKey
getUniqueKey :: (Monad m, Applicative m, Ord key, Ord val) => val -> UniqueKeyT val key m key
-- | Get map of values to unique keys
getValueMap :: (Monad m, Applicative m, Ord key, Ord val) => UniqueKeyT val key m (Map val key)
-- | Get map of unique keys to values
getKeyMap :: (Monad m, Applicative m, Ord key, Ord val) => UniqueKeyT val key m (Map key val)
mapTraversable :: (Traversable t, Ord key, Ord val) => [key] -> t val -> (t key, Map key val)
-- | 'UniqueKey val key' is a monad for a calculation of a mapping unique
-- keys key onto values val
type UniqueKey val key = UniqueKeyT val key Identity
data UniqueKeyT val key m a
runUniqueKey :: Ord key => [key] -> UniqueKey val key a -> a
runUniqueKeyT :: (Monad m, Ord key) => [key] -> UniqueKeyT val key m a -> m a
-- | Run a UniqueKey, returning the result and the associated key
-- map
runUniqueKey' :: (Ord key, Ord val) => [key] -> UniqueKey val key a -> (a, Map key val)
-- | Run a UniqueKeyT, returning the result and the associated key
-- map
runUniqueKeyT' :: (Monad m, Applicative m, Ord key, Ord val) => [key] -> UniqueKeyT val key m a -> m (a, Map key val)
instance Monad m => Monad (UniqueKeyT val key m)
instance (Monad m, Functor m) => Applicative (UniqueKeyT val key m)
instance Functor m => Functor (UniqueKeyT val key m)
instance MonadTrans (UniqueKeyT val key)
module Data.Serialize.LogFloat
instance Serialize LogFloat
module Data.Serialize.EnumMap
instance (Enum k, Serialize k, Serialize v) => Serialize (EnumMap k v)
module BayesStack.Dirichlet
-- | A Dirichlet prior
data Alpha a
symAlpha :: Enum a => [a] -> Double -> Alpha a
-- | Construct an asymmetric Alpha
asymAlpha :: Enum a => EnumMap a Double -> Alpha a
-- | 'alphaDomain a' is the domain of prior a
alphaDomain :: Enum a => Alpha a -> Seq a
alphaNormalizer :: Enum a => Alpha a -> LogFloat
-- | 'sumAlpha alpha' is the sum of all alphas
sumAlpha :: Enum a => Alpha a -> Double
type DirMean a = EnumMap a Double
type DirPrecision = Double
-- | 'alphaOf alpha k' is the value of element k in prior
-- alpha
alphaOf :: Enum a => Alpha a -> a -> Double
-- | Set a particular alpha element
setAlphaOf :: Enum a => a -> Double -> Alpha a -> Alpha a
setSymAlpha :: Enum a => Double -> Alpha a -> Alpha a
-- | 'alphaToMeanPrecision a' is the mean/precision representation of the
-- prior a
alphaToMeanPrecision :: Enum a => Alpha a -> (DirMean a, DirPrecision)
-- | 'meanPrecisionToAlpha m p' is a prior with mean m and
-- precision p
meanPrecisionToAlpha :: Enum a => DirMean a -> DirPrecision -> Alpha a
-- | Symmetrize a Dirichlet prior (such that mean=0)
symmetrizeAlpha :: Enum a => Alpha a -> Alpha a
-- | Pretty-print a Dirichlet prior
prettyAlpha :: Enum a => (a -> String) -> Alpha a -> Doc
instance (Enum a, Show a) => Show (Alpha a)
instance Eq a => Eq (Alpha a)
instance Generic (Alpha a)
instance Datatype D1Alpha
instance Constructor C1_0Alpha
instance Constructor C1_1Alpha
instance Selector S1_0_0Alpha
instance Selector S1_0_1Alpha
instance Selector S1_0_2Alpha
instance Selector S1_1_0Alpha
instance Selector S1_1_1Alpha
instance Selector S1_1_2Alpha
instance (Enum a, Serialize a) => Serialize (Alpha a)
module BayesStack.Core.Gibbs
class UpdateUnit uu where type family ModelState uu type family Setting uu
fetchSetting :: UpdateUnit uu => uu -> ModelState uu -> Setting uu
evolveSetting :: UpdateUnit uu => ModelState uu -> uu -> RVar (Setting uu)
updateSetting :: UpdateUnit uu => uu -> Setting uu -> Setting uu -> ModelState uu -> ModelState uu
data WrappedUpdateUnit ms
WrappedUU :: uu -> WrappedUpdateUnit ms
gibbsUpdate :: Int -> ms -> [WrappedUpdateUnit ms] -> IO ms
module BayesStack.Core.Types
type Probability = LogFloat
class HasLikelihood p where type family LContext p a :: Constraint type instance LContext p a = ()
likelihood :: (HasLikelihood p, LContext p a) => p a -> Probability
prob :: (HasLikelihood p, LContext p a) => p a -> a -> Probability
-- | A distribution for which a full conditional factor can be produced
class FullConditionable p where type family FCContext p a :: Constraint type instance FCContext p a = ()
sampleProb :: (FullConditionable p, FCContext p a) => p a -> a -> Double
module BayesStack.Core
module BayesStack.DirMulti
-- | 'Multinom a' represents multinomial distribution over domain
-- a. Optionally, this can include a collapsed Dirichlet prior.
-- 'Multinom alpha count total' is a multinomial with Dirichlet prior
-- with symmetric parameter alpha, ...
data Multinom a
-- | Create an asymmetric Dirichlet/multinomial from items and alphas
dirMulti :: Enum a => [(a, Double)] -> Multinom a
-- | Create a symmetric Dirichlet/multinomial
symDirMulti :: Enum a => Double -> [a] -> Multinom a
-- | A multinomial without a prior
multinom :: Enum a => [(a, Double)] -> Multinom a
dmTotal :: Multinom a -> Int
dmAlpha :: Multinom a -> Alpha a
dmDomain :: Multinom a -> Seq a
setMultinom :: (Enum a, Ord a) => SetUnset -> a -> Multinom a -> Multinom a
data SetUnset
Set :: SetUnset
Unset :: SetUnset
decMultinom :: (Ord a, Enum a) => a -> Multinom a -> Multinom a
incMultinom :: (Ord a, Enum a) => a -> Multinom a -> Multinom a
prettyMultinom :: (Ord a, Enum a) => Int -> (a -> String) -> Multinom a -> Doc
-- | Update the prior of a Dirichlet/multinomial
updatePrior :: (Alpha a -> Alpha a) -> Multinom a -> Multinom a
estimatePrior :: Enum a => Double -> [Multinom a] -> Alpha a
reestimatePriors :: (Foldable f, Functor f, Enum a) => f (Multinom a) -> f (Multinom a)
reestimateSymPriors :: (Foldable f, Functor f, Enum a) => f (Multinom a) -> f (Multinom a)
probabilities :: (Ord a, Enum a) => Multinom a -> Seq (Double, a)
-- | Probabilities sorted decreasingly
decProbabilities :: (Ord a, Enum a) => Multinom a -> Seq (Double, a)
instance (Enum a, Show a) => Show (Multinom a)
instance Eq a => Eq (Multinom a)
instance Generic (Multinom a)
instance Datatype D1Multinom
instance Constructor C1_0Multinom
instance Constructor C1_1Multinom
instance Selector S1_0_0Multinom
instance Selector S1_0_1Multinom
instance Selector S1_0_2Multinom
instance Selector S1_0_3Multinom
instance Selector S1_1_0Multinom
instance Selector S1_1_1Multinom
instance Selector S1_1_2Multinom
instance Selector S1_1_3Multinom
instance FullConditionable Multinom
instance HasLikelihood Multinom
instance (Enum a, Serialize a) => Serialize (Multinom a)