# SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.stats.random.rng.multivariate.mcmc.hybrid

## Class MultipointHybridMCMC

• All Implemented Interfaces:
RandomVectorGenerator, Seedable

public class MultipointHybridMCMC
extends AbstractHybridMCMC
A multi-point Hybrid Monte Carlo is an extension of HybridMCMC, where during the proposal generation instead of considering only the last configuration after the dynamics simulation, we pick a proposal from a window of the last M configurations. Consider using ErgodicHybridMCMC if you are experiencing components that deviate little at each step.
• "Jun S. Liu. "Chapter 9.5.2," Monte Carlo Strategies in Scientific Computing. 2002."
• "Jun S. Liu. "Chapter 10.4," Monte Carlo Strategies in Scientific Computing. 2002."

• ### Fields inherited from class com.numericalmethod.suanshu.stats.random.rng.multivariate.mcmc.hybrid.AbstractHybridMCMC

dt
• ### Constructor Summary

Constructors
Constructor and Description
MultipointHybridMCMC(RealScalarFunction logF, RealVectorFunction dLogF, Vector m, double dt, int L, int M, Vector initialState, RandomLongGenerator uniform)
Constructs a new instance with equal weights to the M configurations.
MultipointHybridMCMC(RealScalarFunction logF, RealVectorFunction dLogF, Vector m, double dt, int L, int M, Vector w, Vector initialState, RandomLongGenerator uniform)
Constructs a new instance with the given parameters.
• ### Method Summary

All Methods
Modifier and Type Method and Description
protected boolean isProposalAccepted(Vector currentState, Vector proposedState)
Decides whether the given proposed state should be accepted, or whether the system should remain in it's current state.
protected Vector nextProposedState(Vector currentState)
Proposes a next state for the system.
• ### Methods inherited from class com.numericalmethod.suanshu.stats.random.rng.multivariate.mcmc.hybrid.AbstractHybridMCMC

dUdx, H, k, setDeltaT
• ### Methods inherited from class com.numericalmethod.suanshu.stats.random.rng.multivariate.mcmc.metropolis.AbstractMetropolis

acceptanceRate, nextVector, seed
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• ### Constructor Detail

• #### MultipointHybridMCMC

public MultipointHybridMCMC(RealScalarFunction logF,
RealVectorFunction dLogF,
Vector m,
double dt,
int L,
int M,
Vector w,
Vector initialState,
RandomLongGenerator uniform)
Constructs a new instance with the given parameters.
Parameters:
logF - the log of the unnormalized target density from which we wish to sample
dLogF - the derivative of the log target density for use by the LeapFrogging algorithm. You may choose a function that differs from the actual derivative of the log target density (i.e. that of a tempered version of the target density), in order to guide the leap-frogging algorithm
m - the mass of each component in the dynamics simulation. A lower mass for a given component will result in greater change over the simulated time
dt - the amount by which we advance time at each dynamics simulation step
L - the number of dynamics simulation steps
M - the number of configurations from which we select the candidate after the forward leap-frog iterations (M < L)
w - a vector of length M, which is used to emphasize certain steps along the leapfrog trajectory, where w(1) is the weight assigned to the to configuration at step L - M and w(M) corresponds to the configuration at step L.
initialState - the initial state of the algorithm
uniform - the random long generator to be used
• #### MultipointHybridMCMC

public MultipointHybridMCMC(RealScalarFunction logF,
RealVectorFunction dLogF,
Vector m,
double dt,
int L,
int M,
Vector initialState,
RandomLongGenerator uniform)
Constructs a new instance with equal weights to the M configurations.
Parameters:
logF - the log of the unnormalized target density from which we wish to sample
dLogF - the derivative of the log target density for use by the LeapFrogging algorithm. You may choose a function that differs from the actual derivative of the log target density (i.e. that of a tempered version of the target density), in order to guide the leap-frogging algorithm
m - the mass of each component in the dynamics simulation. A lower mass for a given component will result in greater change over the simulated time
dt - the difference in time for each simulation step. A smaller value, will make the simulation more accurate, but a larger value will give better performance by requiring less simulation steps
L - the number of forward leap-frog iterations at each step
M - the number of configurations from which we select the candidate after the forward leap-frog iterations (M < L)
initialState - the initial state of the algorithm
uniform - the random long generator to be used
• ### Method Detail

• #### nextProposedState

protected Vector nextProposedState(Vector currentState)
Description copied from class: AbstractMetropolis
Proposes a next state for the system.
Specified by:
nextProposedState in class AbstractMetropolis
Parameters:
currentState - the current state of the system
Returns:
the proposed next state
• #### isProposalAccepted

protected boolean isProposalAccepted(Vector currentState,
Vector proposedState)
Description copied from class: AbstractMetropolis
Decides whether the given proposed state should be accepted, or whether the system should remain in it's current state.
Specified by:
isProposalAccepted in class AbstractMetropolis
Parameters:
currentState - the current state of the system
proposedState - the proposed next state of the system
Returns:
whether the system should accept the proposed next state