HamiltonianMC
Defined in: mc/src/samplers/hmc.js:24
Hamiltonian Monte Carlo (HMC) sampler
Uses gradient information for efficient exploration of the posterior. HMC simulates Hamiltonian dynamics to propose distant states with high acceptance probability.
Hamiltonian: $$ H(\theta, p) = -\log p(\theta|y) + \frac{1}{2}p^T p $$ where $\theta$ is position (parameters), $p$ is momentum.
Leapfrog integrator preserves volume and is reversible:
- Half-step momentum: $p_{i+1/2} = p_i + \frac{\epsilon}{2}\nabla_\theta \log p(\theta_i|y)$
- Full-step position: $\theta_{i+1} = \theta_i + \epsilon p_{i+1/2}$
- Half-step momentum: $p_{i+1} = p_{i+1/2} + \frac{\epsilon}{2}\nabla_\theta \log p(\theta_{i+1}|y)$
See
Conceptual Introduction to HMC
Constructors
Constructor
new HamiltonianMC(
stepSize?,nSteps?):HamiltonianMC
Defined in: mc/src/samplers/hmc.js:37
Accepts either positional arguments or a single options object.
Parameters
stepSize?
any = 0.01
Leapfrog step size (epsilon), or an options
object { stepSize, nSteps }
nSteps?
number = 10
Number of leapfrog steps (L)
Returns
HamiltonianMC
Examples
new HamiltonianMC(0.01, 10)new HamiltonianMC({ stepSize: 0.01, nSteps: 10 })Properties
nSteps
nSteps:
number
Defined in: mc/src/samplers/hmc.js:44
stepSize
stepSize:
any
Defined in: mc/src/samplers/hmc.js:43
Methods
getParams()
getParams():
object
Defined in: mc/src/samplers/hmc.js:51
Get the sampler’s configuration.
Returns
object
nSteps
nSteps:
number
stepSize
stepSize:
number
hamiltonian()
hamiltonian(
position,momentum,model):number
Defined in: mc/src/samplers/hmc.js:106
Compute Hamiltonian (total energy)
Parameters
position
any
Current position
momentum
any
Current momentum
model
Model
The probabilistic model
Returns
number
Hamiltonian value
leapfrog()
leapfrog(
position,momentum,model):any
Defined in: mc/src/samplers/hmc.js:62
Leapfrog integrator for Hamiltonian dynamics
Parameters
position
any
Current position (parameters)
momentum
any
Current momentum
model
Model
The probabilistic model
Returns
any
New position and momentum
sample()
sample(
model,initialValues,nSamples?,burnIn?,thin?):any
Defined in: mc/src/samplers/hmc.js:133
Run HMC sampling.
The sampling controls may be passed positionally or as a single options
object. When an options object is supplied as the third argument, the
burnIn and thin positional arguments are ignored in favour of the
object’s fields.
Parameters
model
Model
The probabilistic model
initialValues
any
Initial parameter values
nSamples?
any = 1000
Number of samples, or an options object
burnIn?
number = 500
Number of burn-in samples to discard (positional form)
thin?
number = 1
Thinning interval (positional form)
Returns
any
Trace object with samples and diagnostics
Examples
hmc.sample(model, { mu: 0 }, 1000, 500, 1)hmc.sample(model, { mu: 0 }, { nSamples: 1000, burnIn: 500, thin: 1 })