mvSlice - Propose a slice move
`mvSlice` proposes a new value for a variable based on the current shape of its likelihood function.
mvSlice(
Real x,
RealPos window,
Bool tune,
RealPos weight,
Probability tuneTarget,
String search_method)
| x : |
Real (<stochastic> pass by reference) |
| The variable on which this move operates |
| window : |
RealPos (pass by value) |
| The window (steps-size) of proposals. |
| Default : 1 |
| tune : |
Bool (pass by value) |
| Should we tune the move 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 |
| search_method : |
String (pass by value) |
| The method used to find the slice boundaries. |
| Default : doubling |
| Options : stepping_out|doubling |
A slice proposal uses the shape of the current likelihood distribution of a variable to propose a new value.
First, a likelihood value is drawn uniformly in order to define a horizontal 'slice' through the likelihood distribution.
Then, a new value is drawn uniformly from those values that lie within this slice.
This allows parameter space to be traversed more efficiently than a random walk.
A practical outcome of the implementation is that small moves are proposed in certain parts of parameter space, and large moves in other parts of the space, as appropriate.
A detailed explanation with figures is provided in Neal (2003).