Question 0 : Mon intuition sur le résultat

Selon moi, le nombre de personnes possédant les yeux bleus ne peut que diminuer, il n’augmentera pas. Cependant il est fort possible que nous observions une première diminution de cette population aux yeux bleus avant de réobserver une augmentation de ceux-ci dû à la présence de nombreuses personnes possédant les deux allèles différents. L’aléatoire provoquant alors possiblement une hausse de la présence des yeux bleus.

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

generationN<-function(P,Imax,N,BB0,MM0){
  set.seed(100)
  epais=1
  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)
  
  #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){
      a = BBi[i-1]/P
      b = MMi[i-1]/P
    
      #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))
      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 (0=BB et 2=MM)
      Enfant=Me+Pe
      
      #Remplissage des vecteur BBi et MMi
      for(j in 1:P){
        if(Enfant[j]==0){
          BBi[i]=BBi[i]+1
        }
        else if(Enfant[j]==2){
          MMi[i]=MMi[i]+1
        }
      }
    }
  
    for (i in 1:Imax){
      Pi[i*2-1]=BBi[i]
      Pi[i*2]=MMi[i]
    }
    if(k==1){
      if(N==1){
        plot(MMi,type='l',col="brown",lwd=epais,ylim=c(0,P),xlim=c(0,Imax),xlab="Numéro de la génération",ylab="Nombre d'individus avec double allèle (MM ou BB)",main="Réalisation unique")
      }
      else{
        plot(MMi,type='l',col="brown",lwd=epais,ylim=c(0,P),xlim=c(0,Imax),xlab="Numéro de la génération",ylab="Nombre d'individus avec double allèle (MM ou BB)",main="Réalisation de N trajectoires différentes")
      }
    lines(BBi,type='l',col="cyan4",lwd=epais)
    }
    else{
      lines(MMi,type='l',col="brown",lwd=epais)
      lines(BBi,type='l',col="cyan4",lwd=epais)
    }
    if(Imax<80){
      points(MMi,pch=20,col="black")
      points(BBi,pch=20,col="black")
    }
    legend("topleft",legend=c("MM","BB"),col=c("brown","cyan4"),lty=1:1,cex=0.8);
  }
}

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

Premiers essais : P0=(4,12)

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

generation(P = 20,Imax = 20,BB0 = 4,MM0 = 12)

On remarque qu’en partant d’une population zéro P0=(4,12), en moyenne, les yeux bleus finissent par disparaitre. Ceci peut évidemment s’expliquer par le fait qu’au départ cette population étant très inferieure à celle possédant 2 allèles marrons il y avait de fortes chances que très vite les enfants deviennent biallèle et que l’allèle bleu qu’ils possèdent reste camouflé. On était ici en présence de : 4*2+(20-4-12) = 12 allèles bleus contre 28 allèles marrons. Ce qui représente 30% des allèles totaux. Cette proportion sur un allèle récessif ne peut qu’entrainer une baisse des personnes aux yeux bleus.

P0=(12,4)

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

generation(P = 20,Imax = 20,BB0 = 12,MM0 = 4)

Notre population zéro ressemble ici à P0=(12,4), on part donc avec 2 fois plus d’allèles bleus que d’allèles marrons. Le graphe “moyen”, représenté par le tracé unique, montre une grosse diminution des individus BB cependant une remontée se fait voir. On peut expliquer ce comportement en regardant la proportion initiale d’allèles bleus comparée à celle des allèles marrons. Cette dernière étant deux fois moins importante que la première, les allèles bleus mettrons plus de temps à disparaitre s’ils doivent le faire et les individus MM auront du mal à augmenter puisque de nombreux individus seront des individus aux yeux marrons mais MB et donc auront toujours la possibilité de fournir un allèle bleu à leur descendance.

P0=(5,5)

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

generation(P = 20,Imax = 20,BB0 = 5,MM0 = 5)

En partant d’une population P0=(5,5) on se positionne sur une base de 50/50 d’allèles bleus et marrons. Cependant, on observe 15 personnes aux yeux marrons pour seulement 5 personnes aux yeux bleus dû à la récessivité de l’allèle bleu qui veut que la couleur bleue pour les yeux est une chose rare. Le schéma obtenu nous indique une diminution des individus BB et une augmentation des individus MM. On interprète ce résultat par le fait que les individus MB ont plus souvent fournit un allèle marron qu’un allèle bleu et ce qui a permit d’augmenter le nombre de personnes MM et à l’inverse de réduire celui des BB.

Question 2 : Cas d’une grande population (2000 individus)

P0=(400,1200)

generationN(P = 2000,Imax = 100,N = 10,BB0 = 400,MM0 = 1200)

generation(P = 2000,Imax = 100,BB0 = 400,MM0 = 1200)

Dans cette configuration, P0=(400,1200), la tendance est similaire à celle observée à la question 1. On remarque donc que la population de BB diminue est reste faible, tandis que la population de MM déjà en majorité au départ reste elle aussi assez fiable et donc reste très majoritaire sur la population totale.

P0=(1200,400)

generationN(P = 2000,Imax = 100,N = 10,BB0 = 1200,MM0 = 400)

generation(P = 2000,Imax = 100,BB0 = 1200,MM0 = 400)

Ici, le constat est moins spectaculaire que dans la question 1. L’écart de population entre les deux types d’individus menant au fait qu’il y a moins de chances que les courbes MM et BB ne se croisent. On remarque même que lors de 10 tests successifs, aucun des tests ne mène à un croisement de nos deux droites. On en déduit donc que sur une grande population, prendre une proportion équivalente à 1200 personnes BB pour 400 personnes MM sur une population de 2000 individus, les personnes BB ont plus de chances de perdurer.

P0=(500,500)

generationN(P = 2000,Imax = 100,N = 10,BB0 = 500,MM0 = 500)

generation(P = 2000,Imax = 100,BB0 = 500,MM0 = 500)

Dans ce dernier exemple sur une grande population, les différents tests effectués mènent à observer un changement de tendance contant entre les courbes BB et MM. Cependant, il est important de noter que celles-ci se positionnent toujours autour d’une ligne centrale et donc que leur moyenne prouve qu’avec le temps nous aurons toujours le même nombre de BB que de MM sur 100 générations du moins.

Question 3 : Cas d’une petite population avec préservation (20 individus mais Imax = 2000)

generation2N<-function(P,Imax,N,BB0,MM0){
  set.seed(100)
  epais=1
  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)
  
  #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){
      a = BBi[i-1]/P
      b = MMi[i-1]/P
    
      #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))
      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 (0=BB et 2=MM)
      Enfant=Me+Pe
      
      #Remplissage des vecteur BBi et MMi
      for(j in 1:(P-2)){
        if(Enfant[j]==0){
          BBi[i]=BBi[i]+1
        }
        else if(Enfant[j]==2){
          MMi[i]=MMi[i]+1
        }
      }
      #supposons que parmi les deux derniers individus on a un individus BB et l'autre MM
      BBi[i]=BBi[i]+1
      MMi[i]=MMi[i]+1
    }
  
    for (i in 1:Imax){
      Pi[i*2-1]=BBi[i]
      Pi[i*2]=MMi[i]
    }
    if(k==1){
      if(N==1){
        plot(MMi,type='l',col="brown",lwd=epais,ylim=c(0,P),xlim=c(0,Imax),xlab="Numéro de la génération",ylab="Nombre d'individus avec double allèle (MM ou BB)",main="Réalisation unique")
      }
      else{
        plot(MMi,type='l',col="brown",lwd=epais,ylim=c(0,P),xlim=c(0,Imax),xlab="Numéro de la génération",ylab="Nombre d'individus avec double allèle (MM ou BB)",main="Réalisation de N trajectoires différentes")
      }
    lines(BBi,type='l',col="cyan4",lwd=epais)
    }
    else{
      lines(MMi,type='l',col="brown",lwd=epais)
      lines(BBi,type='l',col="cyan4",lwd=epais)
    }
    if(Imax<80){
      points(MMi,pch=20,col="black")
      points(BBi,pch=20,col="black")
    }
    legend("topleft",legend=c("MM","BB"),col=c("brown","cyan4"),lty=1:1,cex=0.8);
  }
}

generation2<-function(P,Imax,BB0,MM0){
  generation2N(P,Imax,1,BB0,MM0)
}

Regardons l’impact d’une telle modification sur quelques échantillons :

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

generation2(P = 20,Imax = 100,BB0 = 4,MM0 = 12)

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

generation2(P = 20,Imax = 100,BB0 = 12,MM0 = 4)

generation2N(P = 20,Imax = 100,N = 10,BB0 = 5,MM0 = 5)

generation2(P = 20,Imax = 100,BB0 = 5,MM0 = 5)

Ce changement a causé d’importantes modifications dans le comportement des courbes. On remarque qu’après cette modification nos 3 graphiques ont à peu de choses près la même tête surtout si nous ne regardons que nos graphes de réalisation unique.

Elle modifie la dynamique de la question 1, puisque maintenant, les allèles bleus ne pourront jamais disparaitre (de même pour les allèles marrons). Et donc le fait qu’il existe au moins un individu de chaque type (BB et MM) fausse les résultats puisque la proportion qui aurait dû être mise en place est modifié en faveur d’un double allèle qui aurait pu être un bi-allèle.

En effet, les graphes nous désigne un système stable puisque nos 3 tests différents nous mènent à la même configuration finale qui semble suivre une certaine logique. On lit sur ces graphes comme une compensation entre BB et MM qui change de tendance de temps en temps pour nous donner un graphique équilibré.

Question 4 : Conclusion

Suite à l’expérience, je dois avouer que certains résultats m’ont surpris. Je ne m’attendais par exemple pas à obtenir une courbe comme celle de la question 2 dans le cas de P0=(1200,400). Certes je me doutais que la courbe BB ne décroisserait pas très vite mais qu’elle semble si stable me surprend même si après analyse cela n’a rien d’extraordinaire.

En effet, il serait intéressant de modéliser un problème dans lequel la population de départ P0 vaudrait P0=(0,800) sur 2000 individus et voir si cela est réalisable d’obtenir 200 individus BB et en combien de temps surtout.

Honnêtement, je ne vois pas comment modifié le modèle proposé qui me semble traiter tous les points importants du problème.