Des verbalisations très inégalement distribuées

Cartographier la prévalence de la verbalisation
La Police des sorties
Auteur·rice·s

Théo Boulakia

Nicolas Mariot

Date de publication

25 juin 2023

Packages nécessaires

library(here)
library(readxl)
library(tidyverse)
library(sf)
library(janitor)
library(tmap)
library(huxtable)

D’où proviennent les données ?

Pour que ces chiffres soient rendus publics, il a fallu l’opiniâtreté d’un journaliste indépendant, Alexandre Léchenet. Celui-ci a saisi la Commission d’Accès aux Documents administratifs, afin de forcer le ministère de l’Intérieur à les dévoiler. Il le raconte dans ce billet de blog.

Les télécharger

verbalisations_departement_path = here("data", "verbalisations_departement.xlsx")
download.file(url = "http://blog.alphoenix.net/wp-content/uploads/2021/07/RES_DIF_COVID19_CONFINEMENT_MARS-MAI2020_parDep_20210506.xlsx",
              destfile = verbalisations_departement_path)
verbalisations_departement = read_excel(verbalisations_departement_path, skip = 2) |> 
  rename(code_departement = "Département d'infraction",
         verbalisations = "Nombre de dossiers d'infraction")

Calculer le nombre d’adultes par département

Les chiffres bruts des verbalisations ne suffisent pas, il faut les rapporter à la population de chaque département. Et plus précisément, à la population adulte. Pour deux raisons :

  • Les forces de l’ordre n’ont sans doute pas verbalisé beaucoup d’enfants.
  • Même si elles l’ont fait, ce ne sont pas les enfants qui ont payé les amendes, mais bien leurs parents.

L’INSEE met à disposition des estimations de population par département, sexe et âge de 1975 à l’année courante. Ces données sont téléchargeables sur cette page

population_departement_path = here("data", "population_departement.xls")
download.file("https://www.insee.fr/fr/statistiques/fichier/1893198/estim-pop-dep-sexe-aq-1975-2023.xls",
              population_departement_path)
population_departement = read_excel(population_departement_path,
                                    sheet = "2020",
                                    range = "A5:W109") |>
  rename(code_departement = "...1",
         nom_departement = "...2",
         population_totale = Total) |> 
  rowwise() |> 
  mutate(population_plus_de_15_ans = sum(c_across("15 à 19 ans":"95 ans et plus"))) |>
  ungroup() |> 
  select(code_departement, nom_departement, population_plus_de_15_ans, population_totale) |> 
  filter(!str_detect(code_departement, "France"),
         !str_detect(code_departement, "DOM"))

Rapporter les verbalisations au nombre d’adultes

departements = population_departement |>
  left_join(verbalisations_departement, by = "code_departement") |> 
  mutate(verbalisations_pmla = verbalisations / population_plus_de_15_ans * 1000)
departements |> 
  select(nom_departement, verbalisations_pmla) |> 
  mutate(verbalisations_pmla = round(verbalisations_pmla, 1)) |> 
  as_huxtable() |>
  huxtable::theme_blue()
nom_departement verbalisations_pmla
Ain 15.2
Aisne 26.7
Allier 13.4
Alpes-de-Haute-Provence 16.8
Hautes-Alpes 16.6
Alpes-Maritimes 43.7
Ardèche 14.3
Ardennes 18.1
Ariège 18.9
Aube 20.4
Aude 16.6
Aveyron 13.1
Bouches-du-Rhône 26.7
Calvados 18.7
Cantal 11.8
Charente 10.8
Charente-Maritime 19.4
Cher 17.6
Corrèze 12.6
Corse-du-Sud 20.8
Haute-Corse 18.5
Côte-d'Or 16.1
Côtes-d'Armor 13.5
Creuse 14.1
Dordogne 14  
Doubs 22.4
Drôme 19.2
Eure 17.7
Eure-et-Loir 17.8
Finistère 14.9
Gard 18.9
Haute-Garonne 22.9
Gers 12.2
Gironde 19.7
Hérault 28  
Ille-et-Vilaine 13.2
Indre 16.7
Indre-et-Loire 11.4
Isère 20  
Jura 13.6
Landes 15.5
Loir-et-Cher 11.7
Loire 20.9
Haute-Loire 13.7
Loire-Atlantique 17.3
Loiret 17.7
Lot 13.8
Lot-et-Garonne 19.5
Lozère 9.3
Maine-et-Loire 10.5
Manche 12.7
Marne 18.9
Haute-Marne 17.7
Mayenne 10.9
Meurthe-et-Moselle 22  
Meuse 19.4
Morbihan 11.3
Moselle 24.5
Nièvre 10.6
Nord 27.9
Oise 24.4
Orne 12.8
Pas-de-Calais 21.4
Puy-de-Dôme 13.3
Pyrénées-Atlantiques 17.9
Hautes-Pyrénées 14  
Pyrénées-Orientales 29.2
Bas-Rhin 18.4
Haut-Rhin 27.8
Rhône 21.2
Haute-Saône 12.2
Saône-et-Loire 15.7
Sarthe 13.9
Savoie 18.9
Haute-Savoie 25.1
Paris 37.7
Seine-Maritime 17  
Seine-et-Marne 26.6
Yvelines 21.6
Deux-Sèvres 10.7
Somme 17.8
Tarn 10.6
Tarn-et-Garonne 17.5
Var 26.5
Vaucluse 22.7
Vendée 10.8
Vienne 13.9
Haute-Vienne 14.1
Vosges 16.7
Yonne 16.8
Territoire de Belfort 20.4
Essonne 28  
Hauts-de-Seine 20  
Seine-Saint-Denis 41.2
Val-de-Marne 24.7
Val-d'Oise 33.9
Guadeloupe 29.5
Martinique 15.4
Guyane 38.3
La Réunion 17.9
Mayotte 54.6

Pourquoi les habitants des Pyrénées-Orientales (29 verbalisations pour 1000 adultes) ont-ils été deux fois plus verbalisés que ceux du Finistère (15 verbalisations pour 1000 adultes) ? Pourquoi les habitants des Alpes-Maritimes (44 verbalisations pour 1000 adultes) ont-ils été 4 fois plus verbalisés que ceux du Morbihan, de la Mayenne, de la Vendée ou de la Charente (11 verbalisations pour 1000 adultes) ?

Visualiser le palmarès

departements |> 
  slice_max(order_by = verbalisations_pmla, n = 10) |> 
  mutate(nom_departement = fct_reorder(nom_departement, verbalisations_pmla)) |>
  ggplot(aes(x = verbalisations_pmla, y = nom_departement)) +
  geom_bar(stat = "identity", fill = "#E12634") +
  labs(x = "Verbalisations pour 1000 adultes",
       y = "",
       title = "Palmarès des départements les plus verbalisés") +
  theme_minimal()

Récupérer la couche cartographique

Astuce

Pour récupérer les couches cartographiques correspondant à des communes, des départements (y compris d’Outre-Mer) et des régions françaises, votre ami est le package CARTElette. Il peut être installé depuis Github.

remotes::install_github("antuki/CARTElette/CARTElette@RPackage")
CARTElette::charger_carte(destfile = here("data"),
                          COG = 2020,
                          nivsupra = "DEP")
departements_sf = st_read(here("data", "DEP_2020_CARTElette.shp"), quiet = T) |> 
  rename(code_departement = "DEP",
         nom_departement = "nom")

outre_mer = c("Guyane", "Martinique", "Guadeloupe", "La Réunion", "Mayotte")
outre_mer_sf = departements_sf |> filter(nom_departement %in% outre_mer)

Discrétiser

La carte sera très différente selon la discrétisation choisie. On peut opter pour une discrétisation par quartiles (quatre classes d’effectifs égaux), pour une discrétisation très simple qui sépare les départements en deux groupes (plus ou moins de 22 verbalisations pour 1000 habitants adultes)

breaks_quartile = mapsf::mf_get_breaks(departements$verbalisations_pmla,
                                                  nbreaks =  4,
                                                  breaks = "quantile")

breaks22 = c(9, 22, 55)

Cartographier

departements_sf |> 
  select(-nom_departement) |> 
  left_join(departements, by = "code_departement") |> 
  tm_shape() +
  tm_polygons("verbalisations_pmla",
              palette = rcartocolor::carto_pal(n = 4, name = "Sunset"),
              breaks = breaks22,
              title = "Verbalisations\npour\n1000 adultes :",
              legend.format = list(digits = 0, text.separator = "-")) +
  tm_shape(outre_mer_sf) +
  tm_text(text = "nom_departement", size = .6) +
  tm_compass(type = "8star",
             position = c("RIGHT", "TOP"),
             size = 4) +
  tm_credits(text = "Données :\nANTAI",
             position = c("right", "bottom")) +
  tm_layout(main.title = "L'inégale distribution des amendes",
            main.title.position = "center",
            main.title.fontface = "bold",
            legend.position = c("LEFT", "BOTTOM"),
            legend.title.size = .8,
            fontfamily = "Helvetica",
            frame.lwd = 0)

Citation

BibTeX
@online{boulakia2023,
  author = {Boulakia, Théo and Mariot, Nicolas},
  title = {Des verbalisations très inégalement distribuées},
  date = {2023-06-25},
  url = {https://l-attestation.github.io/excercices/verbalisations-departement/},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
Boulakia, Théo, and Nicolas Mariot. 2023. “Des verbalisations très inégalement distribuées.” June 25, 2023. https://l-attestation.github.io/excercices/verbalisations-departement/.