Skip to main content
. Author manuscript; available in PMC: 2023 Jul 18.
Published in final edited form as: Am Stat. 2021 Jan 31;75(4):403–413. doi: 10.1080/00031305.2020.1865198

Algorithm 2.

Hamiltonian Monte Carlo

1:
procedure HMC(θ(0), log f(θ), M, N, ϵ, L)
2:
Calculate log f(θ(0))
3:
for t = 1,..., N do
4:
pN(0, M)
5:
θ(t)θ(t−1), θθ(t−1), pp
6:
for i = 1,..., L do
7:
θ, p ← Leapfrog(θ, p, ϵ, M)
8:
end for
9:
αmin(1,exp(logf(θ)12p˜TM1p˜)exp(logf(θ(t1))12pTM1p))
10:
With probability α, θ(t)θ and p(t) ← −p
11:
end for
12:
return θ(1),..., θ(N)
13:
function Leapfrog(θ*, p*, ϵ, M)
14:
pp* + (ϵ / 2)∇θ log f(θ*)
15:
θθ* + ϵM−1p
16:
pp + (ϵ / 2)∇θ log f(θ)
17:
return θ, p
18:
end function
19:
end procedure