Question 0 : Décrire votre intuition

L’allèle des yeux bleus étant récessif, je peux penser que la population des personnes aux yeux bleus ne peut que diminuer. Cependant, l’allèle bleu ne disparaitra pas pour autant donc même si celle-ci diminue, il y aura toujours quelques personnes aux yeux bleus. Je pense donc que cette population va diminuer jusqu’à un certain point puis la présence de personnes possédants 2 allèles différents pourra réaugmenter le nombre de personnes aux yeux bleus ou du moins l’équilibrer.

Question 1 : Cas d’une petite population (20 individus)

Code R permettant d’obtenir les résultats:

generationN<-function(P,Imax,N,BB0,MM0){
 # set.seed(100)
  epais=1 #epaisseur du trait pour le graphique
  if(N==1){epais=2}
  
  for(k in 1:N){
    
    #creation du vecteur Pi (vecteur composé de tous les Pi)
    BBi = numeric(Imax)
    MMi = numeric(Imax)
    BBi[1] = BB0
    MMi[1] = MM0
    Pi = numeric(2*Imax)
    Pi[1] = BBi[1]/P
    Pi[2] = MMi[1]/P
    
    #a = probabilité d'avoir deux allèles bleus
    a=0
    #b = probabilité d'avoir deux allèles marrons
    b=0
    
    for(i in 2:Imax){
      #On met à jour les probabilités à l'aide des résultats de la simulation du tour précédent
      a = Pi[2*i-3]
      b = Pi[2*i-2]
      
      #création des vecteurs parents
      Pere = sample(x=c(0,1,2),size=P,replace=T, prob = c(a,1-(a+b),b))
      Mere = sample(x=c(0,1,2),size=P,replace=T, prob = c(a,1-(a+b),b))
      #on selectionne un allèle de chaque parent
      Me = ifelse(Mere==0,0,ifelse(Mere==1,sample(x=c(0,1),size=P,replace=T),1))
      Pe = ifelse(Pere==0,0,ifelse(Pere==1,sample(x=c(0,1),size=P,replace=T),1))
      
      #création du vecteur enfant
      Enfant=Me+Pe
      
      #On compte combien d'enfants ont les deux allèles bleus ou marrons (BBi et MMi) suite à la génération aléatoire précédente
      for(j in 1:P){
        if(Enfant[j]==0){
          BBi[i]=BBi[i]+1
        }
        else if(Enfant[j]==2){
          MMi[i]=MMi[i]+1
        }
      }
      #On enregistre les résultats obtenus dans Pi
      Pi[i*2-1]=BBi[i]/P
      Pi[i*2]=MMi[i]/P
      
    }
    
    #Affichage du graphique
    if(k==1){
      if(N==1){
        plot(MMi/P,type='l',col="brown",lwd=epais,ylim=c(0,1),xlim=c(0,Imax),xlab="Génération",ylab="Proportion d'individus selon leurs allèles",main="Simulation unique")
      }
      else{
        plot(MMi/P,type='l',col="brown",lwd=epais,ylim=c(0,1),xlim=c(0,Imax),xlab="Génération",ylab="Proportion d'individus selon leurs allèles",main="N Simulations différentes")
      }
      lines(BBi/P,type='l',col="deepskyblue4",lwd=epais)
      lines(1-(MMi+BBi)/P,type='l',col="darkgoldenrod2",lwd=epais)
    }
    else{
      lines(MMi/P,type='l',col="brown",lwd=epais)
      lines(BBi/P,type='l',col="deepskyblue4",lwd=epais)
      lines(1-(MMi+BBi)/P,type='l',col="darkgoldenrod2",lwd=epais)
    }
    if(Imax<80){
      points(MMi/P,pch=20,col="brown")
      points(BBi/P,pch=20,col="deepskyblue4")
      points(1-(MMi+BBi)/P,pch=20,col="darkgoldenrod2" )
    }
    legend("topleft",legend=c("MM","BB","MB"),col=c("brown","deepskyblue4","darkgoldenrod2"),lty=1:1,cex=0.8);
  }
}

generation<-function(P,Imax,BB0,MM0){
  generationN(P,Imax,1,BB0,MM0)
}

Première simulation: On part du postulat que 4 personnes soit 20% de la population ont 2 allèles bleus et 12 personnes soit 60% de la population ont 2 allèles marrons. P0=(4,12)

On exécute le programme précédent avec ces paramètres pour obtenir les graphiques correspondants:

generationN(P = 20,Imax = 20,N = 10,BB0 = 4,MM0 = 12)