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] | 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) | (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 | |
-> 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.