Rev Language Reference


mvScale - Proportional Scaling Move

Proposes multiplicative updates to continuous parameters.

Usage

mvScale(Real x, RealPos lambda, Bool tune, RealPos weight, Probability tuneTarget)

Arguments

x : Real (<stochastic> pass by reference)
The variable this move operates on.
lambda : RealPos (pass by value)
The strength of the proposal.
Default : 1
tune : Bool (pass by value)
Should we tune lambda 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

The `mvScale` move updates a parameter by multiplying it with a randomly chosen factor from a proposal distribution. The move takes arguments that control how often it should be used (`weight`) and the size of the scaling factor (`lambda`). When the `tune` argument is set to `TRUE`, the value of `lambda` is automatically adjusted so that the acceptance rate of the move reaches `tuneTarget`. Since multiplicative updates do not change the sign, `mvScale` is most often applied to parameters that are constrained to be positive, such as rates or branch lengths in phylogenetic models.

Example

moves = VectorMoves()
speciation_rate ~ dnExponential(10)
moves.append( mvScale(speciation_rate, weight=1) )

See Also