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)