Au vu des documents qui nous étaient fournis, nous avons choisis de poser la problématique suivante : Comment les données socio-économiques de la population du Pas-de-Calais sont-elles corrélée à l’indice de position sociale (IPS) ?

Installation des packages nécessaires

library(tidyverse)
## Warning: le package 'tidyverse' a été compilé avec la version R 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.0     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.1     ✔ tibble    3.1.8
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(stringr)
library(gapminder)
## Warning: le package 'gapminder' a été compilé avec la version R 4.2.3
library(dplyr)
library(readxl)
library(questionr)
library(ggplot2)

Nettoyage des bases de données

On a d’abord importé les données des 2 excels puis on a trié la base de données sur les collèges :

On a ensuite trié la base de données de l’INSEE avec les activités des habitants :

insee_data <- read_delim("base-ic-activite-residents-2019.csv", 
                         delim = ";", col_names = T)
## Rows: 49282 Columns: 120
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr   (4): IRIS, COM, TYP_IRIS, LAB_IRIS
## dbl (116): MODIF_IRIS, P19_POP1564, P19_POP1524, P19_POP2554, P19_POP5564, P...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
colleges_data <- read_delim("fr-en-ips_colleges.csv", 
                            delim = ";", col_names = T)
## Rows: 41701 Columns: 11
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (9): rentree_scolaire, academie, code_du_departement, departement, uai, ...
## dbl (2): ips, ecart_type_de_l_ips
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
colleges_data2 <- colleges_data %>% filter(rentree_scolaire == "2018-2019" & code_du_departement == "062")

colleges_data2 <- colleges_data2  %>% select(-uai, -ecart_type_de_l_ips)

colleges_data2 <- colleges_data2 %>% rename(COM = code_insee_de_la_commune)

insee_data2 <- insee_data %>% select(COM, C19_ACT1564_CS3, C19_ACT1564_CS4, C19_ACT1564_CS6, P19_CHOM1564)

insee_data2 <- insee_data2 %>% filter(stringr::str_starts(COM, '62'))

insee_data2 <- insee_data2 %>% group_by(COM) %>% 
  summarize(C19_ACT1564_CS3 = mean(C19_ACT1564_CS3), 
            C19_ACT1564_CS4 = mean(C19_ACT1564_CS4), 
            C19_ACT1564_CS6 = mean(C19_ACT1564_CS6), 
            P19_CHOM1564 = mean(P19_CHOM1564))

colnames(insee_data2)[2] ="cadres_sup"
colnames(insee_data2)[3] ="pro_inter"
colnames(insee_data2)[4] ="ouvriers"
colnames(insee_data2)[5] ="chomeurs"

Jointure

On fait une jointure pour fusionner nos deux jeux de données en utilisant comme clé de jointure COM.

On a utilisé left join pour fusionner les données de “colleges_data2” avec celles de “insee_data2” en conservant toutes les observations de “colleges_data2” et en y ajoutant les variables de “insee_data2” correspondantes pour les observations qui ont la même valeur dans la colonne “COM”.

Puis on a trié les communes par ordre croissant en fonction de leur IPS

fusion_colleges_insee <- left_join(colleges_data2, insee_data2, by = 'COM')

fusion_colleges_insee <- fusion_colleges_insee %>% arrange(desc(ips))

FIGURE 1

On a d’abord créé un tableau de fréquence à partir de la variable “secteur” qui nous donne le type de collège : privé sous contrat ou public. Puis nous l’avons affiché sous forme d’un diagramme en barres

Observation : Dans notre département et pendant l’année 2028-2019 : il y avait une part beaucoup plus importante de collèges publics que de collèges privés sous contrat. Cela peut nous indiquer que la majorité des élèves dans ce département sont scolarisés dans les établissements publics, ce qui pourrait révéler un niveau de vie généralement plus faible.

freq_table <- table(fusion_colleges_insee$secteur)
barplot(freq_table, col=c("green", "blue"))

FIGURE 2

On a créé un diagramme en barres pour représenter la distribution des IPS des collèges dans le département 62.

Observation : On observe que les IPS les plus représentés se situent entre 80 et 95, ce qui est relativement faible puisque la moyenne nationale en 2018-2019 est de 102,68.Cela suggère que la grande majorité des collèges du Pas-de-Calais avait un niveau de performance qui était inférieur à la moyenne nationale.

ggplot(colleges_data2) +
  aes(x = ips) +
  geom_histogram(bins = 30L, fill = "pink")

FIGURE 3

On a crée un diagramme en barres avec les données sur les villes avec l’IPS le plus élevé et celle avec l’IPS le plus faible.

D’abord avec les fonctions select et filter on a selectionné seulement les variables qui nous interessent.

Puis on a converti les données en format “long” en utilisant pivot_longer pour les représenter plus facilement sous forme de graphique. Ainsi, chaque ville est représentée sur plusieurs lignes et chaque ligne a une seule variable associée.

Observation : on voit que la ville d’ARRAS (avec l’IPS le plus élevé) a un nombre de cadres supérieurs et de professions intermédiaires beaucoup plus élevé,tandis que les deux autres catégories sont à peu près équivalentes entre les deux villes. Cela nous suggère bien qu’il y a un lien entre l’IPS du collège d’une commune et le niveau de vie des habitants de cette commune.

Fig3 <- fusion_colleges_insee %>% filter(ips == max(ips)|ips == min(ips)) %>% 
  select(nom_de_la_commune, cadres_sup, pro_inter, ouvriers, chomeurs)

Fig3_bis <- pivot_longer(Fig3, cols = -nom_de_la_commune, names_to = "categorie", values_to = "nombre")

ggplot(Fig3_bis, aes(x = categorie, y = nombre, fill = nom_de_la_commune)) +
  geom_bar(stat = "identity", position = "dodge") + 
  scale_fill_manual(values = c("orange", "yellow"))

FIGURE 4

On cherche à filtrer les données pour sélectionner toutes les communes avec des collèges dont l’IPS est supérieur à 105 et ceux dont l’IPS est inférieur à 84.

On a crée un tableau pour afficher ces deux nombres en comptant le nombre de lignes à chaque fois.

Observation : On voit qu’il y a seulement 26 communes dans lesquelles le collège a un IPS supérieur à 105, face à 47 dont l’IPS est inférieur à 84. Or, lorsqu’un IPS est inférieur à 84, cela signifie que c’est des réseaux d’éducation prioritaire et donc qu’il y a un niveau socio-économique relativement faible. Cela fait écho à notre figure 1 qui nous indique qu’il y a une part importante de collèges publics dans le Pas-de-Calais.

ips_sup <- fusion_colleges_insee %>% filter(ips >= 105) %>%
  select(ips, nom_de_la_commune)
nb_ips_sup <- nrow(ips_sup)
ips_inf <- fusion_colleges_insee %>% filter(ips <= 84) %>%
  select(ips, nom_de_la_commune)
nb_ips_inf <- nrow(ips_inf)

table_ips <- data.frame(Categorie = c("Nombre de collèges dont IPS supérieur à 105", "Nombre de collèges dont IPS inférieur à 84"), Nombre = c(nb_ips_sup, nb_ips_inf))
table_ips
##                                     Categorie Nombre
## 1 Nombre de collèges dont IPS supérieur à 105     26
## 2  Nombre de collèges dont IPS inférieur à 84     47

FIGURE 5

On a crée un nuage de points pour voir la relation entre l’IPS du collège de la ville (sur l’axe vertical) et le nombre de cadres supérieurs (sur l’axe horizontal)

Observation : On voit que la relation est positive, que les données sont plutôt dispersées avec quelques valeurs extrêmes. On peut donc dire que plus le nombre de cadres supérieurs dans une commune est élevé, plus l’IPS du collège de cette commune est éléve et inversement. Cela fait écho et confirme notre résultat de la figure 3

ggplot(fusion_colleges_insee) +
  aes(x = cadres_sup, y = ips) +
  geom_point(shape = "circle", size = 1.5)

FIGURE 6

Nous avons calculé le nombre de collèges par tranche d’IPS sous forme de diagramme circulaire. Il nous permet de visualiser rapidement que ce sont les catégories 60-89 et 90-119 qui sont les plus représentées. Cela nous confirme que le niveau socio-économique du département est relativement faible mais que la situation n’est pas alarmante non plus car la catégorie 38-59 n’est pas représenté. Cela fait écho à notre figure 2.

total_tranche_1 <- sum(fusion_colleges_insee$ips >= 38 & fusion_colleges_insee$ips < 59)
total_tranche_2 <- sum(fusion_colleges_insee$ips >= 60 & fusion_colleges_insee$ips < 89)
total_tranche_3 <- sum(fusion_colleges_insee$ips >= 90 & fusion_colleges_insee$ips < 119)
total_tranche_4 <- sum(fusion_colleges_insee$ips >= 120 & fusion_colleges_insee$ips < 149)
total_tranche_5 <- sum(fusion_colleges_insee$ips >= 150 & fusion_colleges_insee$ips < 179)
donnees_tranches <- data.frame(
  categorie = c("38 à 59", "60 à 89", "90 à 119", "120 à 149", "150 à 179"),
  valeur = c(total_tranche_1, total_tranche_2, total_tranche_3, total_tranche_4, total_tranche_5))

ggplot(donnees_tranches, aes(x = "", y = valeur, fill = categorie))+
  geom_bar(stat = "identity", width = 1)+
  coord_polar("y", start=0)+
  labs(fill = "Répartition des IPS dans le Pas de Calais")+
  theme_void()

Conclusion

Ainsi, à l’aide de nos tableaux et de nos diagrammes, on remarque que les données sur les catégories socio-professionnelles d’une commune et l’IPS du collège de cette commune sont fortement liées. En effet, on a remarqué que quand l’IPS du collège est élevé, les CSP les plus représentés sont les cadres supérieurs et les professions intermédiaires. De manière générale, ce travail nous permis d’observer que le niveau de vie dans le département Pas-de-Calais n’est pas très élevé, sans être catastrophique.