Question 0 : Décrire votre intuition

Que va-t-il se passer selon vous ? Comment va évoluer la proportion de personnes ayant les yeux bleus ?

Je pense que, en fonction des proportions de départ, les yeux bleus vont se répandre, rester stables ou diminuer en nombre. Je pense que si au départ 50% de la population a les yeux bleus et le reste marron (MM), la proportion va augmenter. Je pense que si 50% de la population est MB et le reste 25% MM et 25% BB la proportion va rester stable. Et je pense que si il y a moins de 25% de personnes ayant les yeux bleus, ce pourcentage va diminuer.

Question 1 : Cas d’une petite population

Voici le code des fonctions permettant la génération d’une courbe montrant l’évolution des proportions d’allèles BB et MM au fil des populations et selon des paramètres initiaux.

# Affiche sur une courbe les N trajectoires des alleles BB en bleu et MM en rouge
generer = function(N,P,Imax,P0) {
  set.seed(42)
  # On crée la fenetre pour l'affichage des trajectoires
  plot.function(sin,col ='white',ylim=c(0,1),xlim=c(0,Imax+2),main="Evolutions des proportions d'allèles", sub="BB en bleu et MM en rouge", ylab="Poucentage d'alléles", xlab="i-ème population")
  for(i in 1:N){ # On crée les N trajectoires de populations partant de P0 = (BB0,MM0)
    #Creer une trajectoire
    trajectoire(P,Imax,P0)
  }
}

# Crée une trajectoire de Imax pas partant de P0 avec une population de P individus
trajectoire = function(P,Imax,P0){ 
  ratio <- P0/P # La proportion de BB et MM dans la population
  
  # On récupère les proportion de chaque combinaison
  BB <- ratio[1]
  MM <- ratio[2]
  BM <- 1 - (BB + MM)
  
  # On générer Imax populations (dont on garde seulement les ratios de BB et MM pour l'affichage) dans les deux variables suivantes
  yeuxB <- BB
  yeuxM <- MM
  for(i in 1:Imax){
    # On crée une population
    pop <- population(P,BB,BM,MM)
    
    # On récupére les informations voulues à partir de la population
    # compter les combinaisons BB
    popBB <- pop == 2
    BBi <- sum(ifelse(popBB,1,0))
    # compter les combinaisons MM
    popMM <- pop == 0
    MMi <- sum(ifelse(popMM,1,0))
    
    # On récupère les ratios
    BB <- BBi/P
    MM <- MMi/P
    BM <- 1 - (BB + MM)
    
    # On enregistre l'étape
    yeuxB <- c(yeuxB,BB)
    yeuxM <- c(yeuxM,MM)
  }
  
  # On affiche les courbes
  lines(yeuxM, col='red',type='l')
  lines(yeuxB, col='blue',type='l')
}

# Renvoie une population de P individus à partir d'un autre population dont les proportions d'alleles sont BB, BM et MM. Cette population s'exprime en nombre d'alleles bleues
population = function(P,BB,BM,MM){
  pop <- c()
  for(i in 1:P){
    # On selectionne deux parents aléatoirement (représentés par leur nombre d'alleles bleues)
    pere <- sample(x = c(2,1,0), prob = c(BB,BM,MM),size = 1)
    mere <- sample(x = c(2,1,0), prob = c(BB,BM,MM),size = 1)
    
    # On choisit une allele du parent au hasard (1 si l'allele est bleue, 0 sinon)
    if(pere == 1) pere <- sample(c(0,1),prob = c(0.5,0.5),size =1)
    else if(pere == 2) pere <- 1
    if(mere == 1) mere <- sample(c(0,1),prob = c(0.5,0.5),size =1)
    else if(mere == 2) mere <- 1
    
    # On recupere l'enfant (représenté par son nombre d'alleles bleues)
    enfant <- pere + mere
    pop <- c(pop,enfant)
  }
  pop
}

Courbe 1, P0 = (4, 12)

generer(10,20,20,c(4,12))

Courbe 2, P0 = (12, 4)

generer(10,20,20,c(12,4))