prob-fx-0.1.0.1: 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]

An 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)

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

handleSamp Source #

Arguments

:: STrace

Sample trace

-> Addr

Address of the proposal sample site for the current MH iteration

-> Prog '[Sample] a

Probabilistic program with just Sample left

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