The Moran process and the isothermal theorem (MOR-1, MOR-2) #
Birth–death Moran process on a finite graph: mutants have fitness r > 0, residents
fitness 1. In each step a parent is chosen with probability proportional to its fitness,
and its offspring replaces a uniformly random neighbour (an isolated parent replaces itself,
so nothing changes).
On a regular graph, in every configuration a step increases the number of mutants with
exactly r times the probability that it decreases it. Hence (1/r)^(#mutants) is invariant
in expectation, and on a connected regular graph the fixation probability from k mutants is
Moran's formula (1 - r^{-k}) / (1 - r^{-n}) (for r ≠ 1), or k/n in the neutral case.
This is the "if" direction of the isothermal theorem of Lieberman, Hauert and Nowak (2005);
the complete graph gives Moran's classical formula (1958).
A configuration marks each vertex as mutant (true) or resident (false).
Equations
- Moran.Config V = (V → Bool)
Instances For
Total fitness of the population.
Equations
- Moran.totalFitness r s = ∑ u : V, Moran.fitness r s u
Instances For
Offspring placement: a uniformly random neighbour of the parent u, or u itself if it
has no neighbour.
Equations
Instances For
The weights of (parent, offspring position) pairs are nonnegative.
The weights of (parent, offspring position) pairs sum to one.
Distribution of the (parent, offspring position) pair in one Birth–death step.
Equations
- Moran.pairDist G r hr s = { weight := fun (p : V × V) => Moran.fitness r s p.1 / Moran.totalFitness r s * Moran.target G p.1 p.2, nonneg := ⋯, sum_one := ⋯ }
Instances For
The Birth–death Moran kernel: the offspring copies the parent's type.
Equations
- Moran.moranKernel G r hr s = (Moran.pairDist G r hr s).map fun (p : V × V) => Function.update s p.2 (s p.1)
Instances For
Fixation probability: the supremum of the finite-time fixation probabilities.
Equations
- Moran.fixation K s = ⨆ (t : ℕ), K.iterate t Moran.allMutant s
Instances For
Total weight of mutant-increasing steps.
Equations
- Moran.birthMass G r hr s = ∑ p : V × V, (Moran.pairDist G r hr s).weight p * Moran.upInd s p
Instances For
Total weight of mutant-decreasing steps.
Equations
- Moran.deathMass G r hr s = ∑ p : V × V, (Moran.pairDist G r hr s).weight p * Moran.downInd s p
Instances For
On a regular graph the probability of gaining a mutant is r times the probability of losing one.
Invariance. On a regular graph, (1/r)^(#mutants) is preserved in expectation by one
Moran step.
Neutral invariance. On a regular graph with r = 1, the number of mutants is preserved
in expectation by one Moran step.
Absorption. On a connected graph, the probability that neither type has fixed tends to zero.
Finite-time survival (no fixation yet) as an event.
Fixation probability from an invariant (finite-horizon optional stopping, roadmap
FND-4). If ψ is harmonic for K, equals 1 on the all-mutant and 0 on the all-resident
configuration, all-mutant is absorbing, and the probability that neither type has fixed tends
to zero, then ψ is the fixation probability. This is
Dynamics.Kernel.iSup_event_of_invariant for the two consensus configurations.
Equations
- Moran.moranPsi r t = (1 - (1 / r) ^ Moran.mutants t) / (1 - (1 / r) ^ Fintype.card V)
Instances For
Equations
- Moran.neutralPsi t = ↑(Moran.mutants t) / ↑(Fintype.card V)
Instances For
Isothermal theorem ("if" direction). On a connected regular graph, the fixation
probability from k mutants is Moran's formula (1 - r^{-k}) / (1 - r^{-n}).
Neutral case. On a connected regular graph with r = 1, the fixation probability is the
initial fraction of mutants.
Moran's formula (1958). On the complete graph, the fixation probability from k
mutants is (1 - r^{-k}) / (1 - r^{-n}).