Estimating the Timescale and Rate of Evolution

Speciation Genomics · PB 495/595 Plant Evolutionary Biology

George P. Tiley

22 October 2026

Continuing from phylogenies

  • We can estimate trees. Trees have branch lengths.
    1. Branch lengths are in substitutions/site and are the product of rate of evolution × time.
    2. Branch lengths in coalescent units are the product of effective population size × time.
  • To get absolute time (e.g. millions of years) we must separate rate from time. This is done with calibrations.
  • We can get dates and rates from trees with molecular clock models
    1. least-squares estimation of divergence times from distances
    2. calibration densities with Bayesian methods
    3. relaxed clocks can accommodate rate variation across branches.

Learning objectives

By the end you should be able to:

  • Describe how the nonparametric bootstrap works and interpret bootstrap support for nodes.
  • Connect the molecular clock hypothesis to the neutral theory of molecular evolution (\(\rho=\mu\)).
  • Estimate node heights from a distance matrix by least squares under a strict clock and convert them to absolute ages with a calibration.
  • Explain why branch length confounds rate and time, and how multiple calibrations help us separate the two.
  • Contrast strict and relaxed clocks.
  • Judge how calibration choice and clock model change a dated tree, and why to compare posterior with prior.

Statistical support: the bootstrap

Why we need a measure of uncertainty

  • Last time’s tree is a point estimate from one finite alignment. A different sample of sites would give a (slightly) different tree.
  • Ideal: repeat the sequencing experiment many times, re-estimate the tree each time, and see how often a clade recurs. We can’t — we only have one alignment.
  • The bootstrap idea (Efron 1979): treat the observed data as a stand-in for the population and resample from it. Replicate data sets mimic what new data sets would look like.
  • Applied to phylogenies by Felsenstein (1985); it is now the standard measure of clade support in ML and distance analyses.

The nonparametric bootstrap for an alignment

  1. Resample columns of the alignment with replacement until the new alignment is as long as the original — a pseudoreplicate.
  2. Re-estimate the tree (or distances, or ages) from the pseudoreplicate with the same method.
  3. Repeat \(B\) times (100–1000).

Two stacked alignments of five taxa A to E. The top one is the original 17-column alignment, with columns that are never drawn faded out. The bottom one is a pseudoreplicate of 17 columns drawn with replacement; columns 6, 8 and 15 are drawn two, four and three times and are outlined in red.

  • Some columns are drawn several times, others not at all: on average only 63% of the original columns appear (\(1-(1-1/L)^L \to 1-1/e\)).
  • Valid because sites are treated as independent draws from the same process.

From replicates to clade support

Toy data: the 17-site A–E alignment, UPGMA tree, \(B=1000\) pseudoreplicates.

  • Bootstrap support of a clade = the percentage of replicate trees that contain it (Felsenstein 1985).
  • Draw the values on the tree estimated from the original data; a majority-rule consensus of the replicates summarises them when topologies differ.
  • (A,B) and (D,E) recur in 83–86% of replicates; (C,(D,E)) only in 53%: 17 sites are too few to resolve it.
  • More sites → more consistent replicates → higher support.

The tree ((A,B),(C,(D,E))) with bootstrap support values in red boxes at the three internal nodes: 83 for the A,B clade, 86 for the D,E clade and 53 for the C,D,E clade.

How to read bootstrap support

What it is

  • How consistently the data support a clade under resampling, given the method and model.
  • A measure of sampling error: sites that conflict with the clade are common or rare.
  • Rule of thumb: ≥70% is “reasonably supported”, ≥95% “strongly supported”. In simulations the bootstrap was conservative — 70% often corresponded to ≥95% probability that the clade is real (Hillis and Bull 1993).

What it is not

  • Not the probability that the clade is true.
  • Not protection from systematic errors. For example, a misspecified model can give 100% support to a wrong clade.
  • Not a measure of gene-tree discordance. Concatenation can give high support to a species tree with high ILS.

Bootstrap variants

  • Sites are not really independent. Linked sites in a gene share one history: for genomic data, block resampling is sometimes used.
  • Speed. Thousands of ML bootstraps are slow. The ultrafast bootstrap in IQ-TREE approximates it quickly by using the tree search itself. Ultrafast bootstraps use ≥95% as the cut-off (Hoang et al. 2018).
  • Parametric bootstrap: simulate alignments from the fitted model and tree, re-estimate, and compare. This can be useful for assessing model fit rather than sampling error.
  • Bootstrap vs. posterior probability: a Bayesian posterior probability is not on the same scale and is usually higher than bootstrap support (forthcoming).

Bootstrapping node ages

The same recipe gives uncertainty on any estimate computed from the alignment — including node ages:

  1. Resample alignment columns.
  2. Recompute the distance matrix, then the least-squares node heights (or ages, after calibration) — introduced in the least-squares section below.
  3. Repeat \(B\) times; the middle 95% of replicates is a bootstrap percentile interval.

Toy example: root height \(=4.58\) substitutions, bootstrap 95% interval 3.67–5.67 — wide, as expected from 17 sites.

  • Fixes the “point estimates only” limitation of least squares.
  • Covers sampling error only, not calibration or model error.

Histogram of the root height from 1000 bootstrap pseudoreplicates, centred near the original estimate of 4.58 substitutions, with dashed vertical lines marking the 95 percent percentile interval from 3.67 to 5.67.

The molecular clock

Rate × time

A branch length in substitutions per site is

\[ b = r \times t \quad(\text{rate} \times \text{time}). \]

The molecular clock hypothesis: \(r\) is roughly constant across lineages, so branch lengths are proportional to time. This hypothesis is based in the neutral theory of molecular evolution. Recall the neutral substitution rate is the mutation rate (\(\rho=\mu\)), which is independent of population size. If \(\mu\) is similar across lineages, the molecular clock should be constant.

Least-squares dating

From distances to node ages

Building off of neighbor-joining, we can use the pairwise distances to estimate node ages using least-squares.

  • Input: a matrix of pairwise distances \(d_{ij}\) (substitutions/site) and a rooted tree topology.
  • Output: an age for every internal node.
  • Idea: choose node ages so that the distances expected by the tree based on a linear regression are as close as possible to the distances we observe.

The clock model for distances

Under a strict clock every lineage has the same rate \(r\), so all tips are the same distance from the root (the tree is ultrametric). Let \(m(i,j)\) be the most recent common ancestor (MRCA) of tips \(i\) and \(j\), and define its height \(h_m = r\,t_m\) (substitutions per site since the node). Then the distance between two tips is the path up to the MRCA and back down:

\[ d_{ij} \;=\; 2\,r\,t_{m(i,j)} \;=\; 2\,h_{m(i,j)}. \]

  • One parameter per internal node (\(h_m\)), shared by every pair of tips that coalesce there.
  • There can be many pairs for a node, and some randomness will ensure they are not equal.
  • So we need a criterion for “as close as possible”.

A rooted five-tip tree A to E with equal-length tips. The path from tip C up to the common ancestor of C and E and down to E is highlighted in red; a vertical arrow marks the node height h, and the label states that the distance between C and E equals twice h.

The least-squares criterion

Choose node heights \(h\) to minimise the weighted sum of squared residuals

\[ S(h) \;=\; \sum_{i<j} w_{ij}\,\bigl(d_{ij} - 2h_{m(i,j)}\bigr)^2 . \]

With equal weights (\(w_{ij}=1\)) each node can be solved on its own: set \(\partial S/\partial h_m=0\),

\[ \hat h_m \;=\; \frac{1}{2}\,\overline{d}_m, \qquad \overline{d}_m=\text{mean of } d_{ij} \text{ over all pairs whose MRCA is } m . \]

Each node age is half the average distance across it. Ages must also satisfy the condition that a child is younger than its parent

Worked example: the A–E toy matrix

Fix the topology \(((A,B),(C,(D,E)))\) and group the 10 distances by their MRCA:

Node \(m\) Pairs (distances) \(\overline{d}_m\) \(\hat h_m=\overline{d}_m/2\)
(D,E) DE = 3 3 1.50
(A,B) AB = 5 5 2.50
(C,(D,E)) CD = 8, CE = 7 7.5 3.75
root AC = 9, AD = 9, AE = 8, BC = 10, BD = 10, BE = 9 9.17 4.58

The fitted tree ((A,B),(C,(D,E))) with estimated node heights: 2.50 for the A,B node, 1.50 for the D,E node, 3.75 for the C,D,E node and 4.58 for the root, on a vertical axis of height in substitutions.

Scatter plot of observed pairwise distances against distances fitted by the tree. Points lie close to the one-to-one line; the largest deviations are for pairs A,E and B,C and B,D at the root and for C,D and C,E.

Residual sum of squares \(=3.33\), almost all from the six root pairs (\(2.83\)) — the data are only approximately clock-like.

Beyond a strict clock: least squares on branch lengths

Real trees are rarely ultrametric. Instead of tip-to-tip distances, use the branch lengths \(b_i\) already estimated by ML (substitutions/site) on a rooted tree. Estimate node times \(t\) and a single rate \(r\) by

\[ \min_{r,\,t}\;\sum_{\text{branches } i} w_i\,\Bigl(b_i - r\,\bigl(t_{\text{child}(i)} - t_{\text{parent}(i)}\bigr)\Bigr)^2 \quad\text{subject to } t_{\text{parent}}<t_{\text{child}}. \]

  • Tips may have different sampling dates, so this also covers serially sampled data.
  • The advantage of why this old approach is still used is that it is very fast. Modern work is still done (To et al. 2016) as it is scalable to thousands of tips and works for closely-related individuals.
  • Calibrations can be used to convert node heights to absolute time.
  • Rate variation among branches is not modelled.

One calibration puts the tree on an absolute time axis

Least squares gives heights \(\hat h_m\) in substitutions. Under a strict clock \(h_m=r\,t_m\), so any one node of known age fixes the scale:

\[ \hat r=\frac{\hat h_{\text{cal}}}{t_{\text{cal}}}, \qquad \hat t_m=\frac{\hat h_m}{\hat r}=\hat h_m\times\frac{t_{\text{cal}}}{\hat h_{\text{cal}}}. \]

Example tree, root calibrated to 100 My:

  • Scale \(=100/4.58 = 21.8\) My per substitution
  • \(\hat r = 4.58/100 = 0.046\) substitutions/My
  • \(\hat t\): (C,(D,E)) = 82 My, (A,B) = 55 My, (D,E) = 33 My

Calibrating (C,(D,E)) to 80 My instead gives a root of 97.8 My.

The fitted tree of five tips A to E with a left axis of height in substitutions and a right axis of age in millions of years. The root is marked as calibrated to 100 My, which places the other nodes at 82, 55 and 33 My.

  • All ages are the heights rescaled: ratios of node ages never change; the calibration sets only the scale.
  • Good enough? For closely related species over recent time scales (similar life histories, so similar rates), a strict clock and one calibration (a recorded age of domestication or a known mutation rate) is a reasonable first estimate.
  • It degrades over time due to rate variation (e.g. herbaceous vs. woody plants).

Calibrations and rate variation in plants

Rate–time non-identifiability

From sequence data we observe only the product \(b=rt\) — as the least-squares fit showed, the data alone give heights in substitutions, and the scale is set only by external time information. Doubling the rate and halving the time gives the identical likelihood:

\[ b = r\,t = (2r)\left(\tfrac{t}{2}\right). \]

  • Molecular data alone cannot give absolute ages. We need external time information — as little as one calibration under a strict clock, but more are needed when there is rate variation.

Calibrations make rate and time identifiable

External evidence fixes ages (or age distributions) at nodes/tips:

  • Fossils — a dated fossil places a minimum age on a clade (often a soft prior).
  • Secondary calibrations — ages from a previous dated study.
  • Biogeographic — island emergence, vicariance events (e.g. Hawaiian island ages).

Calibrations are priors on time, layered onto the rate–time product. Their choice and placement is data driven but requires justification from organismal experts.

Where do calibrations come from?

Crowns versus stems. Fig. 1 from Renner 2005.

Crowns versus stems. Fig. 1 from Renner (2005)

Why multiple calibrations are needed

Faster rates of evolution in herbaceous plants compared to woody plants. Fig. 1 from Smith 2008.

Faster rates of evolution in herbaceous plants compared to woody plants. Fig. 1 from Smith and Donoghue (2008)

Strong effect of calibration choice

Effect of different calibrations on estimated node ages. Fig. 3 from Barba-Montoya 2018.

Effect of different calibrations on estimated node ages. Fig. 3 from Barba-Montoya et al. (2018)

Strong effect of calibration choice

Effect of different calibrations on estimated node ages. Fig. 3 from Wu 2026.

Effect of different calibrations on estimated node ages. Fig. 3 from Wu et al. (2026)

Clock models

Strict vs. relaxed clocks

  • Strict clock: one rate \(r\) for the whole tree. Simple, but real lineages vary (life history, generation time, mutation rate).
  • Relaxed clock: each branch draws its own rate, e.g. from a lognormal:

\[ r_i \sim \text{Lognormal}(\mu_r, \sigma_r), \]

with \(\sigma_r\) measuring how clock-like the data are (Drummond et al. 2006).

  • Uncorrelated (branch rates independent) vs. autocorrelated (parent→child) variants.
  • Plants often violate a strict clock — herbs vs. trees differ in substitution rate.

Relaxed clocks with Bayesian divergence-time estimation

Put it together in one hierarchical model, sampled by MCMC:

\[ \underbrace{P(\text{data}\mid \tau, t, r)}_{\text{substitution + clock}} \;\times\; \underbrace{P(\tau, t)}_{\text{tree prior}} \;\times\; \underbrace{P(\text{calibrations})}_{\text{time priors}}. \]

  • Output: a posterior distribution of time-calibrated trees.
  • Every node age has a 95% HPD interval for time and every branch has a 95% HPD interval for its rate.

Case study: Angiosperms

93 genera, five partitions, 52 fossils

  • Data: a 93-genus subsample (84 angiosperms + 9 outgroups) of the 644-genus data set of Barba-Montoya et al. (2018), with 75,030 aligned sites in five partitions: plastid and mitochondrial codon positions 1+2 and 3 (modelled separately), and nuclear rDNA.
  • Why subsample? Cost per MCMC iteration grows with the number of nodes. We kept the fewest genera that preserve all 52 calibrated nodes and the major clades (22 have a genome): runs take a few hours instead of days.
  • Fixed topology, Bayesian dating in MCMCtree (Yang 2007) with the approximate likelihood (Reis and Yang 2011).
  • Clock: independent log-normal rates (a relaxed clock); tree prior: birth–death.
  • Calibrations: 52 fossil constraints with soft bounds (Yang and Rannala 2006) — 41 minimum ages and 11 minimum-and-maximum ages.
Partition Sites
plastid, codon positions 1+2 41,021
plastid, codon position 3 20,360
mitochondrial, 1+2 5,690
mitochondrial, 3 2,878
nuclear rDNA 5,081

Where the calibrations are

A 93-tip chronogram of vascular plants drawn in pale grey against a geological time axis from the Ordovician to the present, with genome genera labelled. Ten red dots mark calibrated nodes in the non-angiosperm backbone and the angiosperm crown; forty-two hollow dots mark calibrated nodes inside the angiosperms that are used only in the reference analysis.

  • Red (10): deep backbone — root, seed plants, gymnosperms, ferns, lycophytes — plus the angiosperm crown (126–247 Ma).
  • Open (42): fossil calibrations inside the angiosperms (41 minimum ages and one minimum–maximum on the mesangiosperms), used only in the reference analysis.

The reference timescale (analysis A)

Chronogram of 93 genera coloured by major clade, with black bars giving the 95 percent HPD for the root, seed plants, angiosperms, mesangiosperms, monocots, eudicots, rosids and asterids on a geological time axis; labels give the posterior mean ages.

  • Relaxed clock, all 52 calibrations: angiosperm crown ≈243 Ma (95% HPD 225–261); major angiosperm clades have HPD widths of about 20–40 My.
  • These are ages from the 93-genus subsample; see the check below before quoting them.

A comparison: how much do the calibrations and the clock matter?

Same alignment, topology, tree prior and approximate likelihood. Only the calibrations and the clock change:

Clock Calibrations
A reference relaxed (independent log-normal) all 52
B relaxed angiosperm crown + deep backbone only (10)
C strict angiosperm crown + deep backbone only (10)

Can you make any predictions about how ages and rates will change with fewer calibrations throughout the tree?

Answer 1: fewer fossils make the angiosperms younger

Posterior mean and 95 percent HPD crown ages for angiosperms, mesangiosperms, monocots, eudicots, rosids, asterids and grasses in three analyses on a geological time axis. For every clade the relaxed analysis with all calibrations is oldest, the relaxed analysis with sparse calibrations is younger and wider, and the strict-clock analysis is youngest with a very short bar.

  • A → B (drop the 42 angiosperm fossils): angiosperm crown 243 → 166 Ma; every angiosperm clade moves ~30–40% younger, and the crown interval is wider (HPD 36 → 47 My).
  • B → C (strict clock): younger still (crown 125 Ma) with a tiny interval (HPD 9 My).

Answer 2: every node moves, not just the calibrated ones

Two scatter plots of posterior mean node ages against the reference analysis for all internal nodes. Left, relaxed clock with sparse calibrations: calibrated deep backbone nodes in red lie on the one-to-one line while most angiosperm nodes fall below it. Right, strict clock: most nodes fall well below the line and the red calibrated nodes scatter above and below it.

  • B vs A: the calibrated backbone nodes (red, old) sit on the 1:1 line; the uncalibrated angiosperm nodes shift younger (median 0.61 × the reference age).
  • C vs A: no calibrated node is safe — a single rate has to explain both slow gymnosperms/ferns and fast angiosperms.

Strict clock: precise, but in conflict with the fossils

Scatter plot of 95 percent HPD width in millions of years against posterior mean node age for three analyses, with smoothed lines. The strict-clock analysis has the narrowest intervals at nearly all ages, the relaxed analysis with sparse calibrations the widest for young nodes.

  • Median HPD width, all nodes: A 25 My, B 25 My, C 7 My. The strict clock looks like the best-determined analysis.
  • But 6 of its 10 calibrated nodes have a 95% HPD entirely outside the fossil bounds — e.g. the root at 550 Ma vs. a 422–451 Ma constraint, and a gymnosperm node at 109 Ma vs. 265–366 Ma.
  • Under A and B: 0 of 10.

Why the ages move: rate and time trade off

Violin plots of the posterior mean substitution rate for the five partitions (plastid 1+2, plastid 3, mitochondrial 1+2, mitochondrial 3, nuclear rDNA) in analyses A, B and C, and of the rate-variation parameter sigma squared for A and B. The mean rate is highest in analysis B in every partition, plastid codon position 3 evolves fastest, and rate variation is lower in B than in A.

  • B has younger nodes and higher rates: the mean rate rises by about 45% in every partition (plastid 1+2: 0.035 → 0.051 subs/site per 100 My).
  • Third codon positions evolve fastest (plastid 3: ≈ 0.10, about 3× codon positions 1+2), which is why we model them separately.
  • The data fix only \(r\times t\) (the non-identifiability slide): fewer fossils let \(t\) shrink and \(r\) grow to compensate.
  • Rate variation is large (\(\sigma^2\approx\) 0.4–1.1), so one global rate (C) cannot be right. Rate variation is lower in B than in A.

Prior vs. posterior: where does the crown age come from?

Density plots of the angiosperm crown age: posterior distributions for the relaxed analysis with all calibrations (peaking near 245 Ma), the relaxed analysis with sparse calibrations (near 165 Ma) and the strict-clock analysis (a narrow peak near 125 Ma), and dashed prior-only distributions for both calibration sets that are broad and peak near 240 Ma. A shaded band marks the 126 to 247 Ma calibration interval.

  • Prior only (no sequence data, dashed): broad, ≈225–230 Ma (95% 163–265 for the sparse set) — the birth–death prior plus calibrations on the other nodes.
  • A’s posterior is close to its prior; B’s pulls younger (166 Ma), so the sequences themselves favour a younger crown when the interior fossils are absent. C collapses to a narrow spike at the 126 Ma lower bound.
  • Always compare posterior with the effective prior — the prior is not just the calibration you typed in.

Does the 93-genus subsample bias the ages?

Scatter plot of posterior mean node ages from the 93-genus subsample against those of the full 644-genus analysis for all internal nodes, with 95 percent HPD bars. Points lie close to the one-to-one line for old backbone nodes and fall somewhat below it for angiosperm nodes.

  • Deep backbone agrees (root 449 vs. 451 Ma; gymnosperms 329 vs. 322 Ma).
  • Angiosperm nodes are younger in the subsample: crown 275 → 243 Ma, eudicots 211 → 164 Ma (median ratio 0.89).
  • The effective priors agree (crown ≈ 229 vs. 227 Ma; 644 vs. 93 genera), so the shift comes from the data, not the priors.
  • Not a clean test: the 644-genus run used three partitions (no third codon positions) and its chains are partial (R-hat up to 1.16), so the gap mixes taxon sampling with partitioning.
  • Use the three-way comparison for what changes (A → B → C), not for absolute ages.

Key takeaways

Lessons from the angiosperm case study

  • Calibrations drive the timescale: removing 42 fossils moved the angiosperm crown ~75 My younger and widened intervals: more calibrations give older ages and tighter intervals.
  • The clock model matters as much: a strict clock gave precise but conflicting ages; the relaxed clock (\(\sigma^2\approx\) 0.4–1.1) is needed.
  • Many things to check for divergence times: posterior vs. prior, calibration effects, convergence, and taxon sampling.

Summary

  • The bootstrap resamples alignment columns to measure sampling error: clade support is the fraction of replicates containing the clade — not the probability it is true, and blind to model bias.
  • Branch length = rate × time.
  • Least squares turns distances into node heights (half the mean distance across each node) in substitution units; one calibration rescales them to absolute time under a strict clock.
  • Calibrations (fossils, secondary, biogeographic) are needed to obtain absolute time estimates.
  • Relaxed clocks can accommodate many calibrations and thus rate variation across the tree.
  • Bayesian relaxed clock models yield a posterior of chronograms. The posterior can be used to calculate the HPD to evaluate uncertainty.

References

Barba-Montoya, Jose, Mario Dos Reis, Harald Schneider, Philip CJ Donoghue, and Ziheng Yang. 2018. “Constraining Uncertainty in the Timescale of Angiosperm Evolution and the Veracity of a Cretaceous Terrestrial Revolution.” New Phytologist 218 (2): 819–34.
Drummond, Alexei J., Simon Y. W. Ho, Matthew J. Phillips, and Andrew Rambaut. 2006. “Relaxed Phylogenetics and Dating with Confidence.” PLoS Biology 4 (5): e88. https://doi.org/10.1371/journal.pbio.0040088.
Efron, B. 1979. “Bootstrap Methods: Another Look at the Jackknife.” The Annals of Statistics 7 (1): 1–26. https://doi.org/10.1214/aos/1176344552.
Felsenstein, Joseph. 1985. “Confidence Limits on Phylogenies: An Approach Using the Bootstrap.” Evolution 39 (4): 783–91. https://doi.org/10.1111/j.1558-5646.1985.tb00420.x.
Hillis, David M., and J. J. Bull. 1993. “An Empirical Test of Bootstrapping as a Method for Assessing Confidence in Phylogenetic Analysis.” Systematic Biology 42 (2): 182–92. https://doi.org/10.2307/2992540.
Hoang, Diep Thi, Olga Chernomor, Arndt von Haeseler, Bui Quang Minh, and Le Sy Vinh. 2018. “UFBoot2: Improving the Ultrafast Bootstrap Approximation.” Molecular Biology and Evolution 35 (2): 518–22. https://doi.org/10.1093/molbev/msx281.
Reis, Mario dos, and Ziheng Yang. 2011. “Approximate Likelihood Calculation on a Phylogeny for Bayesian Estimation of Divergence Times.” Molecular Biology and Evolution 28 (7): 2161–72. https://doi.org/10.1093/molbev/msr045.
Renner, Susanne S. 2005. “Relaxed Molecular Clocks for Dating Historical Plant Dispersal Events.” Trends in Plant Science 10 (11): 550–58.
Smith, Stephen A, and Michael J Donoghue. 2008. “Rates of Molecular Evolution Are Linked to Life History in Flowering Plants.” Science 322 (5898): 86–89.
To, Thu-Hien, Matthieu Jung, Samantha Lycett, and Olivier Gascuel. 2016. “Fast Dating Using Least-Squares Criteria and Algorithms.” Systematic Biology 65 (1): 82–97. https://doi.org/10.1093/sysbio/syv068.
Wu, Ruolin, Sandra Álvarez-Carretero, Yue Tong, Shan Wan, Harald Schneider, James Clark, Davide Pisani, Daniele Silvestro, and Philip CJ Donoghue. 2026. “Integrated Analysis of Fossils and Molecular Divergence Time Estimates a Latest Jurassic Origin of Angiosperms.” Nature Plants 12 (6): 1242–51.
Yang, Ziheng. 2007. “PAML 4: Phylogenetic Analysis by Maximum Likelihood.” Molecular Biology and Evolution 24 (8): 1586–91. https://doi.org/10.1093/molbev/msm088.
Yang, Ziheng, and Bruce Rannala. 2006. “Bayesian Estimation of Species Divergence Times Under a Molecular Clock Using Multiple Fossil Calibrations with Soft Bounds.” Molecular Biology and Evolution 23 (1): 212–26. https://doi.org/10.1093/molbev/msj024.