Relative fitness compares different genotypes in a population, and is defined as the ratio of the average numbers contributed to the next generation with one genotype set arbitarily at 1. So if genotype-A contributes 300 and normal genotype-B contributes 200, then genotype-A has a relative fitness of 1.5 compared to genotype-B. Relative fitness can be most any non-negative number.

Absolute fitness is calculated for a single genotype as simply the ratio of the numbers in the new generation to the old after selection. So if the population of the genotype increases from 100 to 200, then it has an absolute fitness of 2. Again, absolute fitness can be most any non-negative number.

Yes, this is how it's done. Personally, I'd prefer it if it was on the log scale: there's all sorts of statistical theory that slots nicely into the evolutionary theory.

Quote

I've been trying to independently implement Mendel's Accountant, but keep running into such definitional problems. Heritability. Fitness. And how they're handling probability selection. I'm working with a simplified model, but Mendel's Accountant should be able to handle the simple cases with obvious results.

My advice: keep away from heritability. It complicates matters, and is dependent on the genetic variation in the population. I suspect Sanford et al. don't really understand quantitative genetics: certainly Sanford makes some mistakes because of his lack of understanding in Genetic Entropy.

Quote

I'm assuming that if fitness increases by 1, then it goes from 1 to 2 (100% increase), or from 2 to 3 (50%) and so on. It shouldn't be additive, but multiplicative so it scales. Sanford's complaint is that if we use multiplicative, then it can never reach zero. So he is clearly assuming his conclusion.

Indeed, but it can get arbitrarily close to 0, so it doesn't make any practical difference (unless you're working with continuous populations, when you end up with nano-foxes).

Quote

It's not easy to resolve some of these problems. If we scale fecundity with fitness, then that solves the problem of very low fitness. But introduces a problem if the fitness levels climb so that we may be radically multiplying the reproductive rate.

Don't you just have to invoke density dependence? I think this Darwin chap had some thoughts along those lines, after he read Malthus.

Quote

Of course, "generation" is an abstraction, so it may represent an undefined breeding season. Frankly, the whole thing is an abstraction, so any strong claims about the specifics of biology are invalid anyway.

Depends on what species you're working on. For things like butterflies, it's fine. And, to be honest, the purpose of Mendel's Accountant is to make general statements about evolution, so this stuff is OK, as long as it's clear what the assumptions are. A lot of the assumptions shouldn't have too big an effect on the robustness of the claims.

--------------It is fun to dip into the various threads to watch cluelessness at work in the hands of the confident exponent. - Soapy Sam (so say we all)

Ugh. That's a horrible way to do the integration. I recognise the density (George Box was promoting it in the 50s), and it has an analytic solution: alpha_fav*gamma_fav*Gamma(1/gamma_fav), where Gamma() is the gamma function.

The random_normal()*noise[/color] is environmental variation, and we would typically set it to be constant. Because MA defines heritability, they have to back-calculate the environmental variance: that's what geno_fitness_variance*(1. - heritability) /heritability is doing. Except it's wrong, because the non_scaling_noise is added too, so the heritability isn't a heritability.

Also, note what this back-calculation means: it scales the environmental variance to the genetic variance, so as genetic variation decreases, the environment becomes more stable. This is bollocks.

They should really set the environmental variance. The problem is getting an easily understood scaling, but that can be done by scaling to the mean fitness effects.

Also, check through: the calculations look OK for log(fitness): they range from -infinity to infinity and are additive. But on what scale does pheno_fitness affect? On this scale, or the exponential scale?

Quote

Unrestricted probability selection:

c... For unrestricted probability selection, divide the phenotypic c... fitness by a uniformly distributed random number prior to c... ranking and truncation. This procedure allows the probability c... of surviving and reproducing in the next generation to bec... directly related to phenotypic fitness and also for the correctc... number of individuals to be eliminated to maintain a constantc... population size.

do i=1,total_offspring work_fitness(i) = work_fitness(i)/(randomnum(1) + 1.d-15) end do

Divide by randomnum as well as add non-heritable noise to the phenotype?

:-) No idea what's going on.

--------------It is fun to dip into the various threads to watch cluelessness at work in the hands of the confident exponent. - Soapy Sam (so say we all)

I've been trying to independently implement Mendel's Accountant, but keep running into such definitional problems. Heritability. Fitness. And how they're handling probability selection. I'm working with a simplified model, but Mendel's Accountant should be able to handle the simple cases with obvious results.

My advice: keep away from heritability. It complicates matters, and is dependent on the genetic variation in the population. I suspect Sanford et al. don't really understand quantitative genetics: certainly Sanford makes some mistakes because of his lack of understanding in Genetic Entropy.

I've been setting heritability to 1 when running tests, so I should be able to reach comparative results. I think a working heritability parameter could be included in a Mendel's Accountant. But the concept is sometimes counterintuitive.

Quote (Bob O'H @ June 18 2009,01:30)

Quote (Zachriel @ June 17 2009,19:39)

Of course, "generation" is an abstraction, so it may represent an undefined breeding season. Frankly, the whole thing is an abstraction, so any strong claims about the specifics of biology are invalid anyway.

Depends on what species you're working on. For things like butterflies, it's fine. And, to be honest, the purpose of Mendel's Accountant is to make general statements about evolution, so this stuff is OK, as long as it's clear what the assumptions are. A lot of the assumptions shouldn't have too big an effect on the robustness of the claims.

I think you could make claims about particular models of evolution, but you would have to be very careful about a bold claim that evolution is falsified based on such an abstraction. Certainly some carefully devised claims can be justified.

Also, where does the 0.0000005 come from? I'm always suspicious of constants like that.

I was kinda hoping you knew. It may be an artifact of the calculation, but why that particular number? I agree that having a constant imbedded in the code without a notation is rather odd. Even if it is a standard equation, it's still best to notate it.

The random_normal()*noise[/color] is environmental variation, and we would typically set it to be constant. Because MA defines heritability, they have to back-calculate the environmental variance: that's what geno_fitness_variance*(1. - heritability) /heritability is doing. Except it's wrong, because the non_scaling_noise is added too, so the heritability isn't a heritability.

Non-scaling noise is set to 0 in the parameters, so we can ignore that for now. The problem of environmental variance scaling with genetic variance is a serious problem. Who could have guessed that the dinosaurs could have avoided planetary oblivion if they just weren't so darned diverse.

--------------Proudly banned threefour five times by Uncommon Descent.There is only one Tard. The Tard is One.

I've been trying to independently implement Mendel's Accountant, but keep running into such definitional problems. Heritability. Fitness. And how they're handling probability selection. I'm working with a simplified model, but Mendel's Accountant should be able to handle the simple cases with obvious results.

My advice: keep away from heritability. It complicates matters, and is dependent on the genetic variation in the population. I suspect Sanford et al. don't really understand quantitative genetics: certainly Sanford makes some mistakes because of his lack of understanding in Genetic Entropy.

I've been setting heritability to 1 when running tests, so I should be able to reach comparative results. I think a working heritability parameter could be included in a Mendel's Accountant. But the concept is sometimes counterintuitive.

We only need to be concerned with ranking, not absolute phenotypic fitness, when simulating heritability. So I've been normalizing fitness (which preserves ranking), then applying the specified noise. For a child population of 25 and heritability of 50%, I get rankings like this. The number is genotypic rank, the position is phenotypic rank.

3 5 1 8 6 2 9 7 12 15 4 13 11 10 22 19 16 14 18 20 21 24 23 17 25

--------------Proudly banned threefour five times by Uncommon Descent.There is only one Tard. The Tard is One.

Ugh. That's a horrible way to do the integration. I recognise the density (George Box was promoting it in the 50s), and it has an analytic solution: alpha_fav*gamma_fav*Gamma(1/gamma_fav), where Gamma() is the gamma function.

Also, where does the 0.0000005 come from? I'm always suspicious of constants like that.

Well it is 1/2*1/1,000,000, and since it is a density, the sum-as-integral needs to be scaled, but I thought the (0.000001*i) was supposed to do that. I think it's a boo-boo.

--------------The majority of the stupid is invincible and guaranteed for all time. The terror of their tyranny is alleviated by their lack of consistency. -A. Einstein (H/T, JAD)
If evolution is true, you could not know that it's true because your brain is nothing but chemicals. ?Think about that. -K. Hovind

My advice: keep away from heritability. It complicates matters, and is dependent on the genetic variation in the population. I suspect Sanford et al. don't really understand quantitative genetics: certainly Sanford makes some mistakes because of his lack of understanding in Genetic Entropy.

Modeling is easier if you simply work with the selective advantage of the genotype, rather than the selection coefficient for a partly heritable trait. Here the partly heritable trait is fitness itself, which makes my head hurt.

Quote

Indeed, but it can get arbitrarily close to 0, so it doesn't make any practical difference (unless you're working with continuous populations, when you end up with nano-foxes).

What kind of fitness are we talking about here, though? Since MA keeps the population constant, it is implicitly using relative fitness. In that case, introducing an arbitrary scaling factor into the fitness doesn't matter; it's only the ratio of fitnesses that matters. It seems to me that the model treats fitness as being relative until it get very small, at which point it is treated as absolute. But there is no simple way to determine absolute fitness from relative fitness.

This seems like a basic point, but I don't understand what the program is trying to model here.

Since MA keeps the population constant, it is implicitly using relative fitness. In that case, introducing an arbitrary scaling factor into the fitness doesn't matter; it's only the ratio of fitnesses that matters. It seems to me that the model treats fitness as being relative until it get very small, at which point it is treated as absolute. But there is no simple way to determine absolute fitness from relative fitness.

This seems like a basic point, but I don't understand what the program is trying to model here.

[Cynic]I think the program is trying to model nothing more or less than the complete, abject failure of Darwinian Evolution to produce anything other than Genetic Entropy leading inevitably to Mutational Meltdown, unless the genome is infused with Complex Specified Information from a divine source. [/Cynic]

--------------The majority of the stupid is invincible and guaranteed for all time. The terror of their tyranny is alleviated by their lack of consistency. -A. Einstein (H/T, JAD)
If evolution is true, you could not know that it's true because your brain is nothing but chemicals. ?Think about that. -K. Hovind

Since MA keeps the population constant, it is implicitly using relative fitness. In that case, introducing an arbitrary scaling factor into the fitness doesn't matter; it's only the ratio of fitnesses that matters. It seems to me that the model treats fitness as being relative until it get very small, at which point it is treated as absolute. But there is no simple way to determine absolute fitness from relative fitness.

This seems like a basic point, but I don't understand what the program is trying to model here.

[Cynic]I think the program is trying to model nothing more or less than the complete, abject failure of Darwinian Evolution to produce anything other than Genetic Entropy leading inevitably to Mutational Meltdown, unless the genome is infused with Complex Specified Information from a divine source. [/Cynic]

c... For unrestricted probability selection, divide the phenotypic c... fitness by a uniformly distributed random number prior to c... ranking and truncation. This procedure allows the probability c... of surviving and reproducing in the next generation to bec... directly related to phenotypic fitness and also for the correctc... number of individuals to be eliminated to maintain a constantc... population size.

do i=1,total_offspring work_fitness(i) = work_fitness(i)/(randomnum(1) + 1.d-15) end do

Divide by randomnum as well as add non-heritable noise to the phenotype?

:-) No idea what's going on.

Basically, he is applying reductions in heritability twice. The heritability function itself, and then this random procedure for selecting reproductive winners by re-ranking them before truncation and passing to the next generation. We could modify the divisor to some function(randomnum) and adjust the degree and type of randomness for picking winners {something like randomnum^N}. It's just another way of introducing random factors into the choice of winners and losers which should already have been accounted for in the heritability function.

The net result is a significant reduction in the effect of selection.

--------------Proudly banned threefour five times by Uncommon Descent.There is only one Tard. The Tard is One.

Basically, he is applying reductions in heritability twice. The heritability function itself, and then this random procedure for selecting reproductive winners by re-ranking them before truncation and passing to the next generation. We could modify the divisor to some function(randomnum) and adjust the degree and type of randomness for picking winners {something like randomnum^N}. It's just another way of introducing random factors into the choice of winners and losers which should already have been accounted for in the heritability function.

The net result is a significant reduction in the effect of selection.

It would make more sense if it were described in terms of some other phenotype with an effect on fitness. The phenotype has a genetic component and an environmental (or random) component, i.e. has a heritability. The phenotype then confers a fitness, which is the probability of successful reproduction. The number of successful offspring is also drawn from a random distribution, which is what's being done in this bit of code (I guess treated as a binomial distribution).

As a model of selection that seems reasonable (apart from the way the noise scales), but expressing it in terms of the heritability of fitness I find hard to understand -- fitness isn't a phenotype, it's a measure of the success of a phenotype. And the whole thing is pretty convoluted, when the essence of the model could be captured simply by assigning a fitness to the genotype and then calculating the number of offspring. This is a model of evolution written by a breeder rather than by a population geneticist, I would say.

Basically, he is applying reductions in heritability twice. The heritability function itself, and then this random procedure for selecting reproductive winners by re-ranking them before truncation and passing to the next generation. We could modify the divisor to some function(randomnum) and adjust the degree and type of randomness for picking winners {something like randomnum^N}. It's just another way of introducing random factors into the choice of winners and losers which should already have been accounted for in the heritability function.

The net result is a significant reduction in the effect of selection.

It would make more sense if it were described in terms of some other phenotype with an effect on fitness. The phenotype has a genetic component and an environmental (or random) component, i.e. has a heritability. The phenotype then confers a fitness, which is the probability of successful reproduction. The number of successful offspring is also drawn from a random distribution, which is what's being done in this bit of code (I guess treated as a binomial distribution).

Yes, I'm okay with that. That's how my own (rather primitive) model is structured. I'm not modeling recombination at this point, because I don't think that's where the problem lies. It's more basic than that. There's seems to be very little signal of selection. I'm still tinkering, but his results don't seem to jive.

--------------Proudly banned threefour five times by Uncommon Descent.There is only one Tard. The Tard is One.

Leaving aside the non-scaling noise which defaults to zero. And leaving aside the scaling problem which can be overcome with normalization.

c... For unrestricted probability selection, divide the phenotypic c... fitness by a uniformly distributed random number prior to c... ranking and truncation. This procedure allows the probability c... of surviving and reproducing in the next generation to bec... directly related to phenotypic fitness and also for the correctc... number of individuals to be eliminated to maintain a constantc... population size.

do i=1,total_offspring work_fitness(i) = work_fitness(i)/(randomnum(1) + 1.d-15) end do

The first random factor represents non-heritable influences on phenotype, the second representing chance of successful reproduction. Is there any processing between these two functions that we can't simply reduced to (ignoring the infinitesimal):

It would make more sense if it were described in terms of some other phenotype with an effect on fitness. The phenotype has a genetic component and an environmental (or random) component, i.e. has a heritability. The phenotype then confers a fitness, which is the probability of successful reproduction. The number of successful offspring is also drawn from a random distribution, which is what's being done in this bit of code (I guess treated as a binomial distribution).

The problem with describing the model in terms of a phenotype is that you then have to map the effect of the phenotype onto fitness. It's easier just to leap in and model fitness directly. Everything works fine if you define fitness as proportional to the expected number of offspring produced by an individual.

I haven't looked at the code, but if we assuming a constant population size and discrete generations, then (ignoring recombination and mutation), the way to model this is to assume that each parent has a fitness si. The offspring are then drawn from a multinomial distribution with probability for the ith parent being

si/sum(si)

(this would reduce to a binomial distribution if there were only 2 parents). The multinomial sampling is genetic drift.

You can treat log(si) as you would any standard trait: it's additive, so you can add the genetic and environmental effects.

Quote

As a model of selection that seems reasonable (apart from the way the noise scales), but expressing it in terms of the heritability of fitness I find hard to understand -- fitness isn't a phenotype, it's a measure of the success of a phenotype. And the whole thing is pretty convoluted, when the essence of the model could be captured simply by assigning a fitness to the genotype and then calculating the number of offspring. This is a model of evolution written by a breeder rather than by a population geneticist, I would say.

Not even a breeder: I would expect them to understand heritability a bit better than this!

--------------It is fun to dip into the various threads to watch cluelessness at work in the hands of the confident exponent. - Soapy Sam (so say we all)

I haven't looked at the code, but if we assuming a constant population size and discrete generations, then (ignoring recombination and mutation), the way to model this is to assume that each parent has a fitness si. The offspring are then drawn from a multinomial distribution with probability for the ith parent being

si/sum(si)

(this would reduce to a binomial distribution if there were only 2 parents). The multinomial sampling is genetic drift.

Yes, I've written a program for that kind of model, except that I imposed selection in the differential survival of the offspring. Including options for truncation selection and a few other things, it amounted to all of 158 lines, including comments, white space and the multinomial routine.

Quote

You can treat log(si) as you would any standard trait: it's additive, so you can add the genetic and environmental effects.

I haven't thought about this before. Does adding environmental effects do anything more than reduce the effective selection coefficient?

Of course, there's a big difference between using models to analyze how particular aspects of evolution work and trying to model the entire process well enough to say whether it can occur.

Well, that's just being picky!

But yeah, if populate size is allowed to go way up, then the simulation would have to deal with food shortages (i.e., fitness would drop across the board if population gets too large for the food supply).

Of course, there's a big difference between using models to analyze how particular aspects of evolution work and trying to model the entire process well enough to say whether it can occur.

Well, that's just being picky! :p

But yeah, if populate size is allowed to go way up, then the simulation would have to deal with food shortages (i.e., fitness would drop across the board if population gets too large for the food supply).

Henry

That's not too difficult to implement. You scale the fitness so that it is above 1 at low density, and then apply some density dependence to it, which affects all genotypes equally. Then you draw the number of offspring from a Poisson distribution with that mean.

i.e. if fitness is si, and the population size is N, then the number of offspring is Poisson distributed with mean si exp(-N/K), for example (exp(-N/K) is the discount for density).

I think doing it this way is nicer because (a) it's easier to programme (there's no independence problems, or multinomials with huge N's), and (b) you're modelling absolute fitness, so it can go below 1, and you might get extinctions.

--------------It is fun to dip into the various threads to watch cluelessness at work in the hands of the confident exponent. - Soapy Sam (so say we all)

And the whole thing is pretty convoluted, when the essence of the model could be captured simply by assigning a fitness to the genotype and then calculating the number of offspring.

From much of this discussion, it's easy to see how many different ways there are to abstract an evolutionary process.

These are the primary attributes I've found in Mendel's Accountant:

* Population of Genotypes (genotypic fitness). * Genotype modified by heritability and noise to Phenotype (phenotypic fitness). * Genotype further modified for chance of reproductive success to Working Fitness. * Number of offspring proportional to sqrt(Phenotype). * Reproduction with mutation.* Throw in more random factors, such as random death.

> The calculation of Phenotype is not scaled. > The calculation of Working Fitness is division by Randomnum. Not the sqrt(randomnum), not some other exponent. Or even a normal binomial to determine reproductive success. > Number of offspring proportional to sqrt(Phenotype). Why the square root? Why not some other exponent? > Random death? Isn't that already accounted for in phenotypic fitness (for stillbirths) or chance of reproductive success?

You may as well throw in another factor that randomizes falling off a cliff and whether she has a headache, and just make up numbers or exponents or parameters that seem right. The problem is the qualitative nature of the simulation and the arbitrariness of some of the assumptions. I just don't see Mendel's Accountant being salvageable as a quantitative model of biology.

--------------Proudly banned threefour five times by Uncommon Descent.There is only one Tard. The Tard is One.

And the whole thing is pretty convoluted, when the essence of the model could be captured simply by assigning a fitness to the genotype and then calculating the number of offspring.

From much of this discussion, it's easy to see how many different ways there are to abstract an evolutionary process.

These are the primary attributes I've found in Mendel's Accountant:

* Population of Genotypes (genotypic fitness). * Genotype modified by heritability and noise to Phenotype (phenotypic fitness). * Genotype further modified for chance of reproductive success to Working Fitness. * Number of offspring proportional to sqrt(Phenotype). * Reproduction with mutation.* Throw in more random factors, such as random death.

No recombination? We know about mutational meltdown, and we also know that sex can mitigate the effect.

Quote

You may as well throw in another factor that randomizes falling off a cliff and whether she has a headache,

Don't ask Gil to help with the programming for that.

--------------It is fun to dip into the various threads to watch cluelessness at work in the hands of the confident exponent. - Soapy Sam (so say we all)

And the whole thing is pretty convoluted, when the essence of the model could be captured simply by assigning a fitness to the genotype and then calculating the number of offspring.

From much of this discussion, it's easy to see how many different ways there are to abstract an evolutionary process.

These are the primary attributes I've found in Mendel's Accountant:

* Population of Genotypes (genotypic fitness). * Genotype modified by heritability and noise to Phenotype (phenotypic fitness). * Genotype further modified for chance of reproductive success to Working Fitness. * Number of offspring proportional to sqrt(Phenotype). * Reproduction with mutation.* Throw in more random factors, such as random death.

No recombination? We know about mutational meltdown, and we also know that sex can mitigate the effect.

Oops. Good point. Haven't got that far in reconstructing the algorithm, but of course. Add it to the list of primary attributes.

c... Randomly mate one half of the population with membersc... from the other half.

The rest of the code seems a lot more complicated than need be, but that might just be because of the dynamic linkage option. The command do ch=1,haploid_chromosome_number appears twice in the code. (Indentation doesn't seem to be consistent so it's hard to know where the beginning and ending of sections are to be found, though that might be my reader.)

I still think the problem with Mendel's Accountant is more basic, and breaks before that point.

--------------Proudly banned threefour five times by Uncommon Descent.There is only one Tard. The Tard is One.

You may as well throw in another factor that randomizes falling off a cliff and whether she has a headache,

Don't ask Gil to help with the programming for that.

Why not? He helped me with Word Mutagenator.

Quote

GilDodgen: This is not hard: Simply print out the dictionary contained in the Zachriel program and be done with it. No search is necessary, because all the requisite information has been supplied by the programmer in advance.

GilDodgen has never quite grasped the concept of a model. (In Word Mutagenation, the evolving sequences have no knowledge of the word-scape. They either survive or die. It was an ID challenge, by the way, not my idea.) They never did let me respond on their blog.

--------------Proudly banned threefour five times by Uncommon Descent.There is only one Tard. The Tard is One.