prob-fx-0.1.0.2: A library for modular probabilistic modelling
Safe HaskellNone
LanguageHaskell2010

Inference.MH

Description

Metropolis-Hastings inference.

Synopsis

Documentation

mh Source #

Arguments

:: (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]
output model environment

Top-level wrapper for Metropolis-Hastings (MH) inference

mhStep Source #

Arguments

:: 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

runMH Source #

Arguments

:: 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

handleSamp Source #

Arguments

:: 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

lookupSample Source #

Arguments

:: 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.

accept Source #

Arguments

:: Addr

address of new sampled value

-> STrace

previous MH sample trace

-> STrace

new MH sample trace

-> LPTrace

previous MH log-probability trace

-> LPTrace

current MH log-probability trace

-> IO Double 

Compute acceptance probability