Question 0:

  1. Pour P0 = (BB,MM) = (4,12 ) c’est probable que les yeux bleu disparraissent

    Pour P0 = (12,4) C’est possible que les bleus stagnent à un moment ou même que les yeux bleus disparraissent.

    Pour P0 = (5,5) C’est possible que les yeux bleus baissent un peu en nombre et finissent par se stabiliser.

  2. On a possiblité de voir les mêmes prédictions, seulement avec les cas extremème plus faible car on a beaucoup plus de personnes.

  3. En ajoutant des allèles BB de ce fait on assure que les allèles bleu disparraissent pas. Ainsi la popuation va stager vers un certaine valeur.

Question 1:

On modélise le problème en prenant 0 pour les Yeux bleux, 1 pour les yeux marrons ayant une allèle marrons, et 2 pour les yeux marrons ayant 2 allèles marrons.

set.seed(1);
create_tab <- function( BB,MM, P ){
  
  return (tab <- c(rep(0,BB),rep(1,P-BB-MM),rep(2,MM)))
  
}

modelisation <- function (tab,P, I,N ){
  pop = tab ;
  
  #fin contient les N fin différentes à la Ième génération
  fin0 = c()
  fin1 = c() 
  fin2 = c()
  
  #resultat(t) contient le nombre d'occurance de t à chaque génération
  resultat0 = c(sum(pop==0))
  resultat1 = c(sum(pop==1))
  resultat2 = c(sum(pop==2))
  
  
  for (j in 0:(N-1)){
    for(i in 1:I){
      Pere = sample(tab, size = P ,replace = TRUE )
      Mere = sample(tab, size =  P ,replace = TRUE )
      allmere = ifelse(Mere==0,0,
             ifelse(Mere==2,1,sample(c(0,1),size=1,replace=T)));
      allpere = ifelse (Pere == 0 , 0 , ifelse( Pere == 2 , 1,sample(c(0,1),size=1,replace=T)))
      pop = allpere + allmere 
      
      resultat0[i+I*j] = sum(pop==0)
      resultat1[i+I*j] = sum(pop==1)
      resultat2[i+I*j] = sum(pop==2)
    }
    fin0[j] = resultat0[I*(j+1)]
    fin1[j] = resultat1[I*(j+1)]
    fin2[j] = resultat2[I*(j+1)]
  }

if(N>3){
  slices <- c(sum(fin2),sum(fin1), sum(fin0))
  lbls <- c("deux allèles marrons", "Une allèle marron", "Aucune allèle marron")
  pct <- round(slices/sum(slices)*100)
  lbls <- paste(lbls, pct) 
  lbls <- paste(lbls,"%",sep="")
  pie(slices,labels = lbls, col=rainbow(length(lbls)),
     main="Répartition moyenne des Allèles ") 
  
  slices <- c( sum(fin1)+sum(fin2),sum(fin0))
  lbls <- c("yeux Marron","yeux Bleu")
  pct <- round(slices/sum(slices)*100)
  lbls <- paste(lbls, pct) 
  lbls <- paste(lbls,"%",sep="")
  pie(slices,labels = lbls, col=rainbow(length(lbls)),
     main="Répartition moyenne de la couleur des yeux") 
   
   plot(fin0,type = "o",col = "blue",ylim=c(min(fin0,min(fin1,fin2)),max(fin0,max(fin1,fin2))), xlab = "Itérations", ylab = "Nombre de personnes", main = "Les différentes fins après I générations pour N itérations")
  lines(fin1, type = "o", col = "green")
  lines(fin2, type = "o", col = "brown")
}
else{
  
      slices <- c(resultat2[I],resultat1[I], resultat0[I])
  lbls <- c("deux allèles marrons", "Une allèle marron", "Aucune allèle marron")
  pct <- round(slices/sum(slices)*100)
  lbls <- paste(lbls, pct) 
  lbls <- paste(lbls,"%",sep="")
  pie(slices,labels = lbls, col=rainbow(length(lbls)),
     main="Répartition moyenne des Allèles ") 
  
  slices <- c(resultat0[I], resultat1[I]+resultat2[I])
  lbls <- c("yeux Marron","yeux Bleu" )
  pct <- round(slices/sum(slices)*100)
  lbls <- paste(lbls, pct) 
  lbls <- paste(lbls,"%",sep="")
  pie(slices,labels = lbls, col=rainbow(length(lbls)),
     main="Répartition moyenne de la couleur des yeux") 
  
  
  plot(resultat0,type = "l",col = "blue",ylim=c(min(resultat0,min(resultat1,resultat2)), max(resultat0,max(resultat1,resultat2)))  ,xlab = "Génération", ylab = "Nombre de personnes", 
     main = "L'évolution pour I générations")
  lines(resultat1, type = "l", col = "green")
  lines(resultat2, type = "l", col = "brown")
  }
}
  1. pour P0 = (BB,MM) =(4,12 ) avec une population de 20 et sur 20 générations et 10 itérations :
modelisation(create_tab(4,12,20),20 , 20, 10 )

On voit clairement que les yeux bleus restent minauritaire, même s’il est difficile que ceux-ci disparraissent vraiment. Ce qui est normal car la probabilité qu’un enfant de P1 ai les yeux bleux est proche de 1/10 (36/400) alors que celui pour les yeux marron est de 9/10 et ceux avec deux allèles marrons est de proche de 1/2 ( 196/400 ).

Modélisation Sur 100 itérations

modelisation(create_tab(4,12,20),20 , 20,100 )

  1. Pour P0 = (12,4) avec une population de 20 et sur 20 générations et 10 itérations :
modelisation(create_tab(12,4,20),20 , 20,10 )

On retrouve une proportion de personnes ayant les yeux bleus assez élevés qui égale celle ayant les yeux marrons. On se raproche des probablité calculé avec une proportion de yeux bleu égale à 1/2 (196/400) ce qui correspond plus au moins au probabilité de départ d’obtenir les yeux bleu.

Modélisation Sur 100 itérations

modelisation(create_tab(12,4,20),20 , 20,100 )

  1. Pour P0 = (5,5) avec une population de 20 et sur 20 générations et 10 itérations :
modelisation(create_tab(5,5,20),20 , 20,10 )

On remarque que les fins possibles peuvent être très différentes. Les deux extremités peuvent se produire, plus de yeux marrons pur ou plus de yeux bleu. La probabilité d’avoir deux allèles identique au départ est de 1/4ème ce qui à se retrouve à la fin de la modélisation. On se retrouve donc généralement avec les 3/4 de la populations ayant des Yeux marrons.

Modélisation Sur 100 itérations

modelisation(create_tab(5,5,20),20 , 20,100 )

Question 2:

1.Pour P0 = (400,1200) avec une population de 2000 et sur 100 générations et 1 itérations :

modelisation(create_tab(400,1200,2000),2000 , 100,2 )

On remarque que le résultat trouvé est similaire au résultat trouvé dans la question 1.1 avec beaucoup d’itération. Avec une augmentation de la populatin on se rapproche de la valeur théorique. On remarque que la population des personnes aux yeux se stabilise autour des 200 personnes.. ( identique à la Probabilité d’origine)

modelisation(create_tab(400,1200,2000),2000 , 100,10 )

2.Pour P0 = (1200,400) avec une population de 2000 et sur 100 générations et 1 itérations :

modelisation(create_tab(1200,400,2000),2000 , 100,2 )

On a également une stagnation des Personnes ayant deux allèles marrons vers les 200, cependant la probabilité de trouver des yeux bleu peut varier beaucoup.

modelisation(create_tab(1200,400,2000),2000 , 100,10 )

3.Pour P0 = (500,500) avec une population de 2000 et sur 100 générations et 1 itérations :

modelisation(create_tab(500,500,2000),2000 , 100,2 )

Anouveau on se rapproche de la valeur théorique. Les proportions de base restent assez représentative de l’évolution moyenne des populations.

modelisation(create_tab(500,500,2000),2000 , 100,10 )

Question 3 :

modelisation2<- function (tab,P, I,N ){
  pop = tab ;
  
  #fin contient les N fin différentes à la Ième génération
  fin0 = c()
  fin1 = c() 
  fin2 = c()
  
  #resultat(t) contient le nombre d'occurance de t à chaque génération
  resultat0 = c(sum(pop==0))
  resultat1 = c(sum(pop==1))
  resultat2 = c(sum(pop==2))
  
  
  for (j in 0:(N-1)){
    for(i in 1:I){
      Pere = sample(tab, size = P-2 ,replace = TRUE )
      Mere = sample(tab, size =  P-2 ,replace = TRUE )
      allmere = ifelse(Mere==0,0,
             ifelse(Mere==2,1,sample(c(0,1),size=1,replace=T)));
      allpere = ifelse (Pere == 0 , 0 , ifelse( Pere == 2 , 1,sample(c(0,1),size=1,replace=T)))
      pop = allpere + allmere 
      pop = c(pop,c(0,2))
      
      resultat0[i+I*j] = sum(pop==0)
      resultat1[i+I*j] = sum(pop==1)
      resultat2[i+I*j] = sum(pop==2)
    }
    fin0[j] = resultat0[I*(j+1)]
    fin1[j] = resultat1[I*(j+1)]
    fin2[j] = resultat2[I*(j+1)]
  }

  slices <- c(sum(fin2),sum(fin1), sum(fin0))
  lbls <- c("deux allèles marrons", "Une allèle marron", "Aucune allèle marron")
  pct <- round(slices/sum(slices)*100)
  lbls <- paste(lbls, pct) 
  lbls <- paste(lbls,"%",sep="")
  pie(slices,labels = lbls, col=rainbow(length(lbls)),
     main="Répartition moyenne des Allèles ") 
  
  slices <- c( sum(fin1)+sum(fin2),sum(fin0))
  lbls <- c("yeux Marron","yeux Bleu")
  pct <- round(slices/sum(slices)*100)
  lbls <- paste(lbls, pct) 
  lbls <- paste(lbls,"%",sep="")
  pie(slices,labels = lbls, col=rainbow(length(lbls)),
     main="Répartition moyenne de la couleur des yeux") 
   
   plot(fin0,type = "o",col = "blue",ylim=c(min(fin0,min(fin1,fin2)),max(fin0,max(fin1,fin2))), xlab = "Itérations", ylab = "Nombre de personnes", main = "Les différentes fin après I générations pour N itérations")
  lines(fin1, type = "o", col = "green")
  lines(fin2, type = "o", col = "brown")
  
  
}

Avec ce nouveau modèle, on assure la pérennité d’un type d’yeux. On peut supposer que ça tire vers une plus grande homogénéité de la population car si on est dans un schéma d’expenssion de l’allèle marron par exemple, plus de personnes ont de chance d’avoir les deux allèles marrons donc en tirant au hasard deux personnes qu’on supprime, on a plus de chance d’enlever deux allèles marrons qu’on remplacera par des allèles bleu rapprochant de ce fait d’une population homogène.

1.Pour P0 = (4,12) avec une population de 20 et sur 2000 générations et 10 itérations :

modelisation2(create_tab(4,12,20),20 , 2000, 20 )

2.Pour P0 = (12,4) avec une population de 20 et sur 2000 générations et 10 itérations :

modelisation2(create_tab(12,4,20),20 , 2000, 20 )

3.Pour P0 = (5,5) avec une population de 20 et sur 2000 générations et 10 itérations :

modelisation2(create_tab(5,5,20),20 , 2000, 20 )

question 4 :

Oui, il rentre assez dans mes prévisions, cependants je pensais qu’il y aurait possibilité que des types disparraissent ce qui est au final quasiment impossible. On pourrait rajouter les yeux verts et d’autres coloris d’yeux. Peut être que départager les genres change quelque chose. En priorité pour rendre cette étude plus réel, je rajouterais des allèles pour d’autres couleurs d’yeux.