Adji Sambe, Mehdi Nait-Sidous

Devoir 1 : Dynamique de populations

Question 0 : Intuition

A un instant quelconque, il y a très peu de chances que les deux villes aient le même nombre d’habitants, l’une des deux villes aura évolué plus vite que l’autre. La population des deux villes va probablement se stabiliser au cours du temps.

Question 1 (Intuition) :

L'intérêt de choisir un n suffisamment grand permet un aperçu beaucoup plus réaliste sur les populations des villes et leur évolution dans le futur. L'idéal serait d'avoir n comme une des premières valeurs pour laquelle la limite est atteinte, afin d'avoir un temps de calcul le plus faible possible. Suppositions:

Question 2 (Intuition) :

Hésitation entre loi de Poisson et loi Binomiale. Le fait de choisir la ville N1 peut être assimilé à un succès et N2 à un échec. On reproduit l’expérience pour chaque nouvel immigrant. Loi de la limite : soit vers 0, soit vers 1 soit vers 0.5. Cela nous fait donc penser à une loi Binomiale.

Question 3 (Intuition) :

L’état initial peut influencer sur l’évolution et par conséquent sur la limite de P(t). En effet, le fait qu’une ville ait à l’état initial plus d’habitants que l’autre peut faire pencher la balance en sa faveur. A l’instant t=T il y a très peu de chance que les deux villes aient le même nombre d’habitants, l’une des deux villes aura plus vite évolué que l’autre. l'évolution des deux villes va probablement atteindre une limite au cours du temps.


Question 1 : Premières observations de la dynamique

Quand n est grand, on a une meilleure précision sur l'allure de P(t).

set.seed(42)
trajectoireP <- function(n1_1 = 1, n2_1 = 1, n = 500) {
    t = 1
    traj = c()
    n1_t = n1_1
    n2_t = n2_1
    for (t in 1:n) {
        p_t = n1_t/(n1_t + n2_t)
        if (runif(1) > p_t) {
            n2_t = n2_t + 1
        } else {
            n1_t = n1_t + 1
        }
        traj = c(traj, p_t)
    }

    traj
}

Tracé du graphique :

nb = 500
plot("", "", xlim = c(0, nb), ylim = c(0, 1), type = "n")
nb_trajectoire = 10
cl <- rainbow(nb_trajectoire)
for (i in 1:nb_trajectoire) {
    lines(1:nb, trajectoireP(n = nb), col = cl[i], type = "b")
}
title(main = "10 trajectoires de P(t)", xlab = "t", ylab = "P(t)")

plot of chunk unnamed-chunk-2

On remarque que entre 0 et 100, P(t) varie beaucoup. C'est cet intervalle qui conditionne la valeur à “l'infini” de P(t). Au delà, P(t) commence à se stabiliser.


Question 2 : Loi statistique de la limite

On choisit n = 800, car c'est selon nous à partir de cette valeur que P(t) se stabilise. On choisit le nombre de trajectoire calculé à 2000, pour avoir un histogramme plus précis.

limiteP <- function(n1_1 = 1, n2_1 = 1, n = 800, nb_trajectoire = 2000) {
    tab = c()
    for (i in 1:nb_trajectoire) {
        lim = trajectoireP(n1_1, n2_1, n)
        tab = c(tab, lim[n])
    }
    tab
}

Tracé de l'histogramme :

hist(limiteP(), breaks = seq(0, 1, 0.1), col = "grey")

plot of chunk unnamed-chunk-4

On constate que la valeur limite tend vers 0.5 (on peut le vérifier avec mean()). On constate aussi que les probabilités sont bien réparties sur l'histogramme, on a une distribution uniforme. Sur chaque intervalle [a,b] appartenant à [0,1], P([a;b]) = b-a. La valeur limite suit une loi Uniforme sur [0;n]. (Pour I et J des sous intervalles de [0,n], P(I) = P(J))


Question 3 : Influence de la répartition initiale

On rappelle que quand on a N1=N2=1, la loi de la valeur limite est une loi uniforme. On utilise la fonction limiteP codée précédemment avec des variations de populations initiales des deux villes.

par(mfrow = c(3, 1))
hist(limiteP(n1_1 = 1, n2_1 = 1), breaks = seq(0, 1, 0.025), col = "grey")
hist(limiteP(n1_1 = 10, n2_1 = 10), breaks = seq(0, 1, 0.025), col = "grey")
hist(limiteP(n1_1 = 100, n2_1 = 100), breaks = seq(0, 1, 0.025), col = "grey")

plot of chunk unnamed-chunk-5

Nous avons le même nombre d'habitants dans chaque ville à l'instant t=1. Si la valeur limite est comprise entre 0 et 0.5, cela veut dire que la ville 1 est moins peuplée que la ville 2. De même, si cette valeur est comprise entre 0.5 et 1.0, 1 a plus d'habitants que 2. La valeur limite centrale est 0.5. Les valeurs limites sont réparties autour de cette valeur centrale. La distribution est symétrique donc la valeur limite suit une loi qui s'assimile à une loi Normale.

par(mfrow = c(3, 1))
hist(limiteP(n1_1 = 1, n2_1 = 1), breaks = seq(0, 1, 0.025), col = "grey")
hist(limiteP(n1_1 = 1, n2_1 = 10), breaks = seq(0, 1, 0.025), col = "grey")
hist(limiteP(n1_1 = 1, n2_1 = 100), breaks = seq(0, 1, 0.025), col = "grey")

plot of chunk unnamed-chunk-6

Ici, le nombre d'habitants dans la ville 2 est largement supérieur à celle de la ville 1 à l'état initial. la probabilité qu'il choisisse la ville 1 est donc faible. Prenons un exemple : si au depart, il y a 1 personne dans la ville 1 et 100 dans la ville 2. A un instant t, N2 sera beaucoup plus grand que N1. On a des phénomènes rares. On a de petites valeurs pour la valeur limite. Donc elle suit une loi qui s'approche de la loi de Poisson.

En conclusion, on constate que la répartition initiale entre les deux villes a une influence notable sur la loi de la valeur limite.


Question 4 : Avis

Comme prévu, nous avons retrouvé la loi de Poisson quand il y un déséquilibre au départ de la simulation. A l'inverse, on ne s'attendait pas à obtenir une loi Normale quand les villes ont la même population initiale.

Une hypothèse que l'on pourrait rajouter est l'ajout d'un facteur de mortalité et l'espérence de vie. Si on prend en compte le facteur de mortalité et l'espérance de vie (si elle est très basse), la population va chuter et on aura des courbes en forme d'exponentielle inversée. Si l'espérance de vie est élevée, on aura les mêmes courbes que celle que l'on a.

On pourrait aussi ajouter une hypothèse qui dit que les habitants peuvent changer de ville (passer de la ville 1 à la 2, et vice-versa) selon une certaine probabilité.