Skip to content

HMC

Defined in: mc/src/samplers/hmc-vector.js:22

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: mc/src/samplers/hmc-vector.js:31

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: mc/src/samplers/hmc-vector.js:35


nSteps

nSteps: number

Defined in: mc/src/samplers/hmc-vector.js:33


seed

seed: number

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


stepSize

stepSize: number

Defined in: mc/src/samplers/hmc-vector.js:32


targetAccept

targetAccept: number

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

Methods

sample()

sample(model, initialValues, opts?): object

Defined in: mc/src/samplers/hmc-vector.js:52

Run a single chain.

Parameters

model

Model

initialValues

any

{name: number | number[]} starting point.

opts?
nSamples?

number = 1000

nWarmup?

number = 500

progress?

boolean = false

thin?

number = 1

Returns

object

acceptanceRate

acceptanceRate: number

divergences

divergences: number

specs

specs: any[]

stepSize

stepSize: number

trace

trace: any


sampleChains()

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

Defined in: mc/src/samplers/hmc-vector.js:195

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