Devoir 1: Dynamique de Population
Corentin RICOU & William BOBO 24 Octobre 2013
set.seed(1)
pop_dynamique <- function(n1 = 1, n2 = 1, nb = 10) {
nv1 = c()
nv2 = c()
nv1 <- c(nv1, n1)
nv2 <- c(nv2, n2)
for (i in 1:nb) {
if (runif(1) < (n1/(n1 + n2))) {
n1 <- n1 + 1
} else {
n2 <- n2 + 1
}
nv1 <- c(nv1, n1)
nv2 <- c(nv2, n2)
}
ratio = nv1/(nv1 + nv2)
}
On va ensuite creer une fonction trajectoire qui appel n fois la fonction pop_dynamique. Puis grace à plop on affiche toutes ces courbes dans un même graphique.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.0.2
trajectoire <- function(n = 10, n1 = 1, n2 = 1, nbf = 1000) {
ylim1 <- c(0, 1)
par(new = F)
for (i in 1:n) {
trajectoires = pop_dynamique(n1, n2, nbf)
plot(trajectoires, type = "l", col = i, ylim = ylim1)
line(trajectoires)
par(new = T)
}
par(new = F)
}
trajectoire(10)
On arrive a mettre en evidence un même type de courbe dans deux ensembles de valeurs.Les courbes se situent soit plus proche de 0 soit plus proche de 1 dans une certaine limite. Il faut aussi rapeller que l'on a une situation ou les habitants sont équi-répartis.
limite <- function(nbtour = 10, n1 = 1, n2 = 1, nbf = 1000) {
count = c()
for (i in 1:nbtour) {
p = pop_dynamique(n1, n2, nbf)
count <- c(count, p[nbf])
}
ratio = count
}
hist(limite(2000, 1, 1, 1000), breaks = 100)
Aprés avoir tracé l'histogramme de la limite, on constate qu'il s'agit d'une loi uniforme. En effet, d'aprés l'histogramme, les fréquences d'apparition de chaque valeur de la limite sont similaires.
hist(limite(1000, 10, 10, 1000), breaks = 100)
On se rend compte que la loi proche de l'uniforme se brise sur les extremes. L'on se rapproche d'une loi normal centré sur 0.5.
hist(limite(1000, 100, 100, 1000), breaks = 100)
En augmentant encore la population initial pour les deux villes, la loi normale augmente en amplitude en reduisant sa periode. Il semble qu'en augmentant les populations initiale tout en gardant une proportion 50-50, il y ai de plus en plus de chance que les deux villes ai la meme population final.
hist(limite(1000, 1, 10, 1000), breaks = 100)
Dans le cas d'un desequilibre dans l'etat initial. On observe une grande augmentation de la population finale dans la ville ayant la plus grande population initial.
hist(limite(1000, 1, 100, 1000), breaks = 100)
Augmenter encore cet ecart confirme d'autant plus cette tendance.
Dans l'ensemble, les résultats obtenus lors de ce tp sont conformes à notre intuitions initiale. Nous pensions que la valeur de \( P(t) \) allait ateindre 1 ou 0 ou ½ mais il semblerai que les ecarts soient plus subtils. En effet, les valeurs obtenues sont plus proches de 0.7 ou de 0.2. Nous n'avions pas pensé que de changer les valeurs initiales du nombre d'habitant ait un aussi gros impact sur les lois. A notre avis, il n'y manque des variables aléatoires. On peut en effet penser qu'il n'y as pas que la taille de la ville qui influence le choix d'émigration. On peut ajouter la situation géographique, le situation economique et plein d'autre facteurs. Dans l'ensembles ces nouveaux critéres ne vont qu'affiner le resultat deja obtenu.