Auteurs : Clément VALENTIN & Arthur CLERC-GHERARDI
Question 0 :
Nous allons d'abord donner notre intuition pour chaque question :
Question1 : Si l'on part sur un état initial où il y a une personne dans chacune des deux villes. Alors plusieurs possibilités existent. En effet, nous allons voir les cas extrêmes en premier. Si toutes les personnes qui arrivent vont dans la ville 1, alors la probabilité P(t) va évoluer pour démarrer P(0)=½ pour tendre à vers 1 quand t tend vers l'infini. Si toutes les personnes qui arrivent vont dans la ville 2, la probabilité P(t) va diminuer en partant de p(0)=½ pour tendre vers 0 quand t va tendre vers l'infini.
Nous avons supposé ce comportement pour les deux cas extrêmes. Maintenant, regardons ce qui se passe dans le cas où les personnes vont dans une ville après l'autre alors la probabilité va osciller autour de ½ pour tendre vers ½ quand t va tendre vers l'infini.
Question 2 : Pour comprendre la loi statistique que ce problème peut suivre. Ce problème peut être modéliser par le fait qu'en prenant une valeur au hasard, cette valeur est équiprobable par rapport aux autre (tout comme pour une suite de lancers de dé par exemple).
Question 3 : On peut imaginer que la répartition initiale va avoir une influence sur la limite de la probabilité. Une répartition initiale plus élevée dans la ville 1 donnera donc une limite supérieure à ½ et l'inverse donnera une limite inférieure à ½.
Maintenant que nous avons tenté de deviner le comportement de ce problème, nous allons commencer à programmer.
Question 1 :
set.seed(666)
proba_evol <- function(n1,n2) #Fonction qui calcule la probabilité d'aller dans la ville 1
{
(n1 / (n1+n2))
}
evolution_population <- function(n1,n2,nb_iteration){
nv1 = c() #evolution de la ville 1
nv2 = c() #evolution de la ville 2
nv1 <- c(nv1,n1) #On ajoute le premier élément
nv2 <- c(nv2,n2)
for(i in 1:nb_iteration){
if( runif(1,0.0,1.0) < (proba_evol(n1,n2)) ){
n1 <- n1 + 1 #Si le tirage aléatoire est inférieur à la proba on augmente la population de la ville 1
}else{
n2 <- n2 + 1 #Sinon on augmente celle de la ville 2
}
nv1 <- c(nv1,n1) #Puis on met à jour les tableaux d'évolution de pop.
nv2 <- c(nv2,n2)
}
return (nv1 / ( nv1 + nv2))
}
On applique ensuite cette fonction à une autre fonction qui va l'appeler le nombre de fois souhaité pour pouvoir avoir différentes courbes.
graph_courbe <- function(n, n1, n2, nb_tirage) {
for (i in 1:n) {
# On fait une boucle pour le nombre de courbes nécessaire
courbe = evolution_population(n1, n2, nb_tirage) #On crée la courbe
plot(courbe, type = "l", col = i, xlim = c(0, 1000), ylim = c(0, 1),
xlab = "Nombre de tirages", ylab = "Ratio habitants ville 1 / personnes") #On l'affiche
par(new = T) #Permet d'afficher tout avec le meme plot
}
}
graph_courbe(10, 1, 1, 1000)
title(main = "Courbes du ratio de population dans la ville 1", col.main = "red",
font.main = 4)
On peut donc voir que dans les 100-150 premiers tirages, c'est très inégal et les courbes varient encore beaucoup mais à partir des 200-250 tirages on s'aperçoit que ça a tendance à stagner. On peut également remarquer que les limites ont tendance à se rapprocher du ratio ½.
Question 2 :
On va créer premièrement une fonction permettant de stocker un nombre n de limites dans un tableau.
loi_statistique_limite <- function(n, n1, n2, nb_tirage) {
stat = c() #On créé le tableau qui servira a stocké les limites
for (i in 1:n) {
ratio = evolution_population(n1, n2, nb_tirage) #On stock une evolution de population
stat <- c(stat, ratio[nb_tirage]) #On stock dans le tableau la limite en prenant le dernier tirage
}
return(stat)
}
On trace ensuite l'histogramme correspondant.
hist(loi_statistique_limite(5000, 1, 1, 1000), breaks = 50, xlab = "Limite",
ylab = "Fréquence", main = "Histogramme de la loi statistique limite")
Nous avons fait le test sur 5000 évolutions de population. On se rend compte que notre intuition était bonne. En effet on a une fréquence à peu près similaire pour toutes les limites. Il faudrait faire le tests sur 100 000 évolutions de population pour avoir quelque chose qui soit presque égal de partout. Nous avons donc bien une loi uniforme.
Question 3 :
Nous refaisons le même histogramme mais pour des valeurs initiales différentes pour voir si la répartition initiale a un effet sur la loi/limite.
hist(loi_statistique_limite(5000, 10, 10, 1000), breaks = 50, xlab = "Limite",
ylab = "Fréquence", main = "Histogramme de la loi statistique limite avec n1=10 et n2=10")
hist(loi_statistique_limite(5000, 100, 100, 1000), breaks = 50, xlab = "Limite",
ylab = "Fréquence", main = "Histogramme de la loi statistique limite avec n1=100 et n2=100")
hist(loi_statistique_limite(5000, 1, 10, 1000), breaks = 50, xlab = "Limite",
ylab = "Fréquence", main = "Histogramme de la loi statistique limite avec n1=1 et n2=10")
hist(loi_statistique_limite(5000, 1, 100, 1000), breaks = 50, xlab = "Limite",
ylab = "Fréquence", main = "Histogramme de la loi statistique limite avec n1=1 et n2=100")
On se rend compte très facilement que la répartition initiale a un effet sur la valeur limite. En effet si on commence à 1 personne par ville, la loi statistique sera uniforme et qu'importe la limite, elles auront à peu près toutes la même fréquence. Par contre à partir de 10 personnes dans chaque ville, on voit que les fréquences aux alentours d'une limite de 0.5 sont bien plus importantes que pour les autres limites (même constatations pour 100 personnes dans chaque ville au départ).
Par contre si l'on fait une répartition initiale inégale comme le montre les deux derniers histogrammes, on voit que la limite à tendance à tendre vers 0 beaucoup plus souvent. Si on mettait les 100 personnes au départ dans la ville 1 alors la fréquence serai plus élevé pour les limites aux alentours de 1.
La répartition initiale a donc un impact sur la loi statistique de la limite.
Question 4 :
Principalement, l'étude grâce à l'informatique de ce problème n'a fait que confirmer nos pensées. La répartition initiale a un impact important sur l'évolution de la population ce qui est logique, une ville comportant peu de personnes en attire normalement pas beaucoup d'autres. Dans la vie, on retrouve ce phénomène si l'on regarde les populations urbaines et rurales.
Bien sur ce qui permet aux gens de choisir une ville où s'installer n'est pas seulement sa taille, mais aussi la proximité des axes de communications, la position géographique, le climat, la prospérité de la ville (chômage important ou non), les activités au sein de la ville ou encore plein d'autres facteurs … Nous pourrions les rajouter pour modéliser ce problème de façon plus rigoureuse, ce que nous ferons certainement dans un prochain TP ou DM.