Chevalier Maxime (Groupe 1)

  P0 =
  Imax =
  set.seed(42);

Intuition

Question 0 : Décrire votre intuition

Que va-t-il se passer selon vous? Comment va évoluer la proportion de personnes ayant les yeux bleus? Je pense que la proportion de personne ayant les yeux bleus va se stabiliser au fur et à mesure des itérations (un peu comme dans la vie courante).

Question 1 : Cas d’une petite population

Je pense que sur des petites populations, les allèles bleus peuvent disparaitre. Nous devrions avoir des graphiques en dents de scie qui tendent vers l’abscence de bleu.

Question 2 : Cas d’une grande population

Je pense que dans ce cas, on a plus de chance d’avoir des individus aux yeux bleu d’une génération sur l’autre, et que ceux-ci permettrons de disceminer des allèles bleus dans la populations, ce qui augmentera la chance d’avoir des personnes aux yeux bleus, etc. La répartions de couleur des yeux va se stabiliser.

Question 3 : Cas d’une petite population avec préservation

Je pense qu’on va se raprocher du comportement de la question 2.

Réponses R

Question 1 : Cas d’une petite population

  P = 20;
  Imax = 20;
  N = 10;
  MM =0;
  MB =1;
  BB =2;
  set.seed(42);
  P0 = function(nbMM,nbBB){
    res = rep(4,P);
    for (i in 1:nbMM) {
      res[i] = MM;
    }
    for (i in (nbMM+1):(nbMM+nbBB)) {
      res[i] = BB;
    }
    for (i in (nbMM+nbBB+1):P) {
      res[i] = MB;
    }
    return(sample(res));
  }

  
  parentAlea = function(pPred){
    return(sample(pPred,P,replace = T,prob = rep(1/P,P)));
  }
  pPlusUn = function(pPred){
    #On Choisi des parents aleatoirement
    parent_P = parentAlea(pPred);
    parent_M = parentAlea(pPred);
    #On calcul les alleles donnes par les parents 
    Enfant_P = ifelse(parent_P==0,0, ifelse(parent_P==1,sample(size = P, x=c(0,1), replace = T),1));
    Enfant_M = ifelse(parent_M==0,0, ifelse(parent_M==1,sample(size = P, x=c(0,1), replace = T),1));
    
    #On fait la somme des alleles des enfants et on la retourne
    Enfant = Enfant_P+Enfant_M;
    return(Enfant);
  }
  
  generation = function(nbBB,nbMM,ImaX,N,P)
  {
    plot(x = NULL, y = NULL,xlim = c(0,ImaX),ylim = c(0,1), xlab = "i", ylab = "BB(i) bleu - MM(i) Marron");
    for (n in 1:N) {
       X = rep(0,ImaX);
      YB = rep(0,ImaX);
      YMM = rep(0,ImaX);
      
      #PremierPas
      P0 = P0(nbMM,nbBB);
      YB[1] = nbBB/P;
      YMM[1] = nbMM/P;
      X[1] = 0;
      P1 = pPlusUn(P0);
      #calcul Graphique indice 1
      YB[2] = sum(P1==2)/P;
      YMM[2] = sum(P1==0)/P;
      X[2] = 1;
      
      for (i in 2:(ImaX-1)) {
        P1 = pPlusUn(P1);
        
        #calcul Graphique
        YB[i+1] = sum(P1==2)/P;
        YMM[i+1] = sum(P1==0)/P;
        X[i+1] = i+1;
      }
       lines(X,YB, type = "l",col = "blue");
       lines(X,YMM, type = "l",col = "brown");
    }
  }

P0 = (BB0,MM0) = (4,12)

  generation(4,12,10,10,20);

On voit ici que la population de personnes aux yeux bleus reste autour de 10% en moyenne. Il y a des générations où il n’y a pas d’individu aux yeux bleus, mais les générations suivante peuvent en avoir, car il y a des personnes aux yeux BM.

P0 = (BB0,MM0) = (12,4)

  generation(12,4,10,10,20);

On remarque ici qu’avec beaucoups de personnes aux yeux bleus, il y a toujours au bout de la dixieme génération, des personnes aux yeux bleus. La proportion de personnes aux yeux bleus est cependant imprévisible, 5 itérations terminent au dessus de la population de départ, et 5 autres en dessous. On remarque également que la probabilité d’avoir les allèles MM a l’air de suivre la même loi que la probabilité d’avoir les allèles BB (cf coube bleu graphique précédent et courbe marron graphique courant)

P0 = (BB0,MM0) = (5,5)

  generation(5,5,10,10,20);

Il est clair ici que p(BB) et p(MM) suivent la même loi.

Question 2 : Cas d’une grande population

P = 2000;
Imax = 100;
N= 10;

P0 = (400,1200)

  generation(400,1200,Imax,N,P);

Comme dans le cas précédent, la proba d’avoir les yeux bleus a l’air d’être 10%.

P0 = (1200,400)

  generation(1200,400,Imax,N,P);

On observe ici le même graphe que le précédent, mais avec les couleurs inversées.

P0 = (500,500)

  generation(500,500,Imax,N,P);

On peut donc se dire que ces deux variables suivent la même loi de probabilité “avoir les allèles de la même couleur”, et que la proportion de personne ayant les mêmes allèles est stable dans le temps.

Question 3 : Cas d’une petite population avec préservation

  P = 20;
  Imax = 2000;
  N= 1;

P0 = (BB0,MM0) = (4,12) sans modification du code

  generation(4,12,Imax,N,P);

P0 = (BB0,MM0) = (12,4) sans modification du code

  generation(12,4,Imax,N,P);

P0 = (BB0,MM0) = (5,5) sans modification du code

  generation(5,5,Imax,N,P);

  #Redefinition de PplusUn
  pPlusUn = function(pPred){
    #On Choisi des parents aleatoirement
    parent_P = parentAlea(pPred);
    parent_M = parentAlea(pPred);
    #On calcul les alleles donnes par les parents 
    Enfant_P = ifelse(parent_P==0,0, ifelse(parent_P==1,sample(size = P, x=c(0,1), replace = T),1));
    Enfant_M = ifelse(parent_M==0,0, ifelse(parent_M==1,sample(size = P, x=c(0,1), replace = T),1));
    
    #On fait la somme des alleles des enfants
    Enfant = Enfant_P+Enfant_M;
    
    ajoutMM = runif(1,min=1,max=P);
    Enfant[ajoutMM] = MM;
    ajoutBB = runif(1,min=1,max=P);
    while (ajoutMM==ajoutBB) {
      ajoutBB = runif(1,min=1,max=P);
    }
    Enfant[ajoutBB] = BB;
    
    return(Enfant);
  }

P0 = (BB0,MM0) = (4,12)

  generation(4,12,Imax,N,P);

P0 = (BB0,MM0) = (12,4)

  generation(12,4,Imax,N,P);

P0 = (BB0,MM0) = (5,5)

  generation(5,5,Imax,N,P);

On voit clairement ici, que l’ajout de la préservation rend la génération complètement instable, mais plus proche d’une simulation sur un grand nombre d’individu que la question 1.

Question 4 : Avez-vous changé d’avis?

Au delà des aspects purement techniques de la chose que ce devoir a pu vous apprendre, le résultat de cette étude est-il conforme à votre intuition initiale?

Oui, je me doutais que ca allait rester stable, par contre je n’avais pas vu le fait que MM pouvait suivre la même loi que BB. Je ne m’attendais pas non plus à ce que la préservation ait un tel effet sur la simulation.

Pensez-vous à d’autres hypothèses que vous pourriez tester?

Si vous deviez modifier le modèle proposé, quelles seraient vos priorités?

  • Il faudrait faire des tirages sans remise car dans le modèle proposé permet à un seul individu de générer une personne, alors qu’il en faudrait deux normalement.
  • Optimiser le code pour R, mais aussi annalyser les données sous forme d’histogramme avec des courbes de tendances.