sampler_rec | R Documentation |
Recycled-Momentum HMC is a sampling algorithm that uses Hamiltonian Dynamics to approximate a posterior distribution. Unlike in standard HMC, proposals are autocorrelated, as the momentum of the current trajectory is not independent of the last trajectory, but is instead updated by a parameter alpha (see Details).
sampler_rec(
start,
distr_name = NULL,
distr_params = NULL,
epsilon = 0.5,
L = 10,
alpha = 0.1,
iterations = 1024L,
weights = NULL,
custom_density = NULL
)
start |
Vector. Starting position of the sampler. |
distr_name |
Name of the distribution from which to sample from. |
distr_params |
Distribution parameters. |
epsilon |
Size of the leapfrog step |
L |
Number of leapfrog steps per iteration |
alpha |
Recycling factor, from -1 to 1 (see Details). |
iterations |
Number of iterations of the sampler. |
weights |
If using a mixture distribution, the weights given to each constituent distribution. If none given, it defaults to equal weights for all distributions. |
custom_density |
Instead of providing names, params and weights, the user may prefer to provide a custom density function. |
While in HMC the momentum in each iteration is an independent draw,, here the momentum of the last utterance p^{n-1}
is also involved. In each iteration, the momentum p
is obtained as follows
p \gets \alpha \times p^{n-1} + (1 - \alpha^2)^{\frac{1}{2}} \times v
; where v \sim N(0, I)
.
Recycled-Momentum HMC does not support discrete distributions.
This algorithm has been used to model human data in \insertCitecastillo2024ExplainingFlawsHuman;textualsamplr
A named list containing
Samples: the history of visited places (an n x d x c array, n = iterations; d = dimensions; c = chain index, with c==1 being the 'cold chain')
Momentums: the history of momentum values (an n x d matrix, n = iterations; d = dimensions). Nothing is proposed in the first iteration (the first iteration is the start value) and so the first row is NA
Acceptance Ratio: The proportion of proposals that were accepted (for each chain).
result <- sampler_rec(
distr_name = "norm", distr_params = c(0,1),
start = 1, epsilon = .01, L = 100
)
cold_chain <- result$Samples
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.