sampler_hmc | R Documentation |
Hamiltonian Monte-Carlo, also called Hybrid Monte Carlo, is a sampling algorithm that uses Hamiltonian Dynamics to approximate a posterior distribution. Unlike MH and MC3, HMC uses not only the current position, but also a sense of momentum, to draw future samples. An introduction to HMC can be read in \insertCitebetancourt2018ConceptualIntroductionHamiltonian;textualsamplr.
sampler_hmc(
start,
distr_name = NULL,
distr_params = NULL,
epsilon = 0.5,
L = 10,
iterations = 1024,
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 |
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. |
This implementations assumes that the momentum is drawn from a normal distribution with mean 0 and identity covariance matrix (p ~ N (0, I)). Hamiltonian Monte Carlo does not support discrete distributions.
This algorithm has been used to model human data in \insertCiteaitchison2016HamiltonianBrainEfficient;textualsamplr, \insertCitecastillo2024ExplainingFlawsHuman;textualsamplr and \insertCitezhu2022UnderstandingStructureCognitive;textualsamplr among others.
A named list containing
Samples: the history of visited places (an n x d matrix, n = iterations; d = dimensions)
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.
result <- sampler_hmc(
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.