Rev Language Reference


mvSlideBactrian - Sliding-Window Mode Employing Bactrian Distribution

Updates a parameter by a Bactrian-distributed increment.

Usage

mvSlideBactrian(Real x, RealPos sigma, Bool tune, RealPos weight, Probability tuneTarget)

Arguments

x : Real (<stochastic> pass by reference)
The variable on which this move operates.
sigma : RealPos (pass by value)
The scale parameter.
Default : 1
tune : Bool (pass by value)
Should we tune sigma during burnin?
Default : TRUE
weight : RealPos (pass by value)
The weight determines the relative frequency with which this move will be attempted. For details, see the description of the 'moveschedule' parameter on the documentation page for 'mcmc()'.
Default : 1
tuneTarget : Probability (pass by value)
The acceptance probability targeted by auto-tuning.
Default : 0.44

Details

Proposes additive changes to a real-valued parameter using a Bactrian kernel -- a bimodal distribution centered at zero, obtained as a mixture of two unimodal component distributions. Specifically, `mvSlideBactrian` updates the current value by adding a random increment of (lambda * delta), where lambda is a tuning parameter and delta is drawn from a mixture of two normal distributions following Yang & Rodríguez (2013: Supplementary Information, Eq. 19): u ~ Unif(0, 1) x ~ N(0, 1) delta = m + x * sqrt(1 - m^2) if u < 0.5 = -m + x * sqrt(1 - m^2) otherwise with m set to 0.95. As a result, the move is less likely to propose very small steps and encourages larger changes, which improves mixing efficiency and reduces autocorrelation.

Example

moves = VectorMoves()
x ~ dnNormal(0, 2)
moves.append( mvSlideBactrian(x, tune=TRUE, weight=1) )

See Also