Devoir 1 : Dynamique de population

Nous nous intéressons dans ce devoir à la croissance de la population de deux villes. Soit N1(t) et N2(t) la population à l'instant t respectivement des villes 1 et 2. Lorsqu'un nouvel immigrant arrive à l'instant t+1, il choisit d'émigrer vers la ville 1 avec une probabilité égale à P(t) = N1(t)/(N1(t)+N2(t)). Nous allons ici étudier la variable aléatoire P(t).

Question 0 :

Comme vu en cours, notre intuition nous pousse à penser qu'il y aurait 3 cas possible à la fin d'une simulation :
_ le cas où la population de la première ville serait fortement plus importante que la population de la seconde
_ le cas où la population de la deuxième ville serait fortement plus importante que la population de la première
_ le cas où la population des deux villes sont très proches

En effet, dans le cas ou l'une des deux villes commencerait à prendre l'avantage dès le début, elle verrait sa population grandir de façon plus rapide que la deuxième ville. Ceci s'expliquerait par la probabilité d'émigrer vers la ville 1 de P(t)= N1(t)/(N1(t)+N2(t)). Aussi, si aucune ville ne prend l'avantage, les deux populations resteraient proches.

Question 1:

Nous allons dans un premier temps réaliser 10 fois l'expérience proposée dans ce devoir, avec un état initial (1,1). Ceci signifie que la première et la deuxième ville compte un habitant chacune avant de commencer la simulation.

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.0.2

set.seed(54259); # on fixe la graine du générateur de nombres aléatoires

#------------------------------------------
#Définition des variables :
# v1 est la population de la ville 1
# v2 est la population de la ville 1
# trajectoire correspond au numéro de l'expérience réalisée
# n correspond au nombre de personne désirant choisir une ville
# datafinal correspond à notre dataframe finae.
#------------------------------------------

v1=1;
v2=1;
trajectoire=1;
n=1000;
datafinal=data.frame();

#Boucle principale

for (j in 1:10) #boucle sur le nombre de trajectoire
  {
    P=c()
    tabn=c()
    for (i in 1:n) #boucle sur le nombre de personne qui veulent choisir une ville
      {
        rand = runif(1,0.0,1.0); #on tire un nombre aléatoirement
        proba = v1/(v1+v2); #définition de la probabilité

        #remplissage des vecteurs
        P=c(P,proba);
        tabn=c(tabn,i);

       #augmentation de la population de la ville correspondante
        if (rand<proba)
          { v1=v1+1;}
        else v2=v2+1;

      }

    #génération des dataframes
    data=data.frame(tabn,P,trajectoire);
    datafinal<-rbind(datafinal,data);

    trajectoire=trajectoire+1;
    v1=1;
    v2=1;
  }

#création du graphique
ggplot(datafinal,aes(x=tabn,y=P,color=trajectoire))+geom_point();

plot of chunk unnamed-chunk-1

On observe sur ce graphique 10 courbes correspondant aux 10 simulations effectuées. Chacune retrace l'évolution de la variable aléatoire P(t) en fonction du nombre d'immigrants n qui arrivent au croisement des deux villes.

Pour ces simulations nous avons choisi n=1000, c'est-à-dire un maximum de 1000 immigrants. Choisir n=1000 nous paraissait un bon compromis entre vitesse de calcul de l'expérience, et observation d'une limite pour chacune des courbes. En effet, on constate que chacune des courbes se stabilise autour d'une certaine valeur.

Si une courbe se stabilise autour d'une valeur inférieure à 0.5, c'est que la population de la ville 2 est plus importante que celle de la ville 1 à la fin de l'expérience. Si, au contraire, uen courbe se stabilise autour d'une valeur supérieure à 0.5, c est que la population de la ville 1 est plus importante que celle de la ville 2. Enfin, si une courbe se stabilise autour d'une valeur proche de 0.5, c'est que les populations des deux villes sont proches à la fin de l'expérience.

On observe donc que les 3 cas que nous avions estimés au depart sont bien présents : celui où la ville 1 a pris l'avantage sur la deuxième, celui où les deux villes ont une population équivalente, et ceux ou la ville 2 a pris l'avantage sur la première.

Question 2:

Nous allons maintenant étudier la variable aléatoire limite de P(t) et en déduire sa loi statistique. Traçons dans un premier temps l'histogramme de cette variable aléatoire pour un millier de trajectoires grâce à la fonction suivante:

#La fonction suivante va prendre en entrée les populations des villes 1 et 2, et nous dessinera en sorti un histogramme correspondant au nombre d'apparition d'une limite.

Lim_Histo <- function(v1,v2)
  {
    pv1=v1;
    pv2=v2;
    P=c();
    for (j in 1:1000) #boucle sur le nombre de limites voulues
    {
      proba = pv1/(pv1+v2);
      for (i in 1:1000) #boucle sur le nombre de personne désirant choisir une ville
        {
          rand = runif(1,0.0,1.0);#on tire un nombre aléatoirement

          #augmentation de la population
          if (rand<proba)
              { pv1=pv1+1;}
          else {pv2=pv2+1;}

          proba = pv1/(pv1+pv2);
        }
    #On choisi de prendre la derniere valeur obtenue comme limite et on l'ajoute au vecteur P
    P=c(P,proba);
    pv1=v1;
    pv2=v2;
  }
  #On dessine l'histogramme
  hist(P);
}

Le résultat est le suivant :

Lim_Histo(1, 1)

plot of chunk unnamed-chunk-3

Analysons tout d'abord comment a été construit ce graphique. Dans le code ci-dessus, le vecteur “P” contient 1000 cases, correspondant aux 1000 trajectoires que l'on a simulées. La ième case contient la dernière valeur calulée de la probabilité P(t) pour la trajectoire i. Autrement dit, nous considérons ici que, pour une trajectoire donnée, la probabilité P(t) calculée lorsque le 1000e immigrant arrive constitue la valeur limite de la variable aléatoire P(t).
Cet histogramme nous montre que la fréquence d'apparition de chaque limite de P(t) est quasiment égale quelque soit la limite. Sur les 1000 trajectoires, il y en a quasiment 100 qui ont entre 0.0 et 0.1 comme valeur limite de P(t), 100 qui ont entre 0.1 et 0.2 comme valeur limite de P(t) etc… Cela nous permet de d'affirmer que la loi statistique de la limite de P(t) est une loi uniforme.

Question 3:

Nous allons maintenant vérifier si la répartition initiale a de l'influence sur la limite.

Traçons d'abord les 3 premiers histogrammes où, à l'état initial, la population de la ville 1 est la même que la population de la ville 2 :

Premier cas où l'état initial est : (n1(1),n2(1))=(1,1)

Lim_Histo(1, 1)

plot of chunk unnamed-chunk-5

Deuxième cas où l'état initial est : (n1(1),n2(1))=(10,10)

Lim_Histo(10, 10)

plot of chunk unnamed-chunk-6

Troisième cas où l'état initial est : (n1(1),n2(1))=(100,100)

Lim_Histo(100, 100)

plot of chunk unnamed-chunk-7

On observe clairement que les deux derniers histogrammes sont bien différents du premier. Le deuxième histogramme indique par exemple que, sur les 1000 trajectoires étudiées, il y en a presque 600 qui atteignent une valeur limite de P(t) proche de 0.5.
En revanche, il y en a très peu qui atteignent une valeur limite de P(t) proche de 0 ou de 1. Il y a donc plus de chances pour que, à la fin d'une trajectoire donnée, la population de la ville 1 reste proche de celle de la ville 2. Ceci est encore plus flagrant sur le troisième histogramme qui retrace le nombre de cas qui ont atteint une valeur limite de P(t) entre 0.4 et 0.6, une valeur hors de cet intervalle n'étant jamais apparue à la fin de la simulation.

Expliquons pour quelle raison les deux derniers histogrammes sont différents du premier. Lorsque l'on a, à l'état initial, un habitant dans chaque ville et qu'un nouvel immigrant arrive, il a autant de chances de choisir la ville 1 ou la ville 2. S'il choisit d'émigrer vers la ville 1, la probabilité pour qu'un nouvel immigrant émigre vers la ville 1 est maintenant de 2/3.
Au coup d'après, la probabilité pour un nouvel immigrant d'émigrer vers la ville 1 est de ¾ (=0.75) si le deuxième immigrant a choisi la ville 1. La probabilité de choisir la ville 1 est donc nettement plus importante au 3e coup que à l'état initial (dans le cas où le premier et le deuxième immigrant aient choisi la ville 1). Plaçons nous maintenant dans le cas où, à l'état initial, il y a 100 habitants dans chaque ville. Le premier immigrant a toujours une chance sur 2 d'émigrer vers la ville 1.
Dans le cas où il choisit la ville 1, le prochain immigrant a une probabilité de 101/201 de choisir la ville 1, ce qui est à peu près égal à 0.502. Toujours dans le cas où le 2e immigrant ait choisi la ville 1, le prochain arrivant aura une probabilité de 102/202 de choisir la ville 1, ce qui est approximativement égal à 0.505. On remarque que à chaque nouvelle itération, la nouvelle probabilité calculée reste proche de 0.5. Nous nous sommes ici placés dans le cas où chaque nouvel arrivant choisit la ville 1 et l'on obtient une valeur limite de P(t) légèrement supérieure à 0.5.
Si le nombre d'immigrants qui choisissent la ville 2 est plus important que le nombre de personnes qui choisissent la ville 1, alors la valeur limite de P(t) sera légèrement inférieure à 0.5.

On en conclut donc que changer l'état inital modifie la loi suivie par la limite de P(t). Ce n'est plus une loi uniforme.

Traçons maintenant les 3 prochains histogrammes, dans lesquels la population de la ville 1 reste à égale à 1 habitant, mais où on augmente la population de base de la ville 2:

Quatrième cas où l'état initial est : (n1(1),n2(1))=(1,1)

Lim_Histo(1, 1)

plot of chunk unnamed-chunk-8

Cinquième cas où l'état initial est : (n1(1),n2(1))=(1,10)

Lim_Histo(1, 10)

plot of chunk unnamed-chunk-9

Sixième cas où l'état initial est : (n1(1),n2(1))=(1,100)

Lim_Histo(1, 100)

plot of chunk unnamed-chunk-10

Ici encore, on peut remarquer que les deux derniers histogrammes sont différents par rapport au premier (de la question 4). Expliquons cette différence. Dans le cinquième et sixième cas, la population de la ville 2 est plus importante que celle de la ville 1 dès l'état initial. Les deux derniers histogrammes dévoilent que la plupart des trajectoires atteignent une limite de P(t) proche de 0. En d'autres termes la population de la ville 2 est nettement plus importante que celle de la ville 1 à la fin de la plupart des simulations.

Ceci est encore plus flagrant sur le dernier histogramme car il indique le nombre de cas qui ont atteint une valeur limite de P(t) entre 0.0 et 0.06, une valeur hors de cet intervalle n'étant jamais apparue à la fin de la simulation.

On explique cela par le fait que la ville 2 est avantagée dès l'état initial. Pour le sixième cas par exemple, lorsque le premier immigrant arrive, il choisit la ville 1 avec une probabilité de 1/101, soit de 0.0099. S'il choisit la ville 1, le prochain immigrant émigrera vers la ville 1 avec une probabilité égale à 2/102, soit à 0.019. En continuant ainsi, on remarque que la nouvelle probabilité calculée est toujours très proche de 0.

Lorsque la population d'une des deux villes possède plus d'habitants que la deuxième ville à l'état initial, les personnes désirant choisir une ville auront tendance à aller vers celle qui a la plus grande population. On en conclut que la loi suivie par la limite de P(t) n'est pas une loi uniforme lorsque, à l'état initial, la population de la ville 2 est plus importante que celle de la ville 1.

Question 4:

Lors de la première question, nous avions supposé que lorsque l'une des villes prenait l'avantage sur la deuxième, alors sa population augmenterait de son coté avec une plus forte probabilité.

Notre intuition s'est dans un premier temps vérifiée à la question 2, lorsque nous avons observé l'apparition des 3 cas que nous avions imaginés.

Elle s'est finalement confirmée lors de la question 3, où nous avons pu observer dans un premier temps que lorsque la population initiale des deux villes est importante et égale, la limite de la probabilité tendra vers 0,5 à la fin des simulations. Dans un second temps, nous avons pu confirmer le fait que lorsqu'une ville prend l'avantage, elle va le conserver jusqu'à la fin, les personnes désirant rejoindre une ville auront tendance à rejoindre celle-ci.

Ce TP a permis de réaliser de confirmer de façon pratique des intuitions concernant un problème donné, dans ce cas précis la dynamique des populations. D'autres études sur la dynamique de populations sont menées chaque année afin d'etudier, par exemple, l'effet d'une épidémie sur une population ou encore afin de prévoir selon les éléments actuels si une certaine populations restera stable au cours des prochaines années. D'autres critères sont utilisés afin de rendre le modèle de simulation le plus réaliste possible comme l'âge des individus, l'environnement des villes, le taux de chomage, la qualité de vie, etc… Ce sont autant de critères qui font que nous, en tant qu'individus, nous aurions tendance à faire notre choix entre deux villes différentes.