Wesley R. Elsberry
Posts: 4907 Joined: May 2002

Sometime back, I had another look at a "weasel" post on my blog, and checked out an antievolutionist's blog where I had left a comment. I found he had responded about two months after I left my message. It took years for me to see it.
But it also goaded me into doing some more to describe "weasel" math right on up to incorporating populationlevel probabilities. I'll be putting this up as a blog post soon, but I'll put some of the goodies here first.
So...
If you generate a population of organisms randomly, what are the odds that at least one organism will have at least one match to the target?
C = # of correct bases L = # of bases in organism genome K = # of separate characters in the pool N = population size u = mutation rate (may be expressed as a fraction with L)
We need the p(org_random(C>=1)), the probability that a organism with a randomly assigned genome will have one or more matches to the target. We can get that by using the probability that a randomly assigned base is not a match, raise that to the power of the number of bases, and take the complement.
p(org_random(C>=1)) = (1.0  (1.0  1/K)**L)
For "weasel", K = 27 and L = 28 and p(org_random(C>=1)) = 0.652
Getting the population probability is straightforward.
p(pop_random(C>=1)) = 1.0  ((1.0  1/K)**L)**N
So how does this go, over, say, populations of size from 1 to 10? Like this:
p(pop_random(C>=1)) N= 1 p = 0.652 p(pop_random(C>=1)) N= 2 p = 0.879 p(pop_random(C>=1)) N= 3 p = 0.958 p(pop_random(C>=1)) N= 4 p = 0.985 p(pop_random(C>=1)) N= 5 p = 0.995 p(pop_random(C>=1)) N= 6 p = 0.998 p(pop_random(C>=1)) N= 7 p = 0.999 p(pop_random(C>=1)) N= 8 p = 0.9998 p(pop_random(C>=1)) N= 9 p = 0.9999 p(pop_random(C>=1)) N= 10 p = 0.99997
And there is a graph.
Some more graphs...
This one is the graph of the probability that at least one daughter organism will have more correct bases than its parent given population size, mutation rate (at u=1/L), and number of correct bases.
This shows how increasing the population size makes a huge difference in the probability of progress in each generation.
And there is the everpopular notion of "latching". I should note that what cumulative selection is about is showing that you can have the retention of beneficial changes without having a system that privileges any particular portion of the genome. It's that specific privilege part that is what is so wildly misleading about claims of latching.
I have two graphs for this. Both are with u=1/L, that is, an expectation of mutation of one base per replication. There are points plotted in red for my direct calculation of probability, and blue for the Monte Carlo (MC) estimate of the probability. For runs with smaller population sizes, there are ten thousand MC trials per point, and for the runs including larger population sizes, there are a thousand MC trials per point.
These probability graphs show the probability that one would see a stepback in fitness for a particular population size, mutation rate, and number of correct bases in the parent. These demonstrate that for a reasonable mutation rate, even tiny population sizes can reduce the expectation of observing a stepback in fitness to very slim probabilities. As population sizes reach anything near a reasonable size, those probabilities fall very close to zero.
 "You can't teach an old dogma new tricks."  Dorothy Parker
