Rev Language Reference


mvReversibilityAwareBranchLengthScale - Branch-length scaling that keeps the root edge together

Scales the length of a randomly chosen non-root branch. When that branch descends from a bifurcating root, its sibling is scaled by the same factor, so the two root branches change together and keep their length ratio.

Usage

mvReversibilityAwareBranchLengthScale(Tree tree, RealPos delta, Bool tune, RealPos weight, Probability tuneTarget)

Arguments

tree : Tree (<stochastic> pass by reference)
The tree variable the move operates on.
delta : RealPos (pass by value)
The scaling factor (strength) of the proposal.
Default : 1
tune : Bool (pass by value)
Should we tune the scaling factor 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.234

Details

Use this move on a stochastic, non-clock tree parameterized by branch lengths, such as a rooted tree drawn from `dnUniformTopologyBranchLength`. Every branch not attached to the root is scaled on its own, as in `mvBranchLengthScale`. Under a stationary time-reversible substitution model, the two root branches correspond to one edge of the unrooted tree. Their combined length affects the likelihood, whereas their relative lengths are informed by the prior alone. Scaling them jointly updates the combined length without changing their ratio. The move is also usable under the non-reversible model and does not require a rate-matrix argument. Use this move alongside an ordinary single-branch scaler such as `mvBranchLengthScale`. Joint scaling alone cannot explore the ratio of the two root-branch lengths.

Example

taxa <- v(taxon("A"), taxon("B"), taxon("C"), taxon("D"))

tree ~ dnUniformTopologyBranchLength(
    taxa=taxa, branchLengthDistribution=dnExp(10.0), rooted=TRUE)

moves = VectorMoves()
moves.append(mvBranchLengthScale(tree, tune=FALSE, weight=4))
moves.append(mvReversibilityAwareBranchLengthScale(
    tree, delta=1.0, tune=FALSE, weight=4))

See Also