Skip to content

HMC

Defined in: samplers/hmc-vector.js:24

Vector-aware Hamiltonian Monte Carlo.

Unlike the scalar HamiltonianMC/NUTS in this package, this sampler flattens all free variables - scalars and 1-D vectors alike - into a single real vector and runs leapfrog dynamics on it. That makes it suitable for hierarchical models whose parameters are vectors (per-group effects, per-site plateaus, …) and for likelihoods defined through Model#potential (a deterministic mean computed from the latent variables and data).

Step size is tuned during warm-up by dual averaging (Hoffman & Gelman, 2014) toward a target acceptance rate; a unit mass matrix is used.

Example

const hmc = new HMC({ stepSize: 0.05, nSteps: 20 });
const { trace } = hmc.sample(model, { slope: 0, intercept: 0, sigma: 1 },
{ nSamples: 1000, nWarmup: 500 });

Constructors

Constructor

new HMC(opts?): HMC

Defined in: samplers/hmc-vector.js:34

Create a vector-aware HMC sampler.

Parameters

opts?
adapt?

boolean = true

Adapt the step size during warm-up.

nSteps?

number = 20

Leapfrog steps per proposal.

seed?

number

Optional RNG seed for reproducibility.

stepSize?

number = 0.05

Initial leapfrog step size (adapted in warm-up).

targetAccept?

number = 0.8

Target acceptance for step-size adaptation.

Returns

HMC

Properties

adapt

adapt: boolean

Defined in: samplers/hmc-vector.js:38


nSteps

nSteps: number

Defined in: samplers/hmc-vector.js:36


seed

seed: number

Defined in: samplers/hmc-vector.js:39


stepSize

stepSize: number

Defined in: samplers/hmc-vector.js:35


targetAccept

targetAccept: number

Defined in: samplers/hmc-vector.js:37

Methods

getParams()

getParams(): object

Defined in: samplers/hmc-vector.js:56

The constructor options, so a worker can rebuild this sampler.

Returns

object

adapt

adapt: boolean

nSteps

nSteps: number

stepSize

stepSize: number

targetAccept

targetAccept: number


sample()

sample(userModel, userInitialValues, options?): Promise<any> | { acceptanceRate: number; divergences: number; specs: any; stepSize: number; trace: { }; }

Defined in: samplers/hmc-vector.js:60

Parameters

userModel

any

userInitialValues

any

options?

Returns

Promise<any> | { acceptanceRate: number; divergences: number; specs: any; stepSize: number; trace: { }; }


sampleChains()

sampleChains(model, initial, opts?): any[]

Defined in: samplers/hmc-vector.js:217

Run several independent chains (sequentially) from (optionally) jittered starting points. Returns an array of single-chain results, ready for summary.

Parameters

model

Model

initial

any

Starting values, or a function returning starting values for each chain index.

opts?

any = {}

As HMC#sample, plus chains (default 4).

Returns

any[]

per-chain results