Type: | Package |
Title: | Hamiltonian Monte Carlo |
Version: | 1.0.0 |
Description: | Implements simple Hamiltonian Monte Carlo routines in R for sampling from any desired target distribution which is continuous and smooth. See Neal (2017) <doi:10.48550/arXiv.1701.02434> for further details on Hamiltonian Monte Carlo. Automatic parameter selection is not supported. |
License: | GPL-3 |
Encoding: | UTF-8 |
LazyData: | true |
RoxygenNote: | 6.1.0 |
NeedsCompilation: | no |
Packaged: | 2018-10-19 15:02:24 UTC; victhor |
Author: | Victhor Sartório [aut, cre, cph] |
Maintainer: | Victhor Sartório <victhor@dme.ufrj.br> |
Repository: | CRAN |
Date/Publication: | 2018-10-28 22:20:03 UTC |
Hamiltonian Dynamics
Description
Approximates Hamiltonian dynamics for some potential function and a L2-norm kinectic funcion, assuming H(q,p) = U(q) + K(p).
Usage
hamiltonian_dynamics(U, q, p, L, eps, m)
Arguments
U |
Potential function of the system. |
q |
Initial position vector. |
p |
Initial momentum vector. |
L |
Number of steps. |
eps |
Size of each step. |
m |
Mass vector. |
Value
A list with the position 'q' and momentum 'p' at the end of the trajectory.
Examples
U = function(x) exp(-0.5 * x^2) / sqrt(2 * pi)
hamiltonian_dynamics(U, -2, 0.8, 100, 0.1, 1)
hamiltonian_dynamics(U, -2, 0.85, 100, 0.1, 1)
Hamiltonian Monte Carlo
Description
Performs Hamiltonian Monte Carlo for a desired target function.
Usage
hmc(f, init, numit, L, eps, mass)
Arguments
f |
Minus log-density function of interest. |
init |
Initial point for the algorithm. |
numit |
Number of iterations. |
L |
Leapfrog parameter: number of steps. |
eps |
Leapfrog parameter: size of each step. |
mass |
Mass vector. |
Value
A list with the chain with the samples of interest, the values of the log-density calculated at each step and the acceptance rate.
Examples
f = function(x) -dnorm(x, 20, 10, log = TRUE)
hmc(f, 19, 1000, 16, 0.3, 0.1)
Numerical Gradient
Description
Performs numerical differentiation of a function at a specific point. Uses some numerical tricks to always achieve a reliable, though not necessarily optimal, error.
Usage
num_grad(f, x)
Arguments
f |
The function for which the gradient is desired. |
x |
The point at which the gradient should be approximated. |
Value
The gradient of the function 'f' at 'x'.
Examples
func = function(x) exp(-0.5 * x ^ 2) / sqrt(2 * pi)
grad = function(x) -x * exp(-0.5 * x ^ 2) / sqrt(2 * pi)
num_grad(func, -2)
abs(num_grad(func, -2) - grad(-2))