Les dépenses de carburant pèsent davantage sur le budget des ménages ruraux - IP2125

Données - INSEE

Figure 1 : caractéristiques des ménages selon leur exposition aux prix des carburants

Code
fig1 |>
  filter(section == "Indicateur clé", caracteristique != "Nombre de ménages") |>
  pivot_longer(c(ensemble, exposes), names_to = "groupe", values_to = "valeur") |>
  mutate(groupe = recode(groupe, ensemble = "Ensemble des ménages véhiculés",
                          exposes = "Ménages particulièrement exposés"),
         caracteristique = fct_reorder(caracteristique, valeur)) |>
  ggplot(aes(x = caracteristique, y = valeur, fill = groupe)) +
  geom_col(position = position_dodge(width = 0.75), width = 0.7) +
  coord_flip() +
  facet_wrap(~ caracteristique, scales = "free", ncol = 2) +
  scale_fill_manual(values = c("Ensemble des ménages véhiculés" = "#8FB0DE",
                                "Ménages particulièrement exposés" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = NULL,
       title = "Caractéristiques des ménages selon leur exposition aux prix des carburants") +
  theme(legend.position = "bottom",
        strip.text = element_text(size = 9),
        axis.text.y = element_blank(),
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_blank())

Répartition géographique et par situation d’activité

Code
fig1 |>
  filter(section != "Indicateur clé") |>
  pivot_longer(c(ensemble, exposes), names_to = "groupe", values_to = "valeur") |>
  mutate(groupe = recode(groupe, ensemble = "Ensemble des ménages véhiculés",
                          exposes = "Ménages particulièrement exposés")) |>
  ggplot(aes(x = caracteristique, y = valeur, fill = groupe)) +
  geom_col(position = position_dodge(width = 0.75), width = 0.7) +
  coord_flip() +
  facet_wrap(~ section, scales = "free_y", ncol = 1) +
  scale_fill_manual(values = c("Ensemble des ménages véhiculés" = "#8FB0DE",
                                "Ménages particulièrement exposés" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = NULL,
       title = "Répartition des ménages selon l'intercommunalité de résidence et la situation d'activité",
       subtitle = "en %") +
  theme(legend.position = "bottom",
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_blank())

Figure 2 : ménages particulièrement exposés aux prix des carburants par intercommunalité

Code
epci |>
  ggplot(aes(x = part_exposes)) +
  geom_histogram(binwidth = 1, fill = "#1B3F8B", color = "white") +
  geom_vline(xintercept = tc1_summary$part_exposes[tc1_summary$intercommunalite == "Ensemble"],
             linetype = "dashed", color = "#E8737A", linewidth = 1) +
  theme_minimal(base_size = 13) +
  labs(x = "Part de ménages particulièrement exposés (%)", y = "Nombre d'intercommunalités",
       title = "Distribution de la part de ménages exposés par intercommunalité, en 2021",
       subtitle = "1 250 EPCI ; ligne pointillée = moyenne nationale (10,6 %)") +
  theme(panel.grid.minor = element_blank())

Intercommunalités les plus et les moins exposées

Code
bind_rows(
  epci |> slice_max(part_exposes, n = 15) |> mutate(groupe = "Les plus exposées"),
  epci |> slice_min(part_exposes, n = 15) |> mutate(groupe = "Les moins exposées")
) |>
  mutate(nom_epci = str_trunc(nom_epci, 40),
         nom_epci = fct_reorder(nom_epci, part_exposes)) |>
  ggplot(aes(x = nom_epci, y = part_exposes, fill = groupe)) +
  geom_col() +
  coord_flip() +
  facet_wrap(~ groupe, scales = "free", ncol = 2) +
  scale_fill_manual(values = c("Les plus exposées" = "#E8737A", "Les moins exposées" = "#1B3F8B"), guide = "none") +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = NULL,
       title = "Les 15 intercommunalités les plus et les moins exposées, en 2021",
       subtitle = "part de ménages particulièrement exposés aux prix des carburants (%)") +
  theme(panel.grid.minor = element_blank(),
        panel.grid.major.y = element_blank())

Figure 3 : typologie des intercommunalités selon leur exposition

Code
epci |>
  mutate(type_exposition = factor(type_exposition, levels = type_exposition_levels)) |>
  ggplot(aes(x = type_exposition, y = part_exposes, fill = type_exposition)) +
  geom_boxplot(show.legend = FALSE) +
  coord_flip() +
  scale_x_discrete(labels = scales::label_wrap(35)) +
  scale_fill_brewer(palette = "RdYlBu", direction = -1) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = "Part de ménages particulièrement exposés (%)",
       title = "Caractérisation des intercommunalités selon leur type d'exposition",
       subtitle = "distribution de la part de ménages exposés, par type, en 2021") +
  theme(panel.grid.minor = element_blank())

Figure encadré 2 : consommation moyenne du véhicule selon le revenu

Code
fig_encadre2 |>
  select(decile_revenu, `Consommation réelle` = conso_reelle_l100km,
         `Consommation standardisée (poids constant)` = conso_standardisee_l100km) |>
  pivot_longer(-decile_revenu, names_to = "serie", values_to = "conso") |>
  ggplot(aes(x = decile_revenu, y = conso, color = serie, group = serie)) +
  geom_line(linewidth = 1) +
  geom_point(size = 2) +
  scale_color_manual(values = c("Consommation réelle" = "#1B3F8B",
                                 "Consommation standardisée (poids constant)" = "#E8737A"), name = NULL) +
  theme_minimal(base_size = 13) +
  labs(x = NULL, y = "Litres / 100 km",
       title = "Consommation moyenne du véhicule principal selon le revenu, en 2021",
       subtitle = "ménages véhiculés, véhicule à énergie thermique") +
  theme(legend.position = "bottom",
        axis.text.x = element_text(angle = 30, hjust = 1),
        panel.grid.minor = element_blank())

Tableau complémentaire 3 : effet d’une stabilisation des prix des carburants

Code
tc3 |>
  select(`Type d'intercommunalité` = type_intercommunalite,
         `Part exposée, prix 2021 (%)` = part_exposes_reel,
         `Part exposée, prix stabilisés à 2,0€/2,2€ (%)` = part_exposes_simule,
         `Ménages exposés, prix stabilisés` = nb_menages_exposes_simule) |>
  gt() |>
  tab_header(title = "Effet d'une stabilisation des prix des carburants sur l'exposition des ménages") |>
  fmt_number(columns = where(is.numeric), decimals = 1) |>
  fmt_number(columns = `Ménages exposés, prix stabilisés`, decimals = 0)
Effet d'une stabilisation des prix des carburants sur l'exposition des ménages
Type d'intercommunalité Part exposée, prix 2021 (%) Part exposée, prix stabilisés à 2,0€/2,2€ (%) Ménages exposés, prix stabilisés
Intercommunalités urbaines 9.0 18.8 2,555,050
Pôles urbains 8.4 17.4 1,760,490
Couronnes urbaines 10.8 22.7 794,560
Intercommunalités rurales 13.5 29.0 2,188,890
Rural périurbain 13.1 28.6 1,958,470
Rural non périurbain 16.7 32.9 230,420
Ensemble 10.6 22.4 4,743,930

Tableau complémentaire 4 : motorisation selon le revenu

Code
tc4 |>
  select(decile_revenu, part_essence, part_diesel, part_hybride, part_electrique) |>
  pivot_longer(-decile_revenu, names_to = "carburant", values_to = "part") |>
  mutate(carburant = recode(carburant, part_essence = "Essence", part_diesel = "Diesel",
                             part_hybride = "Hybride", part_electrique = "Électrique"),
         carburant = factor(carburant, levels = c("Essence", "Diesel", "Hybride", "Électrique"))) |>
  ggplot(aes(x = decile_revenu, y = part, fill = carburant)) +
  geom_col(position = position_stack(reverse = TRUE)) +
  scale_fill_manual(values = c("Essence" = "#E8737A", "Diesel" = "#1B3F8B",
                                "Hybride" = "#8FB0DE", "Électrique" = "#B8860B"), name = NULL) +
  theme_minimal(base_size = 13) +
  labs(x = NULL, y = NULL,
       title = "Type de motorisation du véhicule principal selon le revenu, en 2021",
       subtitle = "répartition des ménages véhiculés (%)") +
  theme(legend.position = "bottom",
        axis.text.x = element_text(angle = 30, hjust = 1),
        panel.grid.minor = element_blank())

Tableau complémentaire 2 : caractérisation par type d’exposition

Code
tc2 |>
  rename(`Type d'exposition` = type_exposition,
         `Nb d'intercommunalités` = nb_intercommunalites,
         `Part exposée (%)` = part_exposes,
         `Revenu moyen (€)` = revenu_moyen_avec_voiture,
         `Déplacements moyens (km)` = deplacements_moyens_km,
         `Part de cadres (%)` = part_cadres) |>
  select(`Type d'exposition`, `Nb d'intercommunalités`, `Part exposée (%)`,
         `Revenu moyen (€)`, `Déplacements moyens (km)`, `Part de cadres (%)`) |>
  gt() |>
  tab_header(title = "Caractérisation des intercommunalités selon leur type d'exposition") |>
  fmt_number(columns = where(is.numeric), decimals = 1) |>
  opt_interactive(use_search = TRUE, use_pagination = FALSE, use_compact_mode = TRUE,
                   use_resizers = TRUE) |>
  tab_options(table.width = "100%")
Caractérisation des intercommunalités selon leur type d'exposition

Tableaux complémentaires 5 et 6 : modélisations linéaires

Code
bind_rows(
  tc5 |> mutate(modele = "Part de ménages exposés (intercommunalité)"),
  tc6 |> mutate(modele = "Distance moyenne parcourue (intercommunalité)")
) |>
  rename(Variable = variable, `Coefficient (écart-type)` = coefficient, Signif. = significativite) |>
  gt(groupname_col = "modele") |>
  tab_header(title = "Modélisations linéaires des déterminants de l'exposition et des distances parcourues") |>
  tab_source_note("*** significatif au seuil de 0,1 % ; ** au seuil de 1 % ; * au seuil de 5 %.")
Modélisations linéaires des déterminants de l'exposition et des distances parcourues
Variable Coefficient (écart-type) Signif.
Part de ménages exposés (intercommunalité)
Constante -49,5 (2,7) ***
Revenu moyen annuel des ménages véhiculés de l’intercommunalité (en euros) -0,00037 (0,00001) ***
Part de ménages pauvres parmi les ménages véhiculés de l’intercommunalité (en %) 0,47 (0,013) ***
Moyenne des distances parcourues par les ménages véhiculés de l’intercommunalité (en km) 0,0011 (0,00002) ***
Moyenne de consommation de carburant pour 100 km, dans le parc de véhicules de l’intercommunalité (en litres) 8,01 (0,42) ***
Distance moyenne parcourue (intercommunalité)
Constante 12023 (625) ***
Distance hebdomadaire moyenne pour les déplacements domicile travail, tous moyens de transport confondus (en km) 44 (1,1) ***
Distance moyenne aux équipements1(en km) 148 (11) ***
Part de la population résidant à moins de 10 minutes à pieds d’un transport ferré (train, métro, tram) (en %) -42,2 (3,1) ***
Part des ménages dont la personne de référence a plus de 65 ans (en %) -53,5 (9,1) ***
Part des ménages comptant au moins 2 actifs en emploi (en %) 83 (7,8) ***
Revenu annuel moyen des ménages de l’intercommunalité (en euros) 0,0124 (0,0068) **
*** significatif au seuil de 0,1 % ; ** au seuil de 1 % ; * au seuil de 5 %.