littlemcmc.HamiltonianMC

class littlemcmc.HamiltonianMC(logp_dlogp_func: Callable[[numpy.ndarray], Tuple[numpy.ndarray, numpy.ndarray]], model_ndim: int, scaling: Optional[numpy.ndarray] = None, is_cov: bool = False, potential=None, target_accept: float = 0.8, Emax: float = 1000, adapt_step_size: bool = True, step_scale: float = 0.25, gamma: float = 0.05, k: float = 0.75, t0: int = 10, step_rand: Optional[Callable[[float], float]] = None, path_length: float = 2.0, max_steps: int = 1024)

A sampler for continuous variables based on Hamiltonian mechanics.

See NUTS sampler for automatically tuned stopping time and step size scaling.

__init__(logp_dlogp_func: Callable[[numpy.ndarray], Tuple[numpy.ndarray, numpy.ndarray]], model_ndim: int, scaling: Optional[numpy.ndarray] = None, is_cov: bool = False, potential=None, target_accept: float = 0.8, Emax: float = 1000, adapt_step_size: bool = True, step_scale: float = 0.25, gamma: float = 0.05, k: float = 0.75, t0: int = 10, step_rand: Optional[Callable[[float], float]] = None, path_length: float = 2.0, max_steps: int = 1024)

Set up the Hamiltonian Monte Carlo sampler.

Parameters:
logp_dlogp_func : Python callable

Python callable that returns the log-probability and derivative of the log-probability, respectively.

model_ndim : int

Total number of parameters. Dimensionality of the output of logp_dlogp_func.

scaling : 1 or 2-dimensional array-like

Scaling for momentum distribution. 1 dimensional arrays are interpreted as a matrix diagonal.

is_cov : bool

Treat scaling as a covariance matrix/vector if True, else treat it as a precision matrix/vector

potential : littlemcmc.quadpotential.Potential, optional

An object that represents the Hamiltonian with methods velocity, energy, and random methods. Only one of scaling or potential may be non-None.

target_accept : float

Adapt the step size such that the average acceptance probability across the trajectories are close to target_accept. Higher values for target_accept lead to smaller step sizes. Setting this to higher values like 0.9 or 0.99 can help with sampling from difficult posteriors. Valid values are between 0 and 1 (exclusive).

Emax : float

The maximum allowable change in the value of the Hamiltonian. Any trajectories that result in changes in the value of the Hamiltonian larger than Emax will be declared divergent.

adapt_step_size : bool, default=True

If True, performs dual averaging step size adaptation. If False, k, t0, gamma and target_accept are ignored.

step_scale : float

Size of steps to take, automatically scaled down by 1 / (size ** 0.25).

gamma : float, default .05
k : float, default .75

Parameter for dual averaging for step size adaptation. Values between 0.5 and 1 (exclusive) are admissible. Higher values correspond to slower adaptation.

t0 : int, default 10

Parameter for dual averaging. Higher values slow initial adaptation.

step_rand : Python callable

Callback for step size adaptation. Called on the step size at each iteration immediately before performing dual-averaging step size adaptation.

path_length : float, default=2

total length to travel

max_steps : int, default=1024

The maximum number of leapfrog steps.

Methods

__init__(logp_dlogp_func, …[, potential]) Set up the Hamiltonian Monte Carlo sampler.
reset(start) Reset quadpotential and begin retuning.
reset_tuning(start) Reset quadpotential and step size adaptation, and begin retuning.
stop_tuning() Stop tuning.
warnings() Generate warnings from HMC sampler.

Attributes

generates_stats
name
stats_dtypes