Strip away the software and the acronyms, and the modern ancient-DNA toolkit — qpAdm, qpWave, admixture graphs, half the tests in any Reich-lab supplement — runs on one small family of numbers: f-statistics, introduced formally in Patterson et al. 2012. They measure shared genetic drift between populations, and their genius is that simple combinations of allele frequencies behave like testable geometry. This is the family explained from the ground up, with no software required.
Drift, and why sharing it is evidence#
When a population lives on its own, allele frequencies wander — genetic drift. Two populations descending from a common ancestor share the wandering that happened before they split, and not what happened after. Measure how much drift two groups share, against how much each took alone, and you are reading the shape of their family tree from frequencies. f-statistics are exactly that measurement, made rigorous.
f2(A, B) is the squared allele-frequency difference between two populations, averaged over many SNPs — the total drift separating them; the raw material (ADMIXTOOLS 2 precomputes exactly this).
f3(Target; A, B) comes in two uses. As an admixture test, a significantly negative f3 says the target's frequencies sit between A's and B's too consistently to be anything but a mixture of sources related to both — one of the very few one-number proofs of admixture in the toolkit. As outgroup-f3 (with a distant outgroup as the target), it ranks which candidates share the most drift with a population of interest — the standard "who is closest" screen.
f4: the four-population test#
The workhorse. Take four populations arranged as two pairs — f4(A, B; C, D) — and multiply, SNP by SNP, the frequency difference within one pair by the difference within the other, then average. If the tree ((A,B),(C,D)) is true and no gene flow crosses between the pairs, the two differences are uncorrelated and f4 is zero in expectation. A consistently non-zero f4 means the tree is wrong somewhere: either the topology is different, or genes flowed across it.
The sign says where. A positive f4(A, B; C, D) indicates A shares extra drift with C (or B with D); negative, the reverse pairing. One worked example, the most famous in the field: f4(French, Yoruba; Neanderthal, Chimp) is robustly positive — French carry more Neanderthal-shared drift than Yoruba do — the archaic-introgression signal, in one line of arithmetic. (D-statistics, of ABBA–BABA fame, are the same test under a normalisation; for reading purposes, D and f4 are one idea.)
Significance comes from a block jackknife: the genome is cut into blocks long enough that linkage disequilibrium does not tie neighbouring SNPs together, the statistic is recomputed leaving out each block, and the spread gives a standard error. Estimate divided by SE is the Z-score — the papers' "|Z| > 3" convention marks f4s more than three errors from zero, the same reading discipline qpAdm weights inherit.
From single tests to models: the qpAdm identity#
Single f4s test trees; the step that turns them into ancestry proportions is one identity (Haak et al. 2015): if a target descends from sources in proportions α₁…αₙ, then every f4-statistic of the target against outgroup contrasts equals the α-weighted sum of its sources' f4s against the same contrasts. Compute a stack of such statistics against a well-chosen right set, and the proportions become the least-squares solution of a linear system — with SEs from the jackknife and a rank test asking whether n sources are even sufficient. That is qpAdm, whole: f4-statistics arranged into a model that can fail.
Reading the family this way explains the toolkit's division of labour. Descriptive tools — PCA, ADMIXTURE, coordinate fits — summarise resemblance and always answer. f-statistics test, and their tests can refuse. Both matter; only one can say no.
Reading f-statistics in the wild#
- |Z| < 3 means "no detected signal" — not "zero admixture". Power depends on SNP counts and sample sizes; thin data forgive everything.
- A significant f4 says that something crosses the tree — never what. Direction, timing and source identity need models (qpAdm) or graphs, which is why single-statistic headlines overreach.
- The statistics are only as clean as the data — ancient-DNA damage, reference bias and batch effects generate small spurious f4s, which is why the careful papers run damage-restricted replications and why merge hygiene is half the craft.
If you want to feel the arithmetic, run it: the free AdmixTools 2 Lab computes f-statistics, qpWave and qpAdm against a curated ancient panel in the browser — the same family of numbers this post just built from frequencies, pointed at real genomes, including yours.
Terms used here are defined in the glossary.
References#
- Patterson, N. et al. (2012). Ancient admixture in human history. Genetics, 192(3), 1065–1093.
- Reich, D., Thangaraj, K., Patterson, N., Price, A. L. & Singh, L. (2009). Reconstructing Indian population history. Nature, 461, 489–494. (The f3/f4 framework's first major application.)
- Green, R. E. et al. (2010). A draft sequence of the Neandertal genome. Science, 328, 710–722. (The ABBA–BABA / D-statistic introduction.)
- Haak, W. et al. (2015). Massive migration from the steppe. Nature, 522, 207–211.
- Maier, R. et al. (2023). On the limits of fitting complex models of population history to f-statistics. eLife, 12, e85492.



