Forcing a Bayesian MCMC analysis to consider only binary (i.e. fully-resolved) tree topologies can result in the artefact known as the Star Tree Paradox (see Lewis, Holder, and Holsinger, 2005, and papers citing it) in which one of the possible resolutions of a polytomous node will end up with the highest posterior support, and the posterior probability associated with that arbitrary resolution may be quite high (or quite low, but we tend to notice only the high ones). It is as if the topological uncertainty resulting from the polytomy is manifested in a random degree of support for a few arbitrary resolutions rather than an even spread of posterior support over all possible resolutions.
The solution implemented here is similar to the one proposed by Lewis, Holder, and Holsinger (2005). This uses Green’s (1995) reversible-jump MCMC approach to move between trees in different resolution classes, where resolution class 1 is the star tree (only 1 internal node) and the highest resolution class has n-2 internal nodes (if unrooted) or n-1 internal nodes (if rooted).
The benefit to implementing a polytomy-friendly rjMCMC sampler is that a tree with a polytomy is inferred to be a tree with a polytomy, not a fully-resolved tree with incorrect posterior support. You may feel that polytomies do not really exist in nature. Tree graphs are models that capture important features of the underlying history of the data being analyzed. If two sequential speciation events occurred so close together in time that no nucleotide substitutions were fixed in any gene analyzed, then it could be argued that a polytomy is a better representation of reality than an arbitrary resolution with a tiny internal edge length. At the very least, it offers a very straighforward example of how to implement reversible-jump MCMC, which is a very important tool in the arsenal of any Bayesian phylogenetic modeler.
Step | Title | Description |
Step 19.1 | Modifying TreeUpdater | Modify the TreeUpdater class to allow polytomies. |
Step 19.2 | Adding the PolytomyUpdater class | Create a PolytomyUpdater class to jump between resolution classes. |
Step 19.3 | The TopoPriorCalculator class | Create the TopoPriorCalculator class for computing the topology prior. |
Step 19.4 | Adding calcLogTopologyPrior to Updater | Move calcLogTopologyPrior from TreeUpdater to the base class Updater so that it can be shared with PolytomyUpdater. |
Step 19.5 | Modifying the Likelihood class | Calculation of the likelihood for polytomous trees. |
Step 19.6 | Modifying the Node, Tree, and TreeManip classes | Add to Node, Tree, and TreeManip to enable likelihood calculation on polytomous trees. |
Step 19.7 | Adding PolytomyUpdater to the Chain class | Deploy PolytomyUpdater. |
Step 19.8 | Modifying Model and OutputManager | Update the Model and OutputManager classes to accommodate polytomy analyses. |
Step 19.9 | Modifying Strom | Add polytomy-related command-line options to Strom. |
Step 19.10 | Testing reversible-jump MCMC | Perform an MCMC analysis of the prior to demonstrate that the new polytomy-aware MCMC is working. |
Green, Peter J. 1995. Reversible jump Markov chain Monte Carlo computation and Bayesian model determination. Biometrika 82(4):711-732. JSTOR
Lewis, P. O., Holder, M. T., and Holsinger, K. E. 2005. Polytomies and bayesian phylogenetic inference. Systematic Biology 54(2):241–253. https://doi.org/10.1080/10635150590924208