Devoir 1 : Dynamique de populations Perruche Benoit & Legros Jules

On initialise le DM en fixant une seed.

set.seed(42)

On définit des fonctions qui nous serviront pour calculer les populations des villes 1 et 2 et les probabilités d'immigration vers la ville 1.

proba <- function(pop1, pop2) {
    probab = pop1/(pop1 + pop2)
    c(probab)
}

# Test avec (1,1) la probabilité doit être 0.5

proba(1, 1)
## [1] 0.5
new_population <- function(pop1, pop2, proba) {
    rand = runif(1, 0, 1)
    if (rand < proba) {
        pop1 <- pop1 + 1
    } else {
        pop2 <- pop2 + 1
    }
    c(pop1, pop2)
}

# Test de la fonction, le résultat doit être (20,31) ou (21,30)

new_population(20, 30, 0.5)
## [1] 20 31
set_population <- function(p, m) {
    c(p, m)
}

Question 1 :

Intuition : Plus la population d'une ville est élevée, plus il y a de chances qu'elle le soit encore plus le jours suivant. De même, si la population est plus faible, elle a moins de chance d'attirer de nouveaux immigrants.

n = 10
t = 1000
pop1 = 1
pop2 = 1

proba_multi <- function(n, pop1, pop2) {
    prob = c()
    p = set_population(pop1, pop2)
    for (i in 1:n) {
        a = proba(p[1], p[2])
        prob = c(prob, a)
        p = new_population(p[1], p[2], a)
    }
    prob
}

graphe <- function(traj, pop1, pop2, n) {
    for (i in 1:traj) {
        courbes = proba_multi(n, pop1, pop2)
        plot(courbes, type = "l", col = i, xlim = c(0, 1000), ylim = c(0, 1), 
            xlab = "Instant t", ylab = "Probabilité d'un nouvel immigrant dans la ville 1")
        par(new = T)
    }
}

graphe(10, 1, 1, 1000)

plot of chunk unnamed-chunk-5

On observe que sur les 200-250 premiers jours, il y a des variations importantes des probabilités, cela est du au fait qu'un individu pèse plus parmis 50 autres que parmis 500 autres, et donc à partir d'environ le 250ieme jour, les probabilités se stabilisent, cela se traduit sur le graphe pour un courbe qui tends à devenir une droite d'équation “Probabilité d'un nouvel immigrant dans la ville 1” = constante.

Question 2 :

Intuition : Soit tous les immigrants allant dans la même ville, on a : \( \lim\limits_{t \to \infty} P(t) = \lim\limits_{t \to \infty} \frac{N(t)}{N(t) + 1} =1 \)

pour \( \lim\limits_{t \to \infty} N(t) = +\infty \)

proba_fin <- function(n = 10, pop1 = 1, pop2 = 1) {
    prob = c()
    p = set_population(pop1, pop2)
    a = 0
    for (i in 1:n) {
        a = proba(p[1], p[2])
        p = new_population(p[1], p[2], a)
    }
    a
}

proba_fin(10000, 1, 1)
## [1] 0.1424

limite <- function(traj, pop1, pop2, n) {
    limites = c()
    for (i in 1:traj) {
        limites <- c(limites, proba_fin(n, pop1, pop2))
    }
    limites
}

hist(limite(10000, 1, 1, 1000), breaks = 50, xlab = "Limite", ylab = "Fréquence", 
    main = "Histogramme de la valeur limite")

plot of chunk unnamed-chunk-6

On remarque que la loi de probabilité est bien uniforme, les valeurs de fin sont bien uniformement réparties, ce qui est loin de notre intuition première, où nous avions fait une erreur d'interprétation.

Question 3:

Intuition : Plus la différence de population initiale est élevée entre deux villes, plus elle tend à augmenter.

hist(limite(4000, 10, 10, 1000), breaks = 50, xlab = "Limite", ylab = "Fréquence", 
    main = "Histogramme de la valeur limite (pop1=10, pop2=10)")

plot of chunk unnamed-chunk-7

En partant avec des populations égales, mais plus élévée que (1,1), la probabilité est presque stabilisée, et elle a donc plus tendance à garder une valeure proche de 0,5.

hist(limite(4000, 100, 100, 1000), breaks = 50, xlab = "Limite", ylab = "Fréquence", 
    main = "Histogramme de la valeur limite (pop1=100, pop2=100)")

plot of chunk unnamed-chunk-8

Même constat que précédemment, mais le constat et encore plus flagrant car les valeurs sont encore plus stabilisées.

hist(limite(4000, 1, 10, 1000), breaks = 50, xlab = "Limite", ylab = "Fréquence", 
    main = "Histogramme de la valeur limite (pop1=1, pop2=10)")

plot of chunk unnamed-chunk-9

En déséquilibrant une ville par rapport à l'autre, on voit bien que les probabilités tendent du côté où il y a le plus d'habitants. En prenant une population de 10, on stabilise un peu la valeur de la probabilité.

hist(limite(4000, 1, 100, 1000), breaks = 50, xlab = "Limite", ylab = "Fréquence", 
    main = "Histogramme de la valeur limite (pop1=1, pop2=100)")

plot of chunk plot

Même constat que précédemment, mais avec une plus grande stabilité.

Question 4:

Globalement, nos intuitions étaient bonnes mais trop limitées à des cas particuliers. Les résultats de cette étude nous apprennent qu'il est nécessaire d'avoir une vision globale du problème. Ce devoir étudie l'accroissement d'une ville en fonction de sa taille, mais un nouvel arrivant choisira surement sa destination sur d'autres critères comme la position géographique, les opportunités de travail, la qualité de vie…