Question 0 :

Que va-t-il se passer selon vous ? Comment va evoluer la proportion de personnes ayant les yeux bleus ?

A mon avis la combinaison BB va disparaitre en fonction de sa répartition dans la population de départ. Moins il y aura d’individu au yeux BB ou MB plus la probabilité d’avoir des descendants au yeux bleu est faible. On pourra constaté un phénomène simillaire avec les yeux MM. Mais il est possible qu’aucune compinaison ne disparaissent car MB à une chance sur deux de donner un allèle bleu ou marron par conséquent 2 parents MB on 1/4 de chance d’avoir un enfant au yeux BB ou au yeux MM.

#============================================================#
#===========================>FONCTIONS<======================#
#============================================================#

#===========================>GENERATION POPULATION 0
#Generer la population zero sans parmutation
genererP0<-function(BB0,c1,MM0,c2,MB0,c3)
{
  return(c(rep(c1,BB0),rep(c2,MM0),rep(c3,MB0)))
}

#Generer la population zero avec permutation
genererP0Alea<-function(BB0,c1,MM0,c2,MB0,c3,total)
{
  vecteurnontrie = c(rep(c1,BB0),rep(c2,MM0),rep(c3,MB0))
  return(sample(vecteurnontrie,size = total,replace = F))
}

#===========================>GENERATION PARENTS
#Generer un parent pour les question 1 et 2
generateurAleatoireParent<-function(population,total)
{
  Indice = floor(runif(total, min=0, max=total))+1
  v = population[Indice]
  return(v)
}

#Generer un parent pour les question 3
generateurAleatoireParentv2<-function(PI,P)
{
  Indice = floor(runif(P, min=0, max=P))+1
  v = PI[Indice]
  v[P-1] = 2
  v[P] = 0
  return(v)
}

#===========================>GENERATION NOUVELLE GENEARTION
#Generer un enfant
enfant<-function(pere,mere)
{
  a1 = ifelse(pere==0,0,ifelse(pere==1,sample(x=c(0,1), size = 1 , replace = T , prob = c(0.5,0.5)), 1))
  a2 = ifelse(mere==0,0,ifelse(mere==1,sample(x=c(0,1), size = 1 , replace = T , prob = c(0.5,0.5)), 1))
  
  return(a1+a2)
}

#Generer un nouvelle population(création peres et meres et renvoie des enfants)
nouvelleGeneration<-function(population,total,version)
{
  if( version == 1 )#pas de condition sur es parents
  {
    pere = generateurAleatoireParent(population,total)
    mere = generateurAleatoireParent(population,total)
  }
  else#condition pere et mere yeux bleu et yeux marron
  {
    pere = generateurAleatoireParentv2(population,total)
    mere = generateurAleatoireParentv2(population,total)
  }
  
  return(enfant(pere,mere))
  
}

#Evolution d'une population sur i génération
generationPI<-function(population0,total,nbGeneration,nbTest,version)
{
  popBBMoyenne = rep(0,nbGeneration)
  popMMMoyenne = rep(0,nbGeneration)
  popMBMoyenne = rep(0,nbGeneration)
  for (j in 1:nbTest)
  {
    pop = population0
    popBBMoyenne[1] = popBBMoyenne[1]+sum(pop==2)
    popMMMoyenne[1] = popMMMoyenne[1]+sum(pop==0)
    popMBMoyenne[1] = popMBMoyenne[1]+(total-sum(pop==2)-sum(pop==0))
    
    for (i in 1:nbGeneration+1)
    {
      pop = nouvelleGeneration(pop,total,version)
      popBBMoyenne[i] = popBBMoyenne[i]+sum(pop==2)
      popMMMoyenne[i] = popMMMoyenne[i]+sum(pop==0)
      popMBMoyenne[i] = popMBMoyenne[i]+(total-sum(pop==2)-sum(pop==0))
    }
  }
  popBBMoyenne = popBBMoyenne/nbTest
  popMMMoyenne = popMMMoyenne/nbTest
  popMBMoyenne = popMBMoyenne/nbTest
  if (version == 1){affichergenerationPI(nbGeneration,total,popMMMoyenne,popBBMoyenne,popMBMoyenne)}
  else{affichergenerationPI2(nbGeneration,total,popMMMoyenne,popBBMoyenne,popMBMoyenne)}
}

affichergenerationPI<-function(nbGeneration,total,popMM,popBB,popMB)
{
  xrange = c(0,nbGeneration)
  plot(x = NULL, y = NULL,xlim = xrange,ylim = c(0,1), type="o", xlab="Génération i",   ylab="nombre de perosnnes moyenne");
  lines(c(0:nbGeneration),popBB/total, type = "o",col = "blue");
  lines(c(0:nbGeneration),popMM/total, type = "o",col = "brown");
  lines(c(0:nbGeneration),popMB/total, type = "o",col = "green");
}

affichergenerationPI2<-function(nbGeneration,total,popMM,popBB,popMB)
{
  xrange = c(0,nbGeneration)
  plot(x = NULL, y = NULL,xlim = xrange,ylim = c(0,1), type="o", xlab="Génération i",   ylab="nombre de perosnnes moyenne");
  lines(c(0:nbGeneration),popBB/total, type = "l",col = "blue");
  plot(x = NULL, y = NULL,xlim = xrange,ylim = c(0,1), type="o", xlab="Génération i",   ylab="nombre de perosnnes moyenne");
  lines(c(0:nbGeneration),popMM/total, type = "l",col = "brown");
  plot(x = NULL, y = NULL,xlim = xrange,ylim = c(0,1), type="o", xlab="Génération i",   ylab="nombre de perosnnes moyenne");
  lines(c(0:nbGeneration),popMB/total, type = "l",col = "green");
}
## Question 1 : Cas d’une petite population

Vous expliquerez et commenterez de façon pertinente vos observations.

#---DONNEES DU PROBLEME
P=20
I=20

N=10

#---couleur des yeux
BB = 2
MB = 1
MM = 0

Population 1 :

MM BM BB P
12 4 4 20

Un parent avec une combinaison MM donnera toujours un allèle marron, un parent avec une combinaison BB donnera toujours un allèle bleu et un parent MB à une chance sur 2 de donné un allèle bleu ou marron.

Probabilité d’obtenir un allèle marron : => probabilité parent yeux MM + probabilté parent yeux MB/2

=> (12/20)+((4/2)/20)

=> 14/20

=> 7/10

Probabilité d’obtenir un allèle bleu :

=> probabilité parent yeux BB + probabilté parent yeux MB/2

=> (4/20)+((4/2)/20)

=> 6/20

=> 3/10

Probabilité des differentes combinaison au générations suivantes:

MM BM BB
(7/10)x(7/10) = 49% (7/10)x(3/10)x2 = 42% (3/10)x(3/10) = 9%

Ainsi pour cette population on devrait constater un nombre imporatnt de combinaison MM et BM mais très peu de combinaison BB

set.seed(42)
#---Génération population de départ
P01 = genererP0Alea(4,BB,12,MM,P-12-4,MB,P)


#---Population après N générations
P101 = generationPI(P01,P,I,N,1)

Population 2 :

MM BM BB P
4 4 12 20

Probabilité d’obtenir un allèle marron :

=> probabilité parent yeux MM + probabilté parent yeux MB/2

=> (4/20)+((4/2)/20)

=> 6/20

=> 3/10

Probabilité d’obtenir un allèle bleu :

=> probabilité parent yeux BB + probabilté parent yeux MB/2

=> (12/20)+((4/2)/20)

=> 14/20

=> 7/10

Probabilité des differentes combinaison au générations suivantes:
MM BM BB
(3/10)x(3/10) = 9% (7/10)x(3/10)x2 = 42% (7/10)x(7/10) = 49%

Ainsi pour cette population on devrait constater un nombre imporatnt de combinaison BB et BM mais très peu de combinaison MM

#---Génération population de départ
P02 = genererP0Alea(12,BB,4,MM,P-12-4,MB,P)

#---Population après N générations
P102 = generationPI(P02,P,I,N,1)

Population 3 :

MM BM BB P
5 10 5 20

Probabilité d’obtenir un allèle marron :

=> probabilité parent yeux MM + probabilté parent yeux MB/2

=> (5/20)+((10/2)/20)

=> 10/20

=> 1/2

Probabilité d’obtenir un allèle bleu :

=> probabilité parent yeux BB + probabilté parent yeux MB/2

=> (5/20)+((10/2)/20)

=> 10/20

=> 1/2

**Probabilité des differentes combinaison au générations suivantes:*

MM BM BB
(1/2)x(1/4) = 1/4 (1/2)x(1/2)x2 = 1/2 (1/2)x(1/2) = 1/4

Ainsi pour cette population on devrait constater un nombre imporatnt de combinaison MB et un nombre de combinaison MM et BB similaire.

#---Génération population de départ
P03 = genererP0Alea(5,BB,5,MM,P-5-5,MB,P)

#---Population après N générations
P103 = generationPI(P03,P,I,N,1)

Les resultats pour les combinaisons BB et MM sont un peu au dessus des probabilités déterminées car les combinaisons MB sont très en dessous. Les résultats dépendent fortement du tirage alléatoire des couples. Le tirages des parents est fait avec un tirage uniforme. Mais :

  • l’association entre parent dépends de deux tirages uniforme différents. D’où un certaine zone de flou sur les résultats.

  • les parents qui se reproduisent sont tirés au sort avec remise. Avec ce code un parent peut ne pas avoir d’enfant ou au contraire plusieurs.

Ainsi certaine combinaison peuvent être avantagé de manière aléatoire par rapport à d’autre:

  • S’il a beaucoup de couple BB/BB et MM/MM

  • S’il a beaucoup de couple MB/BB, MB/MM et MB/MB qui donne le même allèle alors les combinaisons MB vont diminuer, car la probabilité d’obtenir l’un des deux allèles est équiprobable

  • Il se peut aussi qu’il y ai une minorité de parent MB par rapport au deux autres combinaisons

On remarque que lorsque la combinaison BB e MM devrait être similaire la combianison BB prend l’avantage pour les même raisons que cité précédement.

Il est aussi possible de constater que les population sont très variable sur 1/5*I et se stabilise par la suite.

Question 2 :

Vous expliquerez et commenterez de façon pertinente vos observations et comparerez le comportement de ce système par rapport au précédent.

#---DONNEES DU PROBLEME
P=2000
I=100

N=10

#---couleur des yeux
BB = 2
MB = 1
MM = 0

Population 1 :

MM BM BB P
1200 400 400 2000

Les probabilités sont les mêmes que celles de la population 1 question 1.Ainsi pour cette population on devrait constater un nombre imporatnt de combinaison MM et BM mais très peu de combinaison BB.

#---Génération population de départ
P01 = genererP0Alea(400,BB,1200,MM,P-1200-400,MB)

#---Population après N générations
P101 = generationPI(P01,P,I,N,1)

Population 2 :

MM BM BB P
400 400 1200 2000

Les probabilités sont les même que celles de la population 2 question 1. Ainsi pour cette population on devrait constater un nombre imporatnt de combinaison BB et MB mais très peu de combinaison MM.

#---Génération population de départ
P02 = genererP0Alea(1200,BB,400,MM,P-1200-400,MB)

#---Population après N générations
P102 = generationPI(P02,P,I,N,1)

Population 3 :

MM BM BB P
500 1000 500 2000

Les probabilités sont les même que celle de la population 3 question 1.Ainsi pour cette population on devrait constater un nombre simillaire de combinaison MM et BB et un nombre important de combinaison MB.

#---Génération population de départ
P03 = genererP0Alea(500,BB,500,MM,P-500-500,MB)

#---Population après N générations
P103 = generationPI(P03,P,I,N,1)

On constate les mêmes résultats que dans la question précédentes. En effet comme lors de la première question les résultats dépendent fortement du tirage alléatoire des couples.On en déduit donc que le nombre de génération n’influe pas sur les pourcentages de combinaison.

Question 3 :

En quoi cette modification modifie-t-elle la dynamique de la question 1. Qu’en pensez-vous? Le système vous semble-t-il “stable”, certaines zones semblent-elles plus “attractrices” que d’autres ? …

#---DONNEES DU PROBLEME
set.seed(42)
P=20
I=2000

N=10

#---couleur des yeux
BB = 2
MB = 1
MM = 0

Population 1 :

MM BM BB P
12 4 4 20

Les probabilités sont les même que celle de la population 1 question 1.Ainsi pour cette population on devrait constater un nombre imporatnt de combinaison MM et BM mais très peu de combinaison BB

#---Génération population de départ
P01 = genererP0Alea(4,BB,12,MM,P-12-4,MB)

#---Population après N générations
P101 = generationPI(P01,P,I,N,2)