Question 0 : Décrire l’intuition

Les allèles donnant la couleur bleue étant récessifs par rapport aux allèles donnant la couleur marron, on pourrait intuiter que la population sera constituée au fil du temps avec de moins en moins de personnes porant des yeux bleus. Cependant, les enfants gagnant un allèle aléatoire des 2 parents, la chute ne serait pas nette mais plutôt progressive. On peut cependant penser qu’il est possible d’avoir des cas extrêmes où la population comporterait énormément de personnes aux yeux bleus ou qu’il n’y en ai qu’une petite partie qui en porte.

Question 1 : Cas d’une petite population

Pour modéliser ce problème, on va s’intéresser aux nombres d’allèles que possède une personne (0 signifiant les allèles “marron-marron”, 1 : “marron-bleu” et 2 : “bleu-bleu”). Pour commencer, l’on étudie les cas où la population est réduite : ici, on prendra P = 20.

generer_pop = function(P = 20, mm = 12, bb = 4) {
pop <- c()
if (mm >= 1) {
  for (j in 1:mm) {
    pop <- c(pop, 0);
  }
}
if (bb >= 1) {
  for (k in 1:bb) {
    pop <- c(pop, 2);
  }
}
if (P-mm-bb >= 1) {
  for (l in 1:(P-mm-bb)) {
    pop <- c(pop, 1);
  }
}
pop
}

new_population = function(pop, P = 20, mm = 12, bb = 4) {

for (cmpt in 1:P) {
  couple = sample(size=2, pop, replace = T);
  parent1 = ifelse(couple[1]==0,0, 
         ifelse(couple[1]==1, sample(0:1, 1),1));
  parent2 = ifelse(couple[2]==0,0, 
         ifelse(couple[2]==1, sample(0:1, 1),1));
  pop[cmpt] = parent1 + parent2;
}
pop
}

evolution_pop = function(P = 20, mm = 12, bb = 4, i = 20) {
  MM <- c()
  BB <- c()
  MM[1] = mm;
  BB[1] = bb;
  pop = generer_pop(P, mm, bb);
  for (gen in 2:i) {
    pop = new_population(pop, P, mm, bb);
    BB[gen] = sum(pop [! pop %in% c(0,1)])/2;
    MM[gen] = length(pop [! pop %in% c(1,2)]);
  }
  return(list(MM, BB));
}

tracer_graphe = function(N=10, P = 20, mm = 12, bb = 4, i = 20) {
  set.seed(7)
  alleles = evolution_pop(P, mm, bb, i);
  plot((alleles[[2]]/P)*100, (alleles[[1]]/P)*100, main = "Proportion de porteurs de 2 allèles marrons par rapport à la proportion de porteurs de yeux bleus", xlab = "BBi/P", ylab = "MMi/P", xlim = c(0,100), ylim = c(0,100), type='l', col="blue")
  for (j in 1:N) {
  alleles = evolution_pop(P, mm, bb, i);
  lines((alleles[[2]]/P)*100, (alleles[[1]]/P)*100, col="blue");
  }
}
tracer_graphe(N = 10, P=20, mm=12, bb=4, i=20);

Le premier graphe représente 10 cas d’évolutions différents sur une vingtaine de générations et où le nombre de yeux bleus est très réduit sur la population de base (20% ici). Dans ce graphe, on peut observer que la proportion de porteurs de yeux bleus passe plutôt à la baisse. Cependant, il existe des cas où la population devient entièrement à yeux marrons où personne ne porte d’allèles bleus et le contraire où toute la population devient à yeux bleus.

tracer_graphe(N = 10, P=20, mm=4, bb=12, i=20);

Dans ce graphe, on étudie une population où 60% de la population est à yeux bleus dans la population de base. On remarque que les populations gardent une grande partie d’habitants à yeux bleus mais que le nombre de personnes possédant des yeux marrons à 2 allèles est très rarement au dessus de 20%.

tracer_graphe(N = 10, P=20, mm=5, bb=5, i=20);