Safe Haskell | None |
---|---|
Language | Haskell2010 |
Metropolis-Hastings inference
Synopsis
- mh :: (FromSTrace env, es ~ '[ObsReader env, Dist, State STrace, State LPTrace, Observe, Sample]) => Int -> (b -> Model env es a) -> (b, Env env) -> [Tag] -> Sampler [Env env]
- mhStep :: es ~ '[ObsReader env, Dist, State STrace, State LPTrace, Observe, Sample] => Env env -> Model env es a -> [Tag] -> [((a, STrace), LPTrace)] -> Sampler [((a, STrace), LPTrace)]
- runMH :: es ~ '[ObsReader env, Dist, State STrace, State LPTrace, Observe, Sample] => Env env -> STrace -> Addr -> Model env es a -> Sampler ((a, STrace), LPTrace)
- traceLPs :: (Member (State LPTrace) es, Member Sample es, Member Observe es) => Prog es a -> Prog es a
- handleSamp :: STrace -> Addr -> Prog '[Sample] a -> Sampler a
- lookupSample :: Member a PrimVal => STrace -> PrimDist a -> Addr -> Addr -> Sampler a
- accept :: Addr -> STrace -> STrace -> LPTrace -> LPTrace -> IO Double
Documentation
:: (FromSTrace env, es ~ '[ObsReader env, Dist, State STrace, State LPTrace, Observe, Sample]) | |
=> Int | Number of MH iterations |
-> (b -> Model env es a) | Model awaiting an input |
-> (b, Env env) | (Model input, input model environment) |
-> [Tag] | An optional list of observable variable names (strings) to specify sample sites of interest. |
-> Sampler [Env env] |
|
Top-level wrapper for Metropolis-Hastings (MH) inference
:: es ~ '[ObsReader env, Dist, State STrace, State LPTrace, Observe, Sample] | |
=> Env env | Model environment |
-> Model env es a | Model |
-> [Tag] | Tags indicating sample sites of interest |
-> [((a, STrace), LPTrace)] | Trace of previous MH outputs |
-> Sampler [((a, STrace), LPTrace)] | Updated trace of MH outputs |
Perform one step of MH
:: es ~ '[ObsReader env, Dist, State STrace, State LPTrace, Observe, Sample] | |
=> Env env | Model environment |
-> STrace | Sample trace of previous MH iteration |
-> Addr | Sample address of interest |
-> Model env es a | Model |
-> Sampler ((a, STrace), LPTrace) | Sampler generating: (model output, sample trace, log-probability trace) |
Handler for one iteration of MH
traceLPs :: (Member (State LPTrace) es, Member Sample es, Member Observe es) => Prog es a -> Prog es a Source #
Handler for tracing log-probabilities for each Sample
and Observe
operation
:: STrace | Sample trace |
-> Addr | Address of the proposal sample site for the current MH iteration |
-> Prog '[Sample] a | Probabilistic program with just |
-> Sampler a |
Handler for Sample
that selectively reuses old samples or draws new ones
:: Member a PrimVal | |
=> STrace | Sample trace |
-> PrimDist a | Distribution to sample from |
-> Addr | Address of current sample site |
-> Addr | Address of proposal sample site |
-> Sampler a |
For a given address, look up a sampled value from a sample trace, returning it only if the primitive distribution it was sampled from matches the current one.