Evolutionary mechanisms part 2: Simulating evolution

Note: if you tried to use this simulation before 10-Jan-16 there was an issue with it which has now been fixed.

This is not really a blog post as much as a resource. Throughout this series, I am going to use a simulator that I wrote in order to model the different evolutionary mechanisms, and I wanted that simulator to be available for people to play around with. So this post is simply an explanation of how the simulator works and how you can use it. Unfortunately, I’m not computer savvy enough to know how to write a simulator that can be run online, so I wrote it for the statistical program R, which a large portion of scientists use. Therefore, you’ll have to download R, but it is free and easy to do. I have provided both very basic instructions and explanations of how this simulation works, as well as more thorough explanations for those who want the details. The actual code itself is provided at the end .

Note: these explanations are predicated on you already understanding terms like allele frequencies, dominant vs. recessive, phenotype vs. genotype, etc. If those terms are foreign to you, please read part 1 of this series before proceeding. 

 

What the simulation does (simple version)

In short, the simulator takes a population for which there are only two alleles for a particular gene. It then randomly mates them (i.e., there is no sexual selection), and it determines which individuals live and die based on their phenotype. At that point, it either moves onto the next generation using those individuals, or it brings new individuals in from a neighboring population. Next, it breeds those individuals to form a new group of offspring, determines who lives and dies, etc. It continues to do this until it has reached the number of generations that you told it to simulate.

The program is designed to be very versatile, so you get to set the original gene frequencies, the selection pressure (i.e., how strongly phenotype affects survivorship), how many individuals immigrate from a neighboring population, what the allele frequencies are in the neighboring population, how many populations it will simulate, how many generations it will simulate for each population, and what the output will look like (at the end of the simulation it makes a graph of the results, but you can decide exactly what it graphs). That may sound complicated, but its actually pretty simple.

I personally think it’s lots of fun to play with and there are many things you can do with it. For example, you can set the survival probabilities for both alleles to 100% (that way there is no selection) and model how population size affects genetic drift. You can also set a selection differential and see how immigration, population size, the strength of selection, etc. affect the population’s ability to adapt.

 

How to use the simulation (simple version)

Downloading the simulation
First, you’ll need to download R. Follow this link, then navigate to your country and follow one of the links under it (for the sake of this simulation, it doesn’t really matter which of those links you use). Next, follow the instructions for downloading it (it is totally free and safe). Although not strictly necessary, I strongly recommend that after downloading R, you download RStudio, because it makes things much easier to work with (again, it’s free).

Once you have downloaded and installed R and RStudio, copy the code at the end of this post, paste it into R, and hit enter (note: if you are using RStudio and you pasted into the top box, then use control+a to select everything then hit control+r or control+enter or command+r or command +enter [depending on your version and operating system). This will load the simulation into R.

Note (added 10-Jan-16): Unfortunately, when copying the code from wordpress, something screwy happens to the quote marks. So, after pasting the code into R, use ctrl+f to find and replace all of the quote marks. First, copy this quote mark “ and paste it into the “find” box and simply type a quote mark into the “replace” box. After replacing those, do the same thing but with this quote mark ”. That should solve the problem and let you run the code.

If you don’t already have them installed, you will need to install two R packages to run the program. In RStudio, there should be a tab called “packages” on the right hand side. Click that, then click the button called “install” and tell it to install ggplot2 and reshape2 (it will ask if you want it to make a directory, say yes).

Running the simulation
To actually run the simulation, type evolution() into the lower box and hit enter. This will run the simulation using the default values, and when it is done, a graph should appear on the right side (you can adjust the window to see it better as well as saving it as an image file). Each line is a different population. The x-axis shows generations, and the y-axis shows the percentage of alleles that are dominant in each generation (when on default). You should see that the allele frequencies (i.e., the percent of dominant alleles) changes over time.

This shows an example of the output of the simulation using the default values.

This shows an example of the output of the simulation using the default values.

If you want to actually manipulate the parameters of the simulation rather than using the default, you will need to include some numbers after evolution(. Here is a brief explanation of what each number does (everything has default values, so you can modify as many or as few of these as you want).

  • First number = number of dominant alleles in the starting population (default = 100)
  • Second number = number of recessive alleles in the starting population (default = 100)
  • Third number = the average percentage of individuals with a dominant phenotype that will survive to a reproductive age (default = 100)
  • Fourth number = the average percentage of individuals with a recessive phenotype that will survive to a reproductive age (default = 50)
  • Fifth number = the number of generations it will simulate for each population (default = 100)
  • Sixth number = the number of populations that it will simulate (default = 10)
  • Seventh number = the number of individuals that will immigrate from a neighboring population at the end of each generation (default = 0)
  • Eighth number = the number of dominant alleles in the neighboring population (default = 10, this number only maters if the seventh number is greater than 0)
  • Ninth number = the number of recessive alleles in the neighboring population (default = 10, this number only maters if the seventh number is greater than 0)
  • Final value = this determines the graphical output. If you enter graph=”dom” you will get the results as a graph of the percent of dominant alleles in each generation (this is the default). graph=”rec” will give you a graph of the percent of recessive alleles in each generation. graph=”surv” will give you a graph of the percent of individuals who survived to a reproductive age in each generation (i.e., recruitment).

To use these values, simply type them after evolution( and separate them by comas. For example, evolution(100,90,80,70,60,50,40,30,20,graph=”dom”) would run a simulation with a starting population of 100 dominant alleles and 90 recessive alleles (note: the sum of those two values must be a even number). On average, 80% of dominant phenotypes would survive, and 70% of recessive phenotypes would survive. It would run 60 generations per population, and a total of 50 populations. At the end of each generation, 40 individuals would immigrate from the neighboring population, and the neighboring population would consist of 30 dominant alleles for every 20 recessive alleles (i.e., 60% dominant alleles, 40% recessive alleles). When it was done, you would get a graph showing the percent of dominant alleles at the end of each generation (i.e., after selection).

Because there are default values, you can leave any parameters that you want blank, but if you skip parameters, then you need to include the commas. For example, if all that you cared about was changing the initial allele frequencies to 50 and 90, then you could enter evolution(50,90) and the program would run with 50 dominant alleles, 90 recessive alleles, and everything else set to default. If however, you only wanted to change the survivorship so that dominant phenotype never survives (0) and recessive phenotype always survived (100), you would enter, evolution( , ,0,100). You have to have those first two commas because they tell R which parameters your are actually changing. After you enter those parameters though, it knows the defaults. As a final example, suppose that you wanted the survivorship above, but you wanted to change the final output so that you could see the percent that survived each generation. Do this by entering evolution( , ,0,100, , , , , ,graph=”surv”). Anytime that you skip over a value, you need commas.

Important notes
The initial allele frequencies also determine your starting population size. Each individual has two alleles, so the total number of alleles divided by two will give you the starting population size. This means that the sum of your two allele frequencies must equal a whole number. Breeding occurs randomly and with replacement, so one parent can have more than one offspring.

It is ok if you immigrate more individuals than you have alleles in the neighboring population, because the individuals that immigrate are chosen randomly with replacement. In other words, the simulation views the numbers as ratios not true numbers (e.g., 1 and 9, 10 and 90, 100 and 900, etc, are all identical as far as the program is concerned). This only applies to the neighboring population. The initial population uses true numbers, not ratios.

Playing with the data
If you want to save your results as an excel file that you can play around with, there are several things that you need to do. First, on the top toolbar, click Session then Set working directory then Choose directory then navigate to where you would like to save your data. Next, when you run the simulation, you have to name your output. For example results <- evolution() this will name your results “results.” Once the simulation is done, type write.csv(results,”results.csv”) this will make a .csv file of your results, called “results” and save it in whatever directory you told it to (note: you can name your data and file essentially anything you want, but don’t include spaces and don’t call it “evolution”). When you open the file, the first set of columns shows the percent of dominant alleles at the start of each generation, and the second set of columns shows the percent that survived to a reproductive age in each generation. If you want the percent of recessive alleles, then just subtract the dominants from 100.

 

Detailed instructions and notes about the simulation

Simulation assumptions and guiding rules

  • Complete dominance (i.e., homozygous dominant individuals, and heterozygous individuals behave the same way, the recessive allele is only expressed in homozygous recessive individuals)
  • Discrete non-overlapping generations
  • The number of offspring produced each generation is constant and always equals the initial parent population size
  • Mating is random, and individuals can produce more than one offspring
  • Individuals can reproduce sexually or asexually
  • Mortality only occurs during recruitment into adulthood
  • New immigrants are adults. Therefore, they do not undergo selection before reproducing

Simulation paramater details

Function = evolution(number_of_dominant_alleles, number_of_recessive_alleles, dominant_allele_recruitment, recessive_allele_recruitment, number_of_generations, number_of_populations, number_of_immigrants, numb_neighb_dom_alleles, numb_neighb_rec_alleles, graph)

  • number_of_dominant_alleles = number of dominant alleles in the initial parent population (default = 100)
  • number_of_recessive_alleles = number of recessive alleles in the initial parent population (default = 100)
    Note: number_of_dominant_alleles + number_of_recessive_alleles must equal an even number. That number divided by two = size of the parent population
  • dominant_allele_recruitment = the probability that an individual with a dominant phenotype will survive to adulthood (default = 100)
  • recessive_allele_recruitment = the probability that an individual with a recessive phenotype will survive to adulthood (default = 50)
    Note: dominant_allele_recruitment and recessive_allele_recruitment range from 0–100. 0 = none survive, 50 = 50% chance of survival for each individual, 100 = all survive, etc. Values must be whole numbers. Recruitment values for dominant and recessive alleles are completely independent of each other.
  • number_of_generations = the number of generations that will be simulated for each population (default = 100)
  • number_of_populations = the number of populations that will be simulated (default = 10)
  • graph = the format of the graph that is produced (default = “dom”).
  • number_of_immigrants = the number of individuals that immigrate each generation (default = 0)
    Note: immigration takes place after selection (i.e., after the formation of the new parent generation). Thus, immigrants are not under selection, but their offspring will be. Immigration does not take place until after the first round of selection.
  • numb_neighb_dom_alleles = the number of dominant alleles in the neighboring population (default = 10)
  • numb_neighb_rec_alleles = the number of recessive alleles in the neighboring population (default = 10)
    Note: immigrants will be randomly selected from the gene pool of numb_neighb_dom_alleles + numb_neighb_rec_alleles
  • Note: words must be put in quotes.
    “dom” = graph of dominant allele frequencies against generation.
    “rec” = graph of recessive allele frequencies against generation
    “surv” = graph of survivorship (recruitment) against generation.

The following is an example showing the workflow for a run using the following parameters:

evolution(number_of_dominant_alleles=100, number_of_recessive_alleles=100, dominant_allele_recruitment=100, recessive_allele_recruitment=40, number_of_generations=100, number_of_populations=10, number_of_immigrants=10, numb_neighb_dom_alleles=50, numb_neighb_rec_alleles=100, graph=”dom”)

Note: this code could also simply be entered as evolution(100,100,100,40, 100,10,10,50,100, graph = “dom”)

This sows the basic workflow that the simulation uses.

This shows the basic workflow that the simulation uses.

  1. It will construct a population of 100 individuals (each individual has two alleles, so population size will always = [number_of_dominant_alleles + number_of_recessive_alleles]/2).
  2. It will randomly select 100 sets of two alleles (i.e., individuals).
  3. It will apply the recruitment levels to each individual. In this example, all individuals with a dominant phenotype will survive, but each individual with a recessive phenotype will have a 40% chance of survival. The probabilities are run independently on each individual, so on any given run, you may have slightly more or less than 40% of recessives surviving, but the average survivorship for homozygous recessives will be 40%.
  4. It will randomly select 20 alleles (10 individuals) from the neighboring population, and add them to the population of survivors, thus forming the new parent generation (if there was no immigration, this step would be skipped, and the survivors would simply be the new parent generation).
  5. It will repeat steps 2–4 until it has simulated 100 generations (not including the initial parent generation). Each new run of step 2 begins with the new parent generation formed in step 4.
  6. Once it has complete all 100 generations, it goes back to step 1 and starts a new population. In this case, it will make 10 populations in total.

Warning messages
Depending on the version of R you are using, and whether or not the population goes extinct part way through a simulation, you may get any of the following warning messages. Just ignore them, the simulation will still run correctly.  “package ‘ggplot2’ was built under R version 3.0.3”
“package ‘reshape2’ was built under R version 3.0.3″”No id variables; using all as measured variabls””In loop_apply(nc, do.ply): Removed   rows containing missing values (geom_path).”

General Notes

If there is no immigration, populations may go extinct part way through the simulation; however, this is less likely than it would be in a real population because the same number of offspring are produced each generation, regardless of the number individuals who survived to form the new parent population. This simplification does not adversely affect the overall patterns, and there are some real populations where the number of offspring produced is highly dependent on the number of competitors, so it is not an entirely unreasonable situation.

If there is immigration, the population make go extinct and recover multiple times during a simulation.

It may seem odd that the program selects alleles from the entire gene pool of the parent population rather than splitting the parents up into homozygous dominants, heterozygotes, and homozygous recessives, however, mathematically, both situations are identical because each allele has a 50% chance of being passed from a given parent.

For example, if your population consisted of 10 homozygous dominant individuals, 20 heterozygotes, and 10 homozygous recessives (total dominant alleles = 30, total recessive alleles = 30), then we would calculate the odds of an allele being dominant as follows:

  1. The odds of having a homozygous dominant parent = 25% ([10/40]*100)
  2. If a homozygous dominant parent is selected, the chance of getting a dominant allele from that parent = 100% ([2/2]*100)
  3. Thus, from the product rule, the overall odds of getting a dominant allele from a homozygous dominant parent = 25% ([0.25*1]*100)
  4. The odds of having a heterozygous parent = 50% ([20/40]*100)
  5. If a heterozygous parent is selected, the chance of getting a dominant allele from that parent = 50% ([1/2]*100)
  6. Thus, from the product rule, the overall odds of getting a dominant allele from a heterozygous parent = 25% ([0.5*0.5]*100)
  7. Finally, via the sum rule, the overall odds of an allele being dominant = 50% (0.25+0.25)

Now, using the algorithm used in the simulation, where alleles are randomly selected from the gene pool without regards for homozygotes or heterozygotes, we find that there are 30 dominant alleles and 30 recessive alleles, so the chance of getting a dominant allele is 50%. So this method produces the same results as the more complicated method of including homozygotes and heterozygotes.

The actual program

Everything below this is the actual code. Simply copy it and paste into R as described above.

evolution <- function(number_of_dominant_alleles=100, number_of_recessive_alleles=100, dominant_allele_recruitment=100, recessive_allele_recruitment=50, number_of_generations=100, number_of_populations=10, number_of_immigrants=0, numb_neighb_dom_alleles=10, numb_neighb_rec_alleles=10, graph=”dom”){
require(ggplot2)
require(reshape2)

#the following simply makes a nice header row and serves as the source for the .i dataframes
c1 <- as.data.frame(cbind(c(“Parent”,rep(“Generation”,(number_of_generations)))))
c2 <- as.data.frame(cbind(c(“population”,(2:(number_of_generations+1)))))
c1 <- as.data.frame(cbind(c1,c2))
c1 <- as.data.frame(paste(c1[,1],c1[,2]))

perc_dom_alleles.i <- c1
perc_recruitment.i <- c1
for(i in 1:number_of_populations){
pop <- c(rep(1,number_of_dominant_alleles),rep(2,number_of_recessive_alleles))
pop_size <- (length(pop)/2)
prob_dom_recr <- rep(1,dominant_allele_recruitment)
prob_dom_recr <- c(prob_dom_recr,rep(2,100-length(prob_dom_recr)))
prob_rec_recr <- rep(1,recessive_allele_recruitment)
prob_rec_recr <- c(prob_rec_recr,rep(2,100-length(prob_rec_recr)))
neighb_pop <- c(rep(1,numb_neighb_dom_alleles),rep(2,numb_neighb_rec_alleles))

results.i <- as.data.frame(cbind(((number_of_dominant_alleles/(number_of_dominant_alleles+number_of_recessive_alleles))*100),NA))
colnames(results.i) <- c(“% dominant alleles”,”% recruitment”)
for(i in 1:number_of_generations){
gen.i <- NULL
#This loop will construct the population. Each individual came from a random sample of the parent population. Selection was done with replacement. 4 = homozygous dominant, 5 = heterozygous, 6 = homozygous recessive
for(i in 1:pop_size){
ind.i <- sum(sample(pop,2,F))
ind.i <- if(ind.i == 2){ind.i = 5}else{if(ind.i==3){ind.i = 6}else{if(ind.i==4){ind.i=7}}}
gen.i <- c(gen.i,ind.i)}
gen.i <- sort(gen.i)
dom.i <- length(gen.i[gen.i==5])
het.i <- length(gen.i[gen.i==6])
rec.i <- length(gen.i[gen.i==7])
#this calculates the number of homozygous dominant survivors that get recruited into the next generation
dom_surv.i <- sample(prob_dom_recr,dom.i,T)
dom_surv.i <- sum(dom_surv.i[dom_surv.i==1])
#this calculates the number of heterozygous survivors that get recruited into the next generation
het_surv.i <- sample(prob_dom_recr,het.i,T)
het_surv.i <- sum(het_surv.i[het_surv.i==1])
#this calculates the number of homozygous recessive survivors that get recruited into the next generation
rec_surv.i <- sample(prob_rec_recr,rec.i,T)
rec_surv.i <- sum(rec_surv.i[rec_surv.i==1])
#this calculates the percent of dominant alleles in the population after selection (i.e., at the start of the next generation)
perc_dom.i <- (((dom_surv.i*2)+het_surv.i)/(sum(dom_surv.i,het_surv.i,rec_surv.i)*2))*100
#this calculates the recruitment rate (as a percentage of offspring)
perc_surv.i <-  ((sum(dom_surv.i,het_surv.i,rec_surv.i))/pop_size)*100
gen_res.i <- cbind(perc_dom.i,perc_surv.i)
colnames(gen_res.i) <- c(“% dominant alleles”,”% recruitment”)
results.i <- as.data.frame(rbind(results.i,gen_res.i))
#this introduce immigrant alleles. This happens after selection and survival/allele estimates. Thus, it only affects the gene pool for the next generation
imm.i <- sample(neighb_pop,(number_of_immigrants*2),T)
pop <- c(rep(1,((dom_surv.i*2)+het_surv.i)),rep(2,((rec_surv.i*2)+het_surv.i)),imm.i)
if((perc_surv.i+number_of_immigrants) == 0){break}}
null_col <- length(results.i[,1])
null_col <- as.data.frame(cbind(c(rep(NaN,(number_of_generations+1)-null_col)),c(rep(NaN,(number_of_generations+1)-null_col))))
colnames(null_col) <- c(“% dominant alleles”,”% recruitment”)
results.i <- as.data.frame(rbind(results.i,null_col))
results.i <- round(results.i,1)
dom_a.i <- as.data.frame(cbind(results.i[,1]))
recru.i <- as.data.frame(cbind(results.i[,2]))
perc_dom_alleles.i <- as.data.frame(cbind(perc_dom_alleles.i,dom_a.i))
perc_recruitment.i <- as.data.frame(cbind(perc_recruitment.i,recru.i))}
results.i <- cbind(perc_dom_alleles.i,perc_recruitment.i)
c1 <-  c(“”,rep(“Population”,number_of_populations),””,rep(“Population”,number_of_populations))
c2 <-  c(“Generations”,1:number_of_populations,”Generations”,1:number_of_populations)
c1 <- as.data.frame(cbind(c1,c2))
c1 <- (paste(c1[,1],c1[,2]))
colnames(results.i) <- c1

if(graph == “dom”){
g.i <- as.data.frame(results.i[,1:number_of_populations+1])}

if(graph == “rec”){
g.i <- as.data.frame(results.i[,1:number_of_populations+1])
g.i <- 100-g.i}

if(graph == “surv”){
g.i <- as.data.frame(results.i[,(number_of_populations+3):ncol(results.i)])}

g.i <- melt(g.i)
col1 <- as.data.frame(cbind(rep(c(1:(number_of_generations+1)),number_of_populations)))
g.i <- cbind(col1,g.i)
colnames(g.i) <- c(“Generation”,”variable”,”Percent”)
graph <- ggplot() +
geom_line(data = g.i, aes(x = Generation, y = Percent, group = variable), color = “#000099”)

graph <- graph + theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(),panel.grid.minor = element_blank(), axis.line = element_line(colour = “black”))
graph <- graph + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(limits = c(0, 100))
print(graph)
graph <- results.i
print(graph)}

Posted in Science of Evolution | Tagged , , , , | 1 Comment

Evolutionary mechanisms part 1: What is evolution?

theodosius dobzhansky quote nothing in biology makes sense except in the light of evolutionI am utterly enamored with evolution. To me, it is not only the central concept of biology, but it is the single most interesting topic in all of science. Nothing fascinates me as much as evolution. Unfortunately, when I tell people about evolution, I am usually debating creationists rather than simply teaching. This irritates me because I really prefer to think of myself as a science educator rather than a debater, and I would prefer to spend my time explaining the marvelous intricacies of evolution, rather than wasting it trying to convince someone that dinosaurs and humans never coexisted. Therefore, I have decided to briefly forgo the argumentative topics that characterize this blog, and instead write a series simply explaining evolution and why it is so freaking cool. My experience has been that even most people who accept evolution don’t really understand it, and most creationists reject it largely because they don’t understand it. So I hope that this series will be of wide interest regardless of whether or not you accept evolution as the fantastic scientific fact that it is. In this first post, I will simply lay the basic groundwork, and in future posts, I will explain the details of the different evolutionary mechanisms (selection, gene flow, genetic drift, and mutation). Throughout this series, I will use a simulator to illustrate how these mechanism operate.

 

What is evolution?

If you ask a group of people to define evolution, you will get a wide range of answers, almost all of which will be wrong or at least incomplete or inaccurate. Part of the problem stems from the fact that the term “evolution” can mean several different things. At the most basic level, we have the process of evolution. This is simply the change in the genetic makeup of a population over time. At a higher level, we have the fact of evolution. This is the scientific fact that life on earth has evolved over billions of years (despite what creationists will tell you, this fact has been repeatedly confirmed by genetics, the fossil record, biogeography, etc., and it is settled science). Finally, at the highest level, we have the theory of evolution by natural selection. This is the theory that natural selection has been the dominant mechanism that has caused evolutionary change.

Let me describe the relationship among these three uses of the term “evolution” another way. The process of evolution can happen through a number of different mechanisms (genetic drift, selection, gene flow, and mutation). All of these cause the genetic makeup of a population to change from one generation to the next. These small changes (what are often called microevolution) accumulate over time, ultimately resulting in large changes which are often referred to as “macroevoltuion.” There is no difference in the mechanisms of micro and macroevolution. Rather, macroevolution is just an accumulation of microevolutionary steps, and it is a fact that those changes have been slowly accumulating over billions of years, ultimately resulting in the evolution of all of the living things that we see today. Nevertheless, the question remains, what caused the evolution? This is where the theory of evolution comes in. Remember, theories always explain facts, and the theory of evolution by natural selection explains the fact of evolution by proposing that natural selection is the primary mechanism that has driven the process of evolution throughout the history of life on earth.

 

The process of evolution: simple genetics

Throughout this series, my focus is going to be on the process of evolution, and I want to specifically look at the various mechanisms of evolutionary change, but first we need to get several terms and definitions straightened out. The best way to define the process of evolution is, “a change in the allele frequencies of a population over time.” The two important parts of that definition are “allele frequencies” and “population” so let’s look at each of them.

Allele frequencies
Hopefully everyone reading this realizes that most of your traits are controlled (at least partially) by your DNA, and those traits can be passed onto your offspring. If I asked you, for example, why your eyes are the color that they are, you would probably say, “because I got the genes for that eye color from my parents.” That response would, however, not actually be correct. You see, most people say “gene” when they really mean “allele.” A gene is just a section of DNA that codes for a specific type of trait. So, for example, you have a gene for eye color (actually several, but more on that later), but the gene doesn’t actually determine what color your eyes will be, the alleles do that. For most genes, there are multiple alleles and the alleles determine the expression of the gene. Thus, you don’t get the gene for blue eyes. Rather, you get the gene for eye color and the alleles for blue eyes.

A common example of this is the pea plant. Pod color in pea plants is inherited through complete dominance, and is typically illustrated using a dominant green allele (G) and recessive yellow allele (g). Hopefully you all remember high school biology, but I will briefly review just to be sure. For each gene, an individual has two alleles (one from each parent), but which allele will get passed onto their offspring is random. Thus, if a pea plant was Gg, on average, 50% of its offspring would receive the dominant allele (G) and 50%would receive the recessive allele (this randomness is going to become very important in later posts on genetic drift). Further, which alleles an individual receives determines how the gene will be expressed. In complete dominance, the dominant allele completely masks the recessive allele, so both Gg and GG individuals will be green. Thus, green is their phenotype (the expression of the alleles) whereas Gg and GG are the genotypes (the actual alleles that they possess). The only way to get a yellow phenotype is to receive two recessive alleles (gg).

Now, let’s tie all of this back into evolution. Remember, the process of evolution is simply the change in the allele frequencies of a population over time. So, for example, let’s say that a population of pea plants had 50% G alleles and 50% g alleles. Those would be the population’s allele frequencies (i.e., 50% G, 50% g). Now, let’s say that for some reason, being yellow was disadvantageous. In other words, gg individuals produced fewer offspring than GG and Gg individuals. This would result in fewer g alleles getting passed to the next generation. Thus, the allele frequencies for the next generation would be shifted towards G alleles (e.g., they might be 60% G and 40% g). In that case, we would say that the population had evolved because the allele frequencies had changed. Specifically, that population would have evolved by natural selection, but the other evolutionary mechanism all also work by manipulating the allele frequencies. Some of these mechanisms (such as genetic drift and gene flow) can even be harmful to the population (yes, evolution can actually be a bad thing), but I’ll explain that in future posts.

Finally, it’s important to realize that most traits are polygenic (i.e., influenced by multiple genes), and most genes have many different alleles. Thus, while we often use simple examples that involve only one gene with two alleles, most traits are considerably more complicated than that. In fact, even most of our text book examples are actually very complex and are not nearly as simple as we are led to believe in introductory courses (you can find good explanations of many of them here). This is extremely important because these polygenic, mutli-allele traits provide extraordinary variation for evolution to work with, and, as I will explain more in future posts, most evolutionary mechanisms require variation.

Populations evolve
This should be obvious from the discussion above, but I’ll explicitly state it anyway: populations evolve not individuals. Because evolution deals with allele frequencies, it is inherently impossible for an individual to evolve. Whenever we talk about evolution, we are talking about changes that are taking place within populations, not individuals.

 

Introducing the mechanisms

I have mentioned the various evolutionary mechanisms several times now, and each of them will get their own post later on, but for right now, I want to give a brief definition of each of them. I also want to note that even young earth creationists accept these mechanisms (with the possible exception of mutations). They simply make the absurd and ad hoc claim that accumulating small changes somehow doesn’t lead to a large change.

Natural selection
This is the most well known mechanism. The concept is really quite simple: individuals with the best alleles will survive better and produce more offspring than individuals with alleles that are not as useful. Thus, by virtue of the fact that individuals with good alleles produce the most offspring, there will be proportionately more good alleles in the next generation. In other words, the allele frequencies shift from one generation to the next, with the beneficial alleles gradually becoming more common.

Genetic drift
This is a random change in allele frequencies, and it can happen several different ways. For example, a catastrophe may randomly kill off a large number of individuals, and if the group that died had different allele frequencies than the population as a whole, then the allele frequencies of the surviving population will be different from the allele frequencies of the original population. Thus, the population will have evolved. Another way that this happens is through the random chance involved in which alleles get passed. Remember, each individual has two alleles for a give gene, but which allele they pass to their offspring is random. So if just by chance, the g allele gets passed more than the G allele, that will cause the population to evolve, because the allele frequencies will change. Regardless of the details, the key here is that genetic drift is always random.

Gene flow
Gene flow is simply the exchange of genes among two or more populations. Imagine for a minute that one population has only the G allele, while a neighboring population has only the g allele. Then for some reason, individuals from one population end up moving into the neighboring population and breeding with its individuals. This would result in Gg individuals. Thus, the population would have evolved because, once again, the allele frequencies would have changed (i.e., the frequencies were 100% G and 0% g, but now there are some g).

Mutation
Mutations are random changes in the genetic code. They are usually neutral, but a small subset are beneficial and a small subset are harmful. Mutations are extremely, extremely important for evolution because they are the only way to generate new genetic information. Both selection and genetic drift actually remove variation from a population. Conversely, gene flow can add variation to a population, but it doesn’t actually create new genetic material. Rather, it simply moves it between populations. Thus, without mutations, species would slowly loose genetic variation until eventually, all individuals would be genetically identical.

Concluding remarks

At this point, I have covered the essential basics of what evolution is, and how it works. Because I was just trying to go over the fundamentals, this post has probably been fairly dry and boring, but I expect future posts to be far more interesting as we delve into the details of the evolutionary mechanisms. So stay with me, and by the end of this, I think that you will agree that evolution really is the most glorious and fascinating process imaginable.

Other posts on evolutionary mechanisms:

 

Posted in Science of Evolution, Uncategorized | Tagged , , , , , | 5 Comments

Supporting science isn’t the same as supporting big business

Hardly a day goes by without someone accusing me of being a “shill.” You see, I have the audacity to say that we should be getting scientific information from reputable scientific sources (i.e., the peer-reviewed literature), rather than trusting blogs, conspiracy theorist websites, etc. In the minds of science deniers, however, that can only mean one thing: I have sold my soul to Monsatan/Big Pharma and am now a hired gun who roams the internet spreading propaganda. Even those who don’t go quite to that extreme often claim that I am “in love with Monsanto” or am a big supporter of pharmaceutical companies, but nothing could be further from the truth. I have never received any money from a corporation, nor do I particularly like big business. In fact, I am pretty left-leaning on most economic issues.

So if I don’t like big business, why would I spend so much time and effort promoting GMOs, vaccines, etc.? It’s really quite simple: a veritable mountain of evidence says that GMOs are safe, vaccines don’t cause autism, vaccines save lives, etc. I support the science not the companies who benefit from the science. It is entirely possible to loath a company’s business policies and still think that their scientific claims are correct.

If, for example, it was announced that Monsanto had gone bankrupt and was shutting down, I wouldn’t care (provided that their research would be picked up and carried forward by other parties). That stipulation is, however, extremely important. You will, at times, see me “defend” Monsanto/Big Pharma, but that’s not because of any particular love that I have for those companies. Rather, it is because they research, design, and produce marvelous technological and medical wonders. Whether you like it or not, it is a fact that vaccines save lives, GMOs increase crop yields (especially in developing countries), some GMOs provide vitamins that aren’t in traditional crops, etc. So, I become irritated when people attack these companies, because they invariably use their assaults on the companies as arguments against the companies’ products, and that’s not logically valid. I don’t necessarily support the business models of major companies, but I do stand by the science, and I refuse to allow economic ideology to interfere with scientific advances.

Now, at this point, someone will inevitably start dredging up examples of companies behaving unethically, and they will use those examples as evidence that we can’t trust the companies. More often than not, the examples are inaccurate or downright lies, but a handful of them will actually be true, to which I say, “so what?” Again, I support the science not the companies. Big corporations are undeniably concerned primarily with their own bottom line, and they will behave unethically to protect it. I’m not denying that, but that fact doesn’t automatically make their products dangerous. For example, Toyota is primarily concerned with its profits (as are all major companies), and if you do some digging, I’m sure that you can find evidence of situations where its CEOs behaved unethically, but that doesn’t mean that they falsified their safety tests or that Toyotas are actually death traps. Even so, the fact that pharmaceutical companies are primarily concerned with profits and at times behave unethically does not automatically mean that their products are dangerous. That’s a simple application of consistent reasoning.

It’s also important to note that there are numerous independent scientists, institutions, non-profits, and small private companies involved in the research and testing of GMOs, vaccines, etc. Anti-scientists often pretend that those people/organizations don’t exist, and they have a tendency to assume that all studies are biased (just as they assume that I am a shill), but that’s not reality. For example, in this post, I discussed several vaccine safety trials that were not in anyway affiliated with pharmaceutical companies.

Finally, let’s not forget that the anti-science position is also often associated with major companies. As I have previously pointed out, Whole Foods (a massive organic food chain) makes almost as much money as Monsanto. In fact, the Organic Trade Association reported that in 2014, people spent over 39 billion dollars on organic products in the US alone! So if supporting GMOs makes me a shill for Monsanto, why doesn’t supporting organic food make you a shill for Whole Foods? Please explain to me how that isn’t a big bushiness. Similarly, Americans spend 34 billion dollars annually on “natural treatments” and “alternatives” to pharmaceuticals.  So don’t accuse me of supporting big business while you defend extremely profitable nonsense like acupuncture, natural remedies, and magic water (i.e., homeopathy).

In conclusion, supporting science and supporting big business aren’t the same thing, though at times they do overlap. If you don’t trust major companies, that’s fine, neither do I, but I do trust the scientific method, and I stand by results that have been constantly replicated by numerous scientists from around the world. I agree that companies should be tightly regulated, and I agree that we should demand transparency and independent verification of their claims, but once that verification has been achieved, we should accept their results, and we absolutely cannot misconstrue attacks against a company as arguments against their science. In short, I support science, regardless of whether or not it agrees with the positions of major companies (you’ll notice that I don’t side with oil companies, which are, btw, among the largest corporations on the plant).

Literature cited (none of which had ties to corporations, btw)

 

Posted in GMO, Vaccines/Alternative Medicine | Tagged , , , , , | 8 Comments

No one thought that Galileo was crazy, and everyone in Columbus’s day knew that the earth was round

A portrate of Galileo Galilei

Galileo Galilei

It’s a common situation that I run into frequently: two people are debating about some scientific concept, and one of them is arguing for the mainstream view and supporting their arguments with the relevant literature. Meanwhile, the other one is “supporting” their arguments with blogs, personal anecdotes, and discredited papers. The debate eventually reaches a point where the anti-scientist realizes that a mountain of evidence and a strong scientific consensus opposes them, but rather than admitting the problems with their view, they instead invoke either Galileo or Columbus with arguments like, “well everyone thought that Galileo was crazy, but he turned out to be right” or “in Columbus’s day, every ‘knew’ that the earth was flat, but they were wrong, so why should I trust what scientists ‘know’ today?” Politicians have also been known to use these faulty arguments to support their non-sense. For example, in an attempt to defend the fact that he denies the science of climate change, presidential hopeful Ted Cruz said,

“Today, the global warming alarmists are the equivalent of the flat-Earthers. It used to be [that] it is accepted scientific wisdom the Earth is flat, and this heretic named Galileo was branded a denier.”

At their core, these arguments are just a variation of the fundamentally flawed argument that scientists shouldn’t be trusted because they have been wrong in the past (debunked here). Nevertheless, I want to look more closely at these examples, because not only do they not work, but they actually strongly oppose anti-science positions.

 

Columbus challenged the size of the earth, not it’s shape
Let’s start with Columbus. The common trope which we are all familiar with is that everyone in Columbus’s day thought that the earth was flat and Columbus would simply fall off of the edge if he tried to sail around it, but he thought that the earth was round and you could sail from one side to the other. That story is, however, nothing more than a wonderful fairly tale. No one in Columbus’s day thought that the earth was flat. The idea that the earth is round dates all the way back to the Greek philosophers, and it was nearly universally accepted well before Columbus set sail. So the debate in Columbus’s day was over the size of the earth, not its shape. You see, the most widely accepted estimate of earth’s circumference in Columbus’s time was 40,250 to 45,900 kilometers (25,000 to 28,500 miles), but Columbus thought that it was much smaller, only about 30,200 kilometers (18765 miles). So the debate was not about whether or not Columbus would fall off the edge of the earth. Rather, the debate was about whether or not he could survive such a long voyage. The ships of that day could not carry enough supplies to make it all the way to the other side of the planet if it was actually 40,250 kilometers in circumference. So people thought that his voyage was fool-hardy because they thought that he would run out of supplies part way.

Now, here is the really important part: Columbus was wrong! The actual circumference of the earth is 40,074 kilometers (24,901 miles), which is remarkably close to the well-accepted estimate in Columbus’s day, and way off from the number that Columbus had calculated. If it hadn’t been for the existence of North America and the Caribbean islands (which were previously unknown to most Europeans), Columbus and his crews would most likely have died.

In short, yes, Columbus was ridiculed, and people did think that he was crazy, but their derision was completely justified! Just like the modern anti-scientists, he ignored the well-established science and plowed forward, blindly following his own ignorance with reckless abandon. So, to any science deniers reading this, by all means compare yourself to Columbus, because you actually have a lot in common with him. You both have “done your own research,” you both defiantly ignore experts and the scientific consensus, you both allow your biases to cloud your judgment and drive you to make dangerous decisions, and you are both dead wrong.

 

No one thought that Galileo was crazy
Let’s get a couple of things straight about Galileo. First, he got in trouble for claiming that the earth moved around the sun, not that the earth was round. As explained above, everyone knew that the earth was round long before Galileo.

Second, no one accused him of being crazy. There were people who thought he was wrong, but he was never viewed as a raving lunatic. Further, he had support from many of his fellow astronomers. A large number of his colleagues thought that he was right. The people who disagreed with him were, in many cases, disagreeing because of religious reasons, not scientific reasons. In other words, they did not like the implication that the literal interpretations of certain Biblical passages (such as Joshua) were wrong; therefore, they insisted that Galileo must be incorrect. Let me describe this another way. One one side, you had Galileo with hard facts, careful observations, and rigorous calculations. On the other side, you had religious fanatics who were blindly rejecting Galileo’s facts because those facts didn’t agree with their preconceived biases. To be clear, there were also astronomers who disagreed with him, but it was the religious implications that really got him in trouble. Also, the astronomers who disagreed with him weren’t doing so because they had strong evidence that said he was wrong. Rather, they were disagreeing with him because he was proposing a fundamental shift in how we view the world (i.e., a rejection of Aristotle’s views of matter and motion). In other words, they were disagreeing with him because he was arguing against their biases and preconceptions, not because they had opposing evidence.

Now, let’s apply that to the modern anti-science movement. If you are arguing against climate change, vaccines, evolution, etc. you do not get to invoke Galileo because in any accurate analogy, you are the religious fanatics (or the astronomers who blindly clung to Aristotle). For example, when it comes to climate change, on one side we have scientists who have collected an enormous mountain of data and published thousands of studies, and on the other side, we have the deniers who have no data and rely instead on personal biases and logically invalid arguments like, “well it changed naturally in the past, so it must be a natural change now.” Similarly, we have thousands of studies which show that vaccines are safe and effective, yet those studies are opposed with anecdotes, “mommy instincts,” and fear-mongering.

In short, the idea that Galileo was a ridiculed rogue who dared to defy the consensus and turned out to be right is completely inaccurate. He certainly challenged the views of his day, but he did so with actual evidence, and many scientists realized that he was right. That is completely and totally different from claiming that the studies showing that vaccines don’t cause autism must be wrong because you know someone who was vaccinated and got autism, or that some “miracle cure” must work because you’ve done “thousands of hours of research” and the internet has assured you that it is legitimate. If you have numerous properly conducted, carefully controlled, peer-reviewed studies, with large sample sizes that have been replicated by other independent scientists and show that homeopathy works, GMOs are dangerous, acupuncture is effective, evolution isn’t true, etc. then you get to be Galileo. Until then, you are the religious fanatics who are opposing progress because of your own biases and misconceptions.

Posted in Uncategorized | Tagged | 18 Comments

The Rules of Logic Part 7: Using Consistent Reasoning to Compare Apples and Oranges

drunk driving analogy, vaccines, anti-vaccers

An example of inconsistent reasoning among anti-vaccers. Image via Refutations to Anti-Vaccine Memes

Using consistent reasoning simply means that you use the same type of thinking or the same logical structure across your various views and arguments. In other words, the arguments that you use to support one position cannot conflict with the arguments that you use for another position. This is a fundamental requirement of the law of non-contradiction. It is, therefore, vital to make sure that your views are internally consistent, and pointing out inconsistent arguments can be an extremely powerful debate tool (it’s actually among my favorites). Nevertheless, many people struggle to spot conflicts among their views, and when those inconsistencies are revealed to them, they often have trouble processing the problem. For example, on my blog’s Facebook page, I recently shared the image above, and I got all sorts of bizarre responses, such as the ones below.inconsistent reasoning All of these responses represent a fundamental misunderstanding of the argument being made in the meme. The argument is about the reasoning behind anti-vaccer’s claims, not the facts. In other words, when you make analogous arguments, it is the logic which must be analogous, not the topics of the arguments. Given that so many people seem to struggle with this, I am going to explain why consistent reasoning is so important, and explain an easy method for both testing for consistent reasoning as well as pointing out inconsistencies in people’s arguments. I will begin with some neutral examples, then move on to some real life examples (including the aforementioned meme).

 

The structure of an argument

Before I can explain what is meant by “consistent reasoning,” I have to review the basic structure of an argument. All arguments consist of premises and a conclusion. The premises are the known facts. They are the evidence that you are bringing into the debate, and the conclusion is the point that you are attempting to prove. If the argument is a good argument, then the conclusion will follow necessarily from those premises. In other words, the structure of the argument will lead from one premise to the next in a way that makes the conclusion inevitable (i.e., if the premises are true, then the conclusion must be true). So when we talk about reasoning, we are talking about the structure of the argument, not the actual facts used in the argument. This is very, very important. The facts are irrelevant to the reasoning, so you can point out inconsistencies in reasoning by using totally unrelated topics (e.g., driving and vaccines) or even by using hypothetical situations (more on that later). To put it another way, it’s fine to compare an argument about apples with an argument about oranges, just so long as the structure of the two arguments is identical.

Let me use a simple example to illustrate what I mean. Suppose that Bill is taller than Bob, and Bob is taller than Sue. This means that Bill must be taller than Sue. If you put that into a formal structure known as a syllogism, we get the following:

  • Premise 1: Bill is taller than Bob
  • Premise 2: Bob is taller than Sue
  • Conclusion: Therefore Bill is taller than Sue

In order to examine the structure or reasoning of this argument, we need to remove the actual facts and look at the skeleton that remains. In other words, we need to remove the people. This gives us the following:

  • X is taller than Y
  • Y is taller than Z
  • Therefore X is taller than Z

That is the structure or reasoning of the argument, and if it is a good structure, then it should apply any time that we have an item (X) that is taller than a second item (Y), and the second item is taller than a third item (Z). I could, for example, say:

  • A giraffe is taller than a cow
  • A cow is taller than a tick
  • Therefore a giraffe is taller than a tick

Notice, the facts being used in the argument are now totally different, but the reasoning or the structure of the argument is identical (note: this particular example is an illustration of a logical rule known as the law of transitive properties).

 

Testing for consistent reasoning

The best way to test for consistent reasoning is to do what I did above. Namely, write the argument as a syllogism, then remove the actual topic of interest and see if the structure of the argument still works for other situations (specifically, other views held by you or your opponent). Setting up analogous situations like this is extremely useful because it eliminates the biases surrounding the actual topic being debated. When you do this, if you can find even one situation in which the structure results in an incorrect conclusion (or a conclusion that you or your opponent disagrees with), then you have just shown that inconsistent reasoning is being used, and the logical structure must be flawed. Remember, an argument with a good structure and true premises will always produce the correct conclusion (more on that here). So if you can find a single example where the premises are true but the structure produces a faulty conclusion, then you know that the structure is bad.

Let me illustrate this with a silly example that I have used before. Suppose that I said, “Indiana Jones and the Last Crusade is one of the best movies ever made because Harrison Ford is in it.” This argument claims that Ford’s presence alone is enough to make a movie one of the greatest ever, which seems like a faulty claim, so let’s examine it further. First, let’s put the argument into a syllogism.

  • Harrison Ford is in Indiana Jones and the Last Crusade
  • Therefore Indiana Jones and the Last Crusade is one of the best movies ever made

Now, let’s remove the actual topic of interest.

  • Harrison Ford is in X
  • Therefore X is one of the best movies ever made

Now the reasoning behind the argument is easy to test. It should be obvious that this argument inherently claims that any move with Harrison Ford will be one of the best movies ever made. In other words, if this was a good argument, then we could replace X with any Harrison Ford movie, and syllogism would still work, but that clearly isn’t the case. For example, I would not agree with the following:

  • Harrison Ford is in Indiana Jones and the Kingdom of the Crystal Skull
  • Therefore Indiana Jones and the Kingdom of the Crystal Skull is one of the best movies ever made

The fact that I do not agree with the argument above means that my reasoning is inconsistent. In other words, I cannot claim that a movie is great just because Ford is in it, because there are movies with Ford in them which I do not think are great. This also illustrates a very important point: arguments like this one make universal claims. In other words, they make claims that must be true all of the time (e.g., all Harrison Ford movies must be great). So anytime that someone makes a universal claim, you only need one example where that claim clearly isn’t true in order to defeat the claim.

I want to use one more slightly more realistic example to illustrate how to do this. Consider the following argument.

  • Hitler promoted gun control
  • Hitler was evil
  • Therefore gun control is evil

This who are familiar with logic will instantly realize that this argument is a guilt by association fallacy, but simply stating that an argument commits a logical fallacy is, unfortunately, often not enough for people. So pointing out the fact that this argument is inconsistent with other views may be a more useful approach. Again, let’s begin by removing the actual object of debate (i.e., gun control) so that we can see the structure of the argument.

  • Hitler promoted X
  • Hitler was evil
  • Therefore X is evil

As with the previous example, all we need is one X that is not evil and this argument will be defeated. For example:

  • Hitler promoted hard work
  • Hitler was evil
  • Therefore hard work is evil

Indeed, no matter who you are, you can almost certainly find something that you and Hitler would agree on; therefore, it is completely inconsistent to use Hitler as an argument that something is bad.

Also, remember that when an argument is bad, you reject the argument, not the conclusion. In other words, the fact that my gun control example is a bad argument does not mean that gun control is good, because bad arguments tell you absolutely nothing about the conclusion. Indeed, saying that a conclusion is false because the argument is bad is a logical fallacy known comically as a fallacy fallacy.

I want to make one final point with the Hitler argument before moving on. You can often make slight modifications to the syllogism while still keeping it analogous to the original. For example, if everything that Hitler supported was evil, then it stands to reason that everything that he fought against was good. That is the inescapable extension of the argument (i.e., if everything that Hitler did was evil, then anytime that he opposed something, his opposition must have been evil, which means that anything that he opposed must have been good). For example, we could say:

  • Hitler opposed communism
  • Hitler was evil
  • Therefore communism is good

As a general rule, you should try to avoid making modifications like that because it is very easy to accidentally modify it to the point that your example is no longer parallel with the original, but there are situations where it can be useful.

 

False equivalence fallacy

When you try to point out inconsistencies in people’s logic, you may receive accusations that you are committing a false equivalence fallacy, so I want to briefly explain what that is and how to avoid it.

False equivalence occurs when you assert that two things are the same, when, in fact there is a difference that was overlooked. This generally deals with the facts of an argument, not the structure. In other words, you are saying that two objects are similar rather than two arguments are similar. A common illustration of this is to assert that both cats and dogs are the same because they are both furry. Clearly the fact that they have a few traits in common does not mean that they are the same, because there are differences that were overlooked. Another example would be, “canoes and cruise ships both travel on the water, therefore they are the same.” Does that makes sense? False equivalence generally deals with the objects, not the logic. So if you follow the steps that I have outlined and ensure that the your syllogisms are identical, then you don’t have to worry about committing a false equivalence fallacy.

Note 1: False equivalency can also occur if the arguments are not actually analogous but this is less common, at least in my experience, and it can easily be tested for by breaking arguments down to their syllogisms to ensure that they match.

Note 2: This fallacy also occurs when you change the meaning of a word part way through the argument. You can find a good explanation of this form of the fallacy here.

Example 1: Parental Instincts

Now that you see how to test for consistent reasoning, let’s apply the method to some arguments that are commonly used by anti-scientists.

Anti-vaccers are very fond of arguing that parents know what is best for their children, and since they are parents, they must be correct that vaccines are bad for their children. To test that argument, let’s run through the steps that I just explained. First, let’s write the argument as a syllogism.

  • Parents know what is best for their children
  • I am a parent
  • I think that vaccines are bad for my children
  • Therefore vaccines are bad for my children

Premise one is clearly absurd, but you’re going to have a hard time convincing an anti-vaccer of that. Your only real hope is to show that they don’t use this argument consistently (even if it doesn’t convince them, it will make the absurdity of their argument obvious to anyone else reading the thread). So, let’s remove vaccines from the argument.

  • Parents know what is best for their children
  • Y is a parent
  • Y thinks that X is bad for their children
  • Therefore X is bad for their children

This is another universal claim. In other words, for this argument to work, all parents must always know what is best for their children all the time. Premise 1 relies on parents always being right. So all that we need is one example where a parent didn’t know what was best for their children, and we will have defeated this argument. Doing so is, of course, very easy. For example, we have all seen parents who feed their children nothing but junk food and think that those foods are good for them. When we plug that into the syllogism, we get the following:

  • Parents know what is best for their children
  • Bob is a parent
  • Bob thinks that eating nothing but McDonalds is good for his children
  • Therefore eating nothing but McDonalds is good for his children

Notice, as with my Hitler example before, I changed the syllogism slightly, but the structure of the argument is still exactly the same. In other words, the argument revolves around the notion that parents know what is best for their children, and knowing what is best for your children inherently means that you know both what is good for them and what is not good for them. So the structures of the arguments are identical, and if you are going to argue that being a parent automatically means that you know what is best for your child, then you must also argue that Bob knows what is best for his children, even though getting all your meals from McDonalds is clearly a bad idea.

Finally, note that in order to point out inconsistencies in reasoning, you don’t even need an argument with a faulty conclusion. Rather, you only need an argument with a conclusion that your opponent disagrees with. For anti-vaccers, there is an obvious example which I have written about before. Namely, if you are a pro-vaccine parent, you can respond with the following:

  • Parents know what is best for their children
  • I am a parent
  • I think that not vaccinating is bad for my children
  • Therefore not vaccinating is bad for my children

Is the problem obvious now? Do you see what I mean by inconsistent reasoning? If being a parent automatically makes you right, then pro-vaccine parents must be right, but anti-vaccers think that pro-vaccine parents are wrong; therefore, anti-vaccers are using inconsistent logic. You cannot say that only parents know what is best for their children while simultaneously saying that pro-vaccine parents don’t know what is best for their children.

 

Example 2: “Man can’t change the climate”

My religious friends often write off all of the evidence for anthropocentric climate change by simply saying, “Man isn’t powerful enough to change the climate. Only God can do that.” This argument commits a rather blatant ad hoc fallacy, but it also suffers from inconsistent reasoning. I usually point this out with a hypothetical example by asking, “True or false, if man fired every single nuclear weapon that we have, we would create a massive nuclear winter and change the climate?” This invariably gets a knee-jerk response of, “Well I don’t have to answer hypothetical situations” or “CO2 and nuclear bombs aren’t analogous,” but both of those responses are red herring fallacies. Remember, when you are testing for consistent logic, the facts are irrelevant and only the reasoning matters. So if your opponent would disagree with their current reasoning in some hypothetical situation, then their reasoning is inconsistent. Again, let’s walk through the syllogisms to see how this works.

  • Man is not powerful enough to change the climate
  • Therefore man cannot change the climate via greenhouse gasses

This reduces to:

  • Man is not powerful enough to change the climate
  • Therefore man cannot change the climate via X

This is another universal claim, so if it was true, then the following argument must also be true.

  • Man is not powerful enough to change the climate
  • Therefore man cannot change the climate via nuclear weapons

Do you see the problem? The structure of the arguments is completely identical. Therefore, if one works, they must both work. You cannot accept one and reject the other. The fact that the situation is hypothetical is irrelevant because the logic is identical.

 

Example 3: “Getting the disease protects you from getting it again.”

This is another anti-vaccine trope that I have written about at length (also more briefly here), but let’s take a close look at its logic. This argument claims that if you get a disease like measles, you’ll be protected against it for your whole life, therefore it is better to get the disease rather than getting vaccinated. This breaks down into the following syllogism:

  • If you get measles then you’ll never get measles again
  • Therefore, you should get measles to avoid getting measles in the future

After removing measles, we get the following structure:

  • If you get X then you’ll never get X again
  • Therefore, you should get X to avoid getting X in the future

This argument is clearly nuts, and it’s easy to demonstrate that by replacing X with things other than measles. Here are a few fun examples.

  • If you get your arms cut off then you’ll never get your arms cut off again
  • Therefore, you should get  your arms cut off to avoid getting  your arms cut off in the future
  • If you quit your job then you’ll never get fired
  • Therefore, you should quit your job to avoid getting  fired in the future
  • If you get cavities that rot your teeth out then you’ll never get cavities again
  • Therefore, you should get cavities that rot your teeth out to avoid getting  cavities in the future
  • If you get sentenced to a life in prison then you’ll never get sent to prison again
  • Therefore, you should get sentenced to a life in prison to avoid getting  sent to prison in the future

In each of these cases, you are choosing to get something harmful/undesirable in order to avoid getting that harmful/undesirable thing again, when, in reality, you could just avoid getting it in the first place. As other people have pointed out, getting measles to avoid getting measles is like using pregnancy as a contraceptive.

 

Example 4: “The Bible says that evolution is wrong”

Creationism is, of course, based on the claims that evolution and the Bible conflict, and the Bible must be trusted as the ultimate source of truth (i.e., you can’t use science to interpret the Bible). Even if you believe the Bible, however, that argument is untrue and it is easy to show that creationists are being inconsistent.

  • The Bible is completely true and we cannot use science to interpret it
  • The Bible says that creationism is true
  • Therefore creationism is true

This argument is inconsistent because of the following argument.

  • The Bible is completely true and we cannot use science to interpret it
  • The Bible says that geocentrism is true
  • Therefore geocentrism is true

The Bible very clearly says that the sun moves around the earth, so you cannot simultaneously claim that creationism is true because the Bible says so while rejecting the idea the the sun moves around the earth, even though the Bible says so (more details on that here).

 

Example 5: “Most people who get the disease are vaccinated against it”

I want to end this post with the meme that started it. Let’s take a good look at the comparison between vaccines and drunk driving. The anti-vaccine argument goes like this:

  • Most people who get infectious diseases were vaccinated against them
  • Therefore it is safer not to get vaccinated

This breaks down to:

  • Most people who X were Y
  • Therefore it is safer not to Y

Now, let’s insert the variables from the driving example.

  • Most people who cause fatal car accidents were sober
  • Therefore it is safer not to drive sober

As should now be obvious, these two arguments are completely parallel. Either they both work, or neither of them works. Again, the fact that one is about driving and one is about vaccines is irrelevant because it is the structure of the argument that we are interested in, and the structure is identical.

On a side note, in some (but not all) disease outbreaks, most of the people who get the disease were vaccinated against it, but that is just because most people are vaccinated. When you look at the ratios, however, the infection rates are far lower among the vaccinated. Similarly, most fatal car accidents involve sober drivers because most people are sober when they drive. When you look at the ratios, however, the accident rates are far lower among sober drivers than drunk drivers (more details here).

 

Conclusion

You must always be sure that you are using logic consistently. When two situations are completely analogous, you must use the same reasoning in both situations. Although it is obviously necessary for all of the facts in your arguments to be true, the topics and facts are irrelevant to the structure of the argument. In other words, two arguments can be completely parallel even if they are about completely different topics. So, when someone points out that your reasoning is inconsistent, don’t immediately reply with a well worn response like, “you’re comparing apples and oranges” because it’s fine to compare an argument about apples with an argument about oranges, just so long as the structure of both arguments is the same.

Other posts on the rules of logic:

 

 

 

 

 

Posted in Rules of Logic, Vaccines/Alternative Medicine | Tagged , , , , | 2 Comments