Introduction

Depuis plusieurs années, la ville de Bordeaux et la Communauté Urbaine de Bordeaux (CUB) mettent à disposition des données ouvertes concernant ses équipements, ses transports, ses habitants. A partir de ces données, disponibles sur http://opendata.bordeaux.fr/ et https://data.bordeaux-metropole.fr/, nous avons cherché à faire une analyse statistique afin d’en tirer des informations sur la ville et la métropole de Bordeaux. Dans un premier temps, nous proposons une description de l’évolution des naissances et des décès dans la ville de Bordeaux, au cours du siècle dernier. Nous avons ensuite choisi de regarder les équipements publics de la CUB, et de les mettre en relation avec les revenus par habitant et le nombre d’habitants.

I- Analyse démographique de Bordeaux

1) Description et traitement des données

L’objectif de cette partie est de préciser les caractéristiques des données de la population de la ville de Bordeaux dont nous disposons et à partir desquelles nous allons pouvoir extraire les informations qui vont faire l’objet de notre première approche d’analyse sur la ville.

  1. Les données de naissances : (42513 lignes) (4 colonnes : Type,Année,Date,Nombre)
  2. Les données de décès : (35209 lignes) (4 colonnes : Type,Année,Date,Nombre)
  3. Les données de Mariages : (84 lignes) (2 colonnes : Année,Nombre de mariages)
  4. Les données de population totale : (15 lignes) (2 colonnes : Année,PopulationTotale)

Ces données brutes représentent l’effectif des naissances (ou décès) de chaque jour à partir de l’année 1900 jusqu’à 2016, le nombre de mariages par année depuis 1933 et l’effectif total de la ville de Bordeaux de 1968 à 2015 avec quelques valeurs manquantes. Pour pouvoir afficher le nombre total d’une manière claire on a transformé nos données en effectifs annuels pour voir l’évolution de ces indicateurs pendant la période mentionnée avant.

2) Analyse

“Attractive et ouverte, portée par une croissance économique et démographique soutenue, Bordeaux Métropole s’est fixé comme ambition de devenir une métropole de référence à l’échelle européenne à l’horizon 2030.” (http://www.bordeaux-metropole.fr)

Maintenant que nous avons les informations extraites à partir des données ouvertes, nous nous sommes posé la question suivante : A quel point peut on expliquer l’attractivité de la ville de Bordeaux à partir de ces données démographiques?

Pour répondre à cette question nous allons déduire quelques indicateurs pertinents qui vont nous permettre de relier attractivité et données démographiques.

a) Population Bordeaux

Avant d’entammer l’analyse de l’attractivité on doit visualiser la courbe d’évolution de la population de Bordeaux depuis l’année 1968. Cela va nous aider à voir les points de changement démographique qu’a connu la ville il y a à peu près 40 ans.

dygraph(TS_Sum_Pop,main = "Population totale de Bordeaux")%>%
  dySeries("V1", label = "PopTotale")

La courbe convexe ci-dessus explique que le nombre de population de Bordeaux a connu une chute après les années 60 et ensuite progresser avec un rythme moyen jusqu’à l’année 1999 où la courbe connait une hausse considérable et ne cesse d’augmenter jusqu’à nos jours.

Cela dit le nombre d’habitants lui seul ne peut donner une idée sur l’attractivité de la ville. Pour pouvoir completer l’information nous allons chercher à calculer des indicateurs qui expliqueront d’avantage ce phénomène.

b) Naissance Décès Mariages

Ici nous allons juste visualiser l’évolution Naissance, Décès et Mariages par année de la ville de Bordeaux ainsi projeter quelques faits marquants de l’histoire de l’humanité et celle de la ville de Bordeaux.

BirthDeadWed<-cbind(TS_Sum_ABirth[-nrow(TS_Sum_ABirth)],TS_Sum_ADead[-nrow(TS_Sum_ADead)],TS_Sum_AMariages[-nrow(TS_Sum_AMariages)])

#dygraph(TS_Sum_ABirth)
#dygraph(TS_Sum_ADead)


dygraph(BirthDeadWed,main = "Naissance et Décès à Bordeaux par année",ylab = "Effectif") %>%
  dySeries("..1", label = "Naissance") %>%
  dySeries("..2", label = "Deces") %>%
  dySeries("..3", label = "Mariage") %>%
  dyShading(from=as.POSIXct("1939-09-03",format="%Y-%m-%d"),to=as.POSIXct("1945-05-08",format="%Y-%m-%d"),color="pink")%>%
  dyShading(from=as.POSIXct("1914-08-03",format="%Y-%m-%d"),to=as.POSIXct("1918-11-11",format="%Y-%m-%d"),color="pink")%>%
  dyEvent(as.POSIXct("1914-08-03",format="%Y-%m-%d"),label="1ère Guerre Mondiale")%>%
  dyEvent(as.POSIXct("1918-11-11",format="%Y-%m-%d"),label="Armistice 1ère GM")%>%
  dyEvent(as.POSIXct("1939-09-03",format="%Y-%m-%d"),label="2nde Guerre Mondiale")%>%
  dyEvent(as.POSIXct("1945-05-08",format="%Y-%m-%d"),label="Armistice 2nde GM")%>%
  dyEvent(as.POSIXct("1929-10-24",format="%Y-%m-%d"),label="Crack boursier à NY")%>%
  dyEvent(as.POSIXct("1973-12-23",format="%Y-%m-%d"),label="1ère Crise pétrolière",labelLoc="bottom")%>%
  dyEvent(as.POSIXct("1979-03-27",format="%Y-%m-%d"),label="2nde Crise pétrolière",labelLoc="bottom")%>%
  
  dyEvent(as.POSIXct("1947-10-19",format="%Y-%m-%d"),label="Maire : Jacques Chaban-Delmas ",labelLoc="bottom")%>%
  dyEvent(as.POSIXct("1995-06-19",format="%Y-%m-%d"),label="Maire : Alain Juppé",labelLoc="bottom")%>%
  dyRangeSelector() 

Comme nous pouvons voir dans le graphe, la courbe connait des hauts et des bas voir même des pics dans certaines périodes. Mais malgré cela ces données brutes ne peuvent pas être assez explicatives.

c) Solde naturel

En démographie, solde naturel ou accroissement naturel de populations est la différence entre le nombre de naissances et le nombre de décès sur un territoire au cours d’une période.

#Solde naturel
Increase=TS_Sum_ABirth[-nrow(TS_Sum_ABirth)]-TS_Sum_ADead[-nrow(TS_Sum_ADead)]

dygraph(Increase,main = "Solde naturel de la population de Bordeaux",ylab = "Effectif") %>%
  dySeries(label="Accroissement") %>%
  dyAxis("x",drawGrid=T)%>%
  dyHighlight(highlightCircleSize = 5, 
              highlightSeriesBackgroundAlpha = 10,
              hideOnMouseOut = FALSE) %>%
  dyShading(from=as.POSIXct("1939-09-03",format="%Y-%m-%d"),to=as.POSIXct("1945-05-08",format="%Y-%m-%d"),color="pink")%>%
  dyEvent(as.POSIXct("1939-09-03",format="%Y-%m-%d"),label="2nde Guerre Mondiale")%>%
  dyEvent(as.POSIXct("1945-05-08",format="%Y-%m-%d"),label="Armistice 2nde GM")%>%
  dyEvent(as.POSIXct("1929-10-24",format="%Y-%m-%d"),label="Crack boursier à NY")%>%
  dyEvent(as.POSIXct("1973-12-23",format="%Y-%m-%d"),label="1ère Crise pétrolière",labelLoc="bottom")%>%
  dyEvent(as.POSIXct("1979-03-27",format="%Y-%m-%d"),label="2nde Crise pétrolière",labelLoc="bottom")%>%
  dyEvent(as.POSIXct("1947-10-19",format="%Y-%m-%d"),label="Maire : Jacques Chaban-Delmas ",labelLoc="bottom")%>%
  dyEvent(as.POSIXct("1995-06-19",format="%Y-%m-%d"),label="Maire : Alain Juppé",labelLoc="bottom")%>%
  dyOptions(stackedGraph=T)%>%
  dyRangeSelector() 

On pourrait visualiser une augmentation très considérable après L’année 1995 ce qui coincide avec l’élection de Mr. Alain Juppé maire de la ville de Bordeaux.

d) Solde migratoire

Notre objectif étant de lier démographie et attractivité, il fallait penser non seulement à la variation interne de la ville mais aussi aux flux externes des habitants qui l’alimentent. En effet en considérant la population totale annuelle et le solde naturel, on peut déduire le solde migratoire : la différence entre le nombre de personnes qui sont entrées sur le territoire et le nombre de personnes qui en sont sorties au cours de l’année.

barplot(TS_Solde_mig[-1],main = "Solde migratoire",ylab = "Solde migratoire par nombre d'habitants")

barplot(TS_Solde_mig_prct[-1],main = "Solde migratoire en %", ylab = "Solde migratoire en %")

Contrairement à ce qu’on a du prévoir le solde migratoire a été négatif pour toute les périodes 1968<->1975<->1982<->1990<->2006<->2015 malgré la diminution de l’amplitude de perte. Ce qui veut dire que le nombre d’habitants qui quittent Bordeaux a été toujours plus grand que de celui des habitants venant s’y installer. On remarque aussi qu’après l’année 2006 le solde migratoire augmente en amplitude. Cela peut peut s’interpreter de la manière suivante :

Puisque les données collectées présentent des informations que sur la population de la ville-centre de Bordeaux seulement, on ne peut généraliser le résultat sur toute la métropole. Sachant bien que “en 2013, la Nouvelle-Aquitaine a accueilli 116.000 nouveaux arrivants alors que 86.000 personnes quittait son territoire, soit un solde positif de +30.000 habitants. Dans le même temps la Nouvelle-Aquitaine comptabilisait 360.000 migrations internes d’une ville à l’autre, liées notamment à des déménagements.” (source INSEE)

Ces chiffres permettent de présenter l’attractivité de la région certes, mais l’analyse sur la ville-centre a permis de déduire le rythme de progression des villes voisines à Bordeaux qui devient de plus en plus grand.

II- Peut-on prédire les revenus des bordelais à partir des équipements de la ville ?

Dans cette partie, nous avons travaillé sur les données des équipements de la CUB, disponibles sur le site de la métropole de Bordeaux, et sur les revenus des habitants regroupés par IRIS (Ilots Regroupés pour l’Information Statistique). Le but était de voir s’il existe une relation entre le nombre d’équipements par IRIS et le revenu des habitants. Ce travail vise à étendre celui réalisé l’an dernier par des étudiants du parcours.

1) Description des données

Pour visualiser les données “équipements” et “revenus” par IRIS, nous avons d’abord besoin des données géographiques des IRIS.

a) Données IRIS

Le fichier “contourIris” utilisé ici est un fichier que nous avons récupéré sur “https://krysd.github.io/TP_Rshiny/” (qui est un cours du Master MSS de cette année) et que nous avons modifié pour garder les informations utiles à notre étude. Ce fichier est de type “SpatialPolygonsDataFrame” et fournit des données géographiques et de population sur les 261 IRIS des 28 communes de la CUB.

Grace au package “leaflet” de R, nous pouvons afficher la carte des IRIS de la CUB :

leaflet(contourIris) %>%
  addTiles() %>% 
  addPolygons(
    weight = 2,
    opacity = 1,
    color = "Black",
    dashArray = "3",
    fillOpacity = 0.7,
    highlight = highlightOptions(
      weight = 2,
      color = "white",
      dashArray = "",
      fillOpacity = 0.7,
      bringToFront = TRUE),
    label = labels,
    labelOptions = labelOptions(
      style = list("font-weight" = "normal", padding = "3px 8px"),
      textsize = "15px",
      direction = "auto")
  )

b) Répartition de la population par IRIS

Toujours avec le même fichier, nous affichons la répartition de la population et des ménages dans la métropole de Bordeaux :

load("contourIris.Rdata")

labelsInsee <- sprintf(
  "<strong>%s</strong><br/>%s menages",
  contourIris$NOM_IRIS,contourIris$nb_menage
) %>% lapply(htmltools::HTML)
labels3Insee <- sprintf(
  "<strong>%s</strong><br/>%s habitants",
  contourIris$NOM_IRIS,contourIris$nb_personne_menage
) %>% lapply(htmltools::HTML)
pal <- colorNumeric("YlOrRd",  NULL)
leaflet(contourIris) %>%
     addTiles() %>%
    addPolygons(
    group = "Nbre Menages",
    weight = 2,
    opacity = 1,
    color = "white",
    fillColor = ~pal(nb_menage),
    dashArray = "3",
    fillOpacity = 0.7,
    highlight = highlightOptions(
      weight = 3,
      color = "#665",
      dashArray = "",
      fillOpacity = 0.7,
      bringToFront = TRUE),
    label = labelsInsee,
    labelOptions = labelOptions(
      style = list("font-weight" = "normal", padding = "3px 8px"),
      textsize = "15px",
      direction = "auto")
  )%>%
  addPolygons(
    group = "Nbre Habitants",
    weight = 2,
    opacity = 1,
    color = "Black",
    fillColor = ~pal(nb_personne_menage),
    dashArray = "3",
    fillOpacity = 0.7,
    highlight = highlightOptions(
      weight = 3,
      color = "#665",
      dashArray = "",
      fillOpacity = 0.7,
      bringToFront = TRUE),
    label = labels3Insee,
    labelOptions = labelOptions(
      style = list("font-weight" = "normal", padding = "3px 8px"),
      textsize = "15px",
      direction = "auto")
  )%>%
  hideGroup("Nbre Menages")%>%
  addLegend(pal = pal, values = ~nb_personne_menage, opacity = 1.0, title = NULL,
                  position = "bottomright")%>%
  addLayersControl(position="topright"
                       ,baseGroups = c("Nbre Menages","Nbre Habitants"))

c) Revenus par IRIS

Nous avons ensuite récupéré les données des revenus médians par IRIS sur le site de l’INSEE, pour les combiner avec notre fichier sur les IRIS. A noter que certains revenus sont manquants.

### Combinaison des deux fichiers

load("contourIris.RData")
load("RevenusCUB.RData")

contourIris<-contourIris[order(contourIris$DCOMIRIS,decreasing=F),]
RevenusCUB<-RevenusCUB[order(RevenusCUB$IRIS,decreasing=F),]


W=as.numeric(as.character(contourIris$DCOMIRIS))
Y=as.numeric(RevenusCUB$IRIS)

p=which(is.na(match(W,Y))==TRUE)
X=na.omit(match(W,Y))


mat=as.data.frame(matrix(nrow=29,ncol=27))
colnames(mat)<-colnames(RevenusCUB)

mat2=as.data.frame(matrix(nrow=261,ncol=43))
R=cbind(contourIris@data,mat)
colnames(mat2)=colnames(R)

mat3=as.data.frame(matrix(nrow=261,ncol=27))
colnames(mat3)<-colnames(RevenusCUB)

contourIris2<-contourIris

contourIris2@data<-cbind(contourIris2@data,mat3)

contourIris2@data[-p,17:43]<-as.data.frame(RevenusCUB)


#save(contourIris2,file = "contourIris2.Rdata")
load("contourIris2.Rdata")

labels3Insee <- sprintf(
  "<strong>%s</strong><br/>%s Euros/an",
  contourIris2$NOM_IRIS,contourIris2$DEC_MED14
) %>% lapply(htmltools::HTML)
pal <- colorNumeric("Blues",  NULL)
leaflet(contourIris2) %>%
     addTiles() %>%
  addPolygons(
    group = "Nbre Habitants",
    weight = 2,
    opacity = 1,
    color = "Black",
    fillColor = ~pal(DEC_MED14),
    dashArray = "3",
    fillOpacity = 0.7,
    highlight = highlightOptions(
      weight = 3,
      color = "#665",
      dashArray = "",
      fillOpacity = 0.7,
      bringToFront = TRUE),
    label = labels3Insee,
    labelOptions = labelOptions(
      style = list("font-weight" = "normal", padding = "3px 8px"),
      textsize = "15px",
      direction = "auto")
  )%>%
  
  addLegend(pal = pal, values = ~DEC_MED14, opacity = 1.0, title = NULL,
                  position = "bottomright")

On peut se rendre compte que les revenus les plus élevés se situent au centre ville de Bordeaux, et la banlieue proche autour de Bordeaux semble avoir des revenus plus faibles.

d) Equipements par IRIS

Venons-en aux données “Equipements” de la Communauté Urbaine de Bordeaux. Ce fichier est de type “SpatialPointsDataFrame” et donne des informations sur 4457 équipements de la CUB.

Ces équipements sont divisés en 11 thèmes différents (“Enseignement divers-formation”, “Sante-action sociale”, “Sport - Loisir”, “Culture - Patrimoine”, “Administration”, “Services”, “Securite”, “Espace vert-espace public”, “Deplacements”, “Energie-environnement”, “Cultuel”), avec la répartition suivante :

p1

Nous avons aussi les coordonnées géographiques de chaque équipement, qui vont nous servir à compter le nombre d’équipements par IRIS.

Mais ces coordonnées ne sont pas dans le même système que celles des IRIS. Ils nous faut donc convertir ces coordonnées pour qu’elles soient compatibles avec celles des IRIS. Le package “rgdal” et le code suivant permettent cette transformation.

# #ogrInfo(dsn="./Equipements CUB/TO_EQPUB_P_L93", layer="TO_EQPUB_P")
# 
# EquipCUB<-readOGR(dsn="./Equipements CUB/TO_EQPUB_P_L93", layer="TO_EQPUB_P",verbose = FALSE)
# 
# #EquipCUB@proj4string
# #OGRSpatialRef(dsn="./Equipements CUB/TO_EQPUB_P_L93", layer="TO_EQPUB_P")
# 
# EquipCUB=spTransform (EquipCUB, CRS ("+init=epsg:4326") )
# 
# EquipCUB@data$CODEC=as.numeric(as.character(EquipCUB@data$CODEC))
# EquipCUB@data$CODEC=as.factor(EquipCUB@data$CODEC+33000)
# 
# CPCUB=levels(contourIris@data$DEPCOM)
# 
# 
# EquiCUB.data=data.frame()
# EquiCUB.coords=data.frame()
# for (i in CPCUB){
# EquiCUB.data=rbind(EquiCUB.data,EquipCUB@data[EquipCUB@data$CODEC==i,])
# EquiCUB.coords=rbind(EquiCUB.coords,EquipCUB@coords[EquipCUB@data$CODEC==i,])
# }
# 
# EquipCUB@data=EquiCUB.data

#save(EquipCUB,file = "EquipCUB.Rdata")
#save(EquiCUB.coords,file = "EquiCUB.coords.RData")

Une fois le changement de système de coordonnées effectué, on compte le nombre d’équipements par IRIS (en utilisant la fonction point.in.polygon) puis nous combinons les données des IRIS, des revenus et des équipements en un seul fichier.

On peut alors afficher le nombre d’équipements par IRIS.

load("contourIris5.RData")

labels3Insee <- sprintf(
  "<strong>%s</strong><br/>%s Equipements",
  contourIris5$NOM_IRIS,contourIris5$Equipements
) %>% lapply(htmltools::HTML)
pal <- colorNumeric("Greens",  NULL)
leaflet(contourIris5) %>%
     addTiles() %>%
  addPolygons(
    group = "Equipements",
    weight = 2,
    opacity = 1,
    color = "Black",
    fillColor = ~pal(Equipements),
    dashArray = "3",
    fillOpacity = 0.7,
    highlight = highlightOptions(
      weight = 3,
      color = "#665",
      dashArray = "",
      fillOpacity = 0.7,
      bringToFront = TRUE),
    label = labels3Insee,
    labelOptions = labelOptions(
      style = list("font-weight" = "normal", padding = "3px 8px"),
      textsize = "15px",
      direction = "auto")
  )%>%
  
  addLegend(pal = pal, values = ~Equipements, opacity = 1.0, title = NULL,
                  position = "bottomright")

On rajoute également les informations de densité d’équipements par unité de surface, de nombre d’équipements par habitant, et densité de population, pour chaque IRIS.

2) Analyse et prédiction

A présent nous voulons tester s’il est possible de prédire les revenus médians de chaque IRIS à partir des données sur les équipements. En d’autres termes, on voudrait savoir si les personnes avec un revenu plus élevé ont plus d’équipements à proximité.

a) Prédiction avec les forêts aléatoires

On va construire un modèle de prédiction du revenu médian de chaque IRIS basé sur les forêts aléatoires, en gardant comme variables, le nombre d’équipements par habitant, la densité surfacique d’équipements, la densité de population, et le nom de la commune où se situe l’IRIS.

On utilise une validation croisée 10-folds que l’on répète 30 fois, la prédiction finale correspondant à la moyenne des 30 prédictions.

Pour les paramètres de la fonction randomForest, après plusieurs tests nous avons choisi de garder les paramètres par défaut, excepté pour le nombre de variables prises en compte dans la division d’un noeud “mtry” que l’on prend égal à 4 (le nombre de variables).

data=contourIris10@data
n=nrow(contourIris10@data)
B = 30
errIris=matrix(NA,n,B)
err = rep(NA,B)
pred = matrix(NA,n,ncol=B)

for (b in 1:B){
  n_folds<-10
  folds_i<-sample(rep(1:n_folds,length.out= n))
  for (i in 1:n_folds){
    
    tr = which(folds_i==i)
    datatrain <- data[-tr,]
    datatest<-data[tr,]

    rf = randomForest(DEC_MED14~Equipements.par.habitants+Densite+Densite.de.population+NOM_COM,data=datatrain,mtry=4, na.action = na.omit)
    pred[tr,b] = predict(rf,datatest)
    errIris[tr,b]=(pred[tr,b]-datatest$DEC_MED14)^2
    }
  err[b] = sqrt(mean((pred[,b]-data$DEC_MED14)^2,na.rm = T))
}

pred_mean<- rowMeans(pred)
sqrt(mean(err^2))
## [1] 4701.245
max(sqrt(apply(errIris,1,mean)),na.rm = T)
## [1] 13661.46
min(sqrt(apply(errIris,1,mean)),na.rm = T)
## [1] 372.6524

La racine de l’erreur quadratique moyenne est environ de 4700 (Euros). Sachant que les revenus médians vont de 8000 à 35000 Euros, on peut dire que l’erreur est grande. En regardant les erreurs moyennes par IRIS, elles varient de 500 à 13000 environ.

labels3Insee <- sprintf(
  "<strong>%s</strong><br/>%s Euros/an",
  contourIris8$NOM_IRIS,contourIris8$DEC_MED14
) %>% lapply(htmltools::HTML)
labels3Insee <- sprintf(
  "<strong>%s</strong><br/>%s Euros/an",
  contourIris8$NOM_IRIS,contourIris8$Predictions
) %>% lapply(htmltools::HTML)
#pal <- colorNumeric("Blues",  NULL) 
pal=colorBin("Blues",bins = c(5000,15000,20000,25000,30000,40000),na.color = NA)
leaflet(contourIris8) %>%
     addTiles() %>%
  addPolygons(
    group = "Revenus Médians",
    weight = 2,
    opacity = 1,
    color = "Black",
    fillColor = ~pal(DEC_MED14),
    dashArray = "3",
    fillOpacity = 0.7,
    highlight = highlightOptions(
      weight = 3,
      color = "#665",
      dashArray = "",
      fillOpacity = 0.7,
      bringToFront = TRUE),
    label = labels3Insee,
    labelOptions = labelOptions(
      style = list("font-weight" = "normal", padding = "3px 8px"),
      textsize = "15px",
      direction = "auto")
  )%>%
  addPolygons(
    group = "Prédictions",
    weight = 2,
    opacity = 1,
    color = "Black",
    fillColor = ~pal(Predictions),
    dashArray = "3",
    fillOpacity = 0.7,
    highlight = highlightOptions(
      weight = 3,
      color = "#665",
      dashArray = "",
      fillOpacity = 0.7,
      bringToFront = TRUE),
    label = labels3Insee,
    labelOptions = labelOptions(
      style = list("font-weight" = "normal", padding = "3px 8px"),
      textsize = "15px",
      direction = "auto")
  )%>%
  hideGroup("Prédictions")%>%
  addLegend(pal = pal, values = ~DEC_MED14, opacity = 1.0, title = NULL,
                  position = "bottomright")%>%
  addLayersControl(position="topright",baseGroups = c("Revenus Médians","Prédictions")
                       )

Si l’on regarde la carte des revenus par IRIS et les prédictions, on se rend compte que le modèle de prédiction n’est pas assez performant. La prévision donne une fourchette de revenus plus étroite que la réalité, c’est pourquoi la carte des prédictions est plus homogène.

Il semble donc compliqué de mettre en relation revenus et équipements.

b) Matrice de Corrélation

Pour compléter l’étude précédente, nous avons tracé une matrice de corrélation entre les variables numériques utilisées pour la prédiction.

linesNA=which(is.na(contourIris10@data$DEC_MED14))
Iris_sansNA=contourIris10@data[-linesNA,]


Iris_fin=Iris_sansNA[,c("DEC_MED14","Equipements.par.habitants","Densite","Densite.de.population")]
colnames(Iris_fin)=c("Revenus","Equipements.par.habitants","Densite.Equipements","Densite.de.population")

C=corrplot(cor(Iris_fin))

La matrice confirme que les revenus médians ne sont pas corrélés aux autres variables. Les équipements n’aident donc pas à connaître le niveau de vie des habitants dans chaque IRIS.

En revanche, on note une corrélation assez forte entre les densités surfaciques d’équipements et de population. Cela peut logiquement s’expliquer par le fait que ces deux variables sont liées par la surface de l’IRIS. Mais peut-être peut-on alors prédire la densité de population et donc le nombre d’habitants de chaque IRIS à partir du nombre d’équipements.

Conclusion

Finalement, les données démographiques de la commune de Bordeaux nous ont permis de déduire l’évolution de la population de Bordeaux ainsi que ses flux internes et enfin une interprétation sur les migrations que connait la ville.

Enfin, les données sur les équipements de la CUB, ainsi que les revenus médians, et la population, nous ont permis de représenter graphiquement la répartition de ces variables dans les IRIS de la métropole de Bordeaux. En revanche, nous n’avons pas pu établir de lien entre le revenu des habitants et le nombre d’équipements dans chaque quartier. On peut même dire que selon notre étude, ces deux variables ne sont pas corrélées.