Devoir 1 :

́ ###Evolution de la couleur des yeux au fil des ages:

Question 0 :

Je pense que pour une population assez grande la proportion de personne au yeux maron et au yeux bleue reste stable.

Question 1 : Cas d’une petite population:

On prend 0 pour les yeux bleue et 1 pour les marrons.

P=20; # p le nombre de personne dans la population
I_max=20; # le nombre de generation
BB=4;MM=12; # BB le nombre de personne avec le yeux bleue et MM avec les yeux marrons
M=c(BB,MM);


choisir_un_allele= function (M=M,P=P){
  #on choisie un nombre nb entre 1 et P
  nb=sample.int(P,1, replace=T);
  
  #selon nb :
  if (nb<=M[1]) a=0; #l'allele est bleue
  if (nb<= M[1]+M[2] & nb>M[1]) a=1; #l'allele est marron
  if (nb>M[1]+M[2]) a=sample(size = 1,x=c(0,1),replace = T); #un des deux
  
  return (a);
}


nouvelle_pop= function (M=M,P=P){
  BB_bis=0; #le nombre de personne au yeux bleue dans la nouvelle population
  MM_bis=0; # " aux yeux marron
  allele1=2;
  allele2=2;
  
  for (i in 1:P){
    allele1=choisir_un_allele(M,P);
    allele2=choisir_un_allele(M,P);
    
    #si les deux allele sont a 0 -> yeux bleue
    if (allele1==0&& allele2==0) BB_bis=BB_bis+1;
    #si les deux allele sont a 1 -> yeux marron
    if (allele1 && allele2) MM_bis=MM_bis+1;
  }
  M_bis=c(BB_bis,MM_bis);
  return (M_bis); # on retourne le nombre personne au yeux bleue ou marron dans la nouvelle population
}

#Cette fonction retourne le nombre de personne au yeux bleue ou marron sur I_max generation
horizon= function(M=M,P=P,Z=I_max){
  
  resultatB= rep (0,I_max+1);
  resultatM= rep (0,I_max+1);
  
  resultatB[1]=M[1]/P;
  resultatM[1]=M[2]/P;
  
  M_new=M;
  for (i in 1:Z){
    M_bis=nouvelle_pop(M_new,P);
    M_new=M_bis;
    resultatB[i+1]=M_new[1]/P;
    resultatM[i+1]=M_new[2]/P;
  }
  l= list();
  l[[1]]=resultatB;
  l[[2]]=resultatM;
  
  return(l);
}


#Cette fonction trace sur 10 repetition d'une generation
tracage = function (M=M,P=P,I_max=I_max){

  plot(x=NULL,y=NULL,xlab= "Generation",ylab= "Proportion",xlim= c(0,I_max),ylim=c(0,1));

  for (i in 1:10){ 
  I=1;


  l=horizon(M,P,I_max);
  resultatB=l[[1]];
  resultatM=l[[2]];
  

  lines(x = c(0:I_max),y=resultatB,type="l", col= "blue");
  lines(x = c(0:I_max),y=resultatM,type="l", col= "brown");
  }
  
}

#On trace les graphes :
M=c(4,12);
tracage(M,P,I_max);

M=c(12,4);
tracage(M,P,I_max);

M=c(5,5);
tracage(M,P,I_max);

Les resultats obtenus montrent que sur un echantillon de 20 personnes et une duree de 20 generations la repartition semble evoluer de maniere relativement aleatoire. On peut toutefois remarquer que parfois un allele disparait mais que le fait que l’allele ‘yeux bleue’ soit recesif n’a pas difluence sur cela et que l’allele le plus present a l’air de le reste.

Question2: Cas d’une grande population:

On prend cette fois ci

P=2000;
I_max=100;

M=c(400,1200);
tracage(M,P,I_max);

M=c(1200,400);
tracage(M,P,I_max);

M=c(500,500);
tracage(M,P,I_max);

Premierement on peut constater que par rapport aux resultat precedent les resultats sont plus regulier et constant. Ensuite on constate que les proportion d’allele dans la population reste casiment constant. Il y a de tres legere variation, mais aucune disparition d’un allele. ##Question3 :Cas d’une petite population avec preservation:

P=20; # p le nombre de personne dans la population
I_max=2000; # le nombre de generation
BB=4;MM=12; # BB le nombre de personne avec le yeux bleue et MM avec les yeux marrons
M=c(BB,MM);


choisir_un_allele= function (M=M,P=P){
  #on choisie un nombre nb entre 1 et P
  nb=sample.int(P,1, replace=T);
  
  #selon nb :
  if (nb<=M[1]) a=0; #l'allele est bleue
  if (nb<= M[1]+M[2] & nb>M[1]) a=1; #l'allele est marron
  if (nb>M[1]+M[2]) a=sample(size = 1,x=c(0,1),replace = T); #un des deux
  
  return (a);
}


nouvelle_pop= function (M=M,P=P){
  BB_bis=1; #modifie
  MM_bis=1; #modifie
  allele1=2;
  allele2=2;
  
  for (i in 1:(P-2)){
    allele1=choisir_un_allele(M,P);
    allele2=choisir_un_allele(M,P);
    
    #si les deux allele sont a 0 -> yeux bleue
    if (allele1==0&& allele2==0) BB_bis=BB_bis+1;
    #si les deux allele sont a 1 -> yeux marron
    if (allele1 && allele2) MM_bis=MM_bis+1;
  }
  M_bis=c(BB_bis,MM_bis);
  return (M_bis); # on retourne le nombre personne au yeux bleue ou marron dans la nouvelle population
}

#Cette fonction retourne le nombre de personne au yeux bleue ou marron sur I_max generation
horizon= function(M=M,P=P,Z=I_max){
  
  resultatB= rep (0,I_max+1);
  resultatM= rep (0,I_max+1);
  
  resultatB[1]=M[1]/P;
  resultatM[1]=M[2]/P;
  
  M_new=M;
  for (i in 1:Z){
    M_bis=nouvelle_pop(M_new,P);
    M_new=M_bis;
    resultatB[i+1]=M_new[1]/P;
    resultatM[i+1]=M_new[2]/P;
  }
  l= list();
  l[[1]]=resultatB;
  l[[2]]=resultatM;
  
  return(l);
}


#Cette fonction trace sur 10 repetition d'une generation
tracage = function (M=M,P=P,I_max=I_max){

  plot(x=NULL,y=NULL,xlab= "Generation",ylab= "Proportion",xlim= c(0,I_max),ylim=c(0,1));

  for (i in 1:10){ 
  I=1;


  l=horizon(M,P,I_max);
  resultatB=l[[1]];
  resultatM=l[[2]];
  

  lines(x = c(0:I_max),y=resultatB,type="l", col= "blue");
  lines(x = c(0:I_max),y=resultatM,type="l", col= "brown");
  }
  
}

#On trace les graphes :
M=c(4,12);
tracage(M,P,I_max);

M=c(12,4);
tracage(M,P,I_max);

#M=c(5,5);
#tracage(M,P,I_max);

On constate a nouveau que pour une population de 20 personne les resultats ne sont pas regulier. De plus on peut voir que les resultat varie beaucoup au cours du temps et que les proportion initiale n’ont pas beaucoup d’influence sur le resultat puisque les resultat du premier et du deuxieme sont similaire.

Question4: Avez vous changer d’avis ?

Je pense que mes hypothéses sont verifiées par la deuxieme experience avec une grande experience. Par contre la deuxieme et la troisieme experience montre que pour une population reduite les resultats sont plus aleatoire.