Indicateurs statistiques par circonscription législative (2022) - indic-stat-circonscriptions-legislatives-2022

Données - INSEE

Indicateurs démographiques, sociaux et économiques de l’Insee pour les 567 circonscriptions législatives (géographie des élections de 2022) : population et âge, activité et diplômes, catégories sociales, logement, mobilités, niveau de vie et revenus (Filosofi 2019), accès aux équipements. 124 variables sont décrites dans l’onglet « Liste et sources des variables » (tableau en fin de page). Les indicateurs de niveau de vie ne sont pas diffusés pour 16 circonscriptions (secret statistique ; essentiellement outre-mer et Français de l’étranger). Le niveau de vie médian est exprimé en euros par an et par unité de consommation (l’intitulé « en % » de la source est une coquille).

Niveau de vie

Code
nn |>
  ggplot(aes(x = nivvie_median_diff)) +
  geom_histogram(bins = 45, fill = bleu, alpha = 0.85) +
  geom_vline(xintercept = median(nn$nivvie_median_diff), color = rose, linewidth = 1) +
  annotate("text", x = median(nn$nivvie_median_diff), y = Inf, vjust = 1.5, hjust = -0.1, color = rose, fontface = "bold",
           label = paste0("médiane : ", euro(median(nn$nivvie_median_diff)), " €")) +
  scale_x_continuous(labels = euro) +
  theme_circ() +
  labs(x = "Niveau de vie médian de la circonscription (euros par an)", y = "Circonscriptions",
       title = "Niveau de vie médian par circonscription législative", subtitle = "Filosofi 2019")

Code
sel <- bind_rows(nn |> slice_max(nivvie_median_diff, n = 15, with_ties = FALSE) |> mutate(g = "Les plus élevés"),
                 nn |> slice_min(nivvie_median_diff, n = 15, with_ties = FALSE) |> mutate(g = "Les plus faibles"))
sel |>
  mutate(lab = fct_reorder(nom_circo, nivvie_median_diff)) |>
  ggplot(aes(x = nivvie_median_diff, y = lab, fill = g)) +
  geom_col(show.legend = FALSE) +
  geom_text(aes(label = euro(nivvie_median_diff)), hjust = -0.1, size = 3) +
  facet_wrap(~ g, scales = "free_y", ncol = 1) +
  scale_fill_manual(values = c("Les plus élevés" = rose, "Les plus faibles" = vert)) +
  scale_x_continuous(labels = euro, expand = expansion(mult = c(0, 0.12))) +
  theme_circ() +
  labs(x = "Euros par an", y = NULL, title = "Les circonscriptions les plus riches et les plus pauvres")

Code
nn |>
  ggplot(aes(x = nivvie_median_diff, y = rpt_D9_D1_diff)) +
  geom_point(color = bleu, alpha = 0.6, size = 2) +
  geom_text_repel(data = ~ bind_rows(slice_max(.x, rpt_D9_D1_diff, n = 6, with_ties = FALSE), slice_min(.x, rpt_D9_D1_diff, n = 3, with_ties = FALSE)),
                  aes(label = nom_circo), size = 3, segment.size = 0.2) +
  scale_x_continuous(labels = euro) +
  theme_circ() +
  labs(x = "Niveau de vie médian (euros par an)", y = "Rapport interdécile D9/D1",
       title = "Niveau de vie médian et inégalités au sein des circonscriptions")

Niveau de vie, diplômes et chômage

Code
d1 <- nn |> filter(!is.na(actdip_BAC5))
d1 |>
  ggplot(aes(x = actdip_BAC5, y = nivvie_median_diff)) +
  geom_point(color = bleu, alpha = 0.6, size = 2) +
  geom_smooth(method = "lm", se = FALSE, color = rose) +
  geom_text_repel(data = ~ slice_max(.x, actdip_BAC5, n = 5, with_ties = FALSE), aes(label = nom_circo), size = 3, segment.size = 0.2) +
  scale_y_continuous(labels = euro) +
  theme_circ() +
  labs(x = "Part des actifs diplômés de niveau bac+5 ou plus (%)", y = "Niveau de vie médian (euros par an)",
       title = "Niveau de vie et diplômes des actifs",
       subtitle = sprintf("corrélation : %.2f (%d circonscriptions)", cor(d1$actdip_BAC5, d1$nivvie_median_diff), nrow(d1)))

Code
nn |>
  ggplot(aes(x = actcho, y = tx_pauvrete60_diff)) +
  geom_point(aes(color = zone), alpha = 0.7, size = 2) +
  geom_smooth(method = "lm", se = FALSE, color = "grey30") +
  scale_color_manual(values = c("Métropole" = bleu, "Outre-mer" = rose), name = NULL) +
  theme_circ() +
  labs(x = "Part des actifs au chômage (% de la population active, recensement)", y = "Taux de pauvreté à 60 % (%)",
       title = "Chômage et pauvreté dans les circonscriptions",
       subtitle = sprintf("corrélation : %.2f", cor(nn$actcho, nn$tx_pauvrete60_diff, use = "complete.obs")))

Territoire, logement et mobilités

Code
circ |>
  filter(!is.na(pop_rur), !is.na(modtrans_voit)) |>
  ggplot(aes(x = pop_rur, y = modtrans_voit)) +
  geom_point(color = bleu, alpha = 0.6, size = 2) +
  geom_smooth(method = "lm", se = FALSE, color = rose) +
  theme_circ() +
  labs(x = "Part de la population vivant dans une commune rurale (%)", y = "Actifs allant travailler en voiture (%)",
       title = "Ruralité et usage de la voiture pour aller travailler")

Code
circ |>
  filter(!is.na(proprio), !is.na(age_moyen)) |>
  ggplot(aes(x = age_moyen, y = proprio)) +
  geom_point(color = bleu, alpha = 0.6, size = 2) +
  geom_smooth(method = "lm", se = FALSE, color = rose) +
  theme_circ() +
  labs(x = "Âge moyen de la population (ans)", y = "Part de propriétaires (% des résidences principales)",
       title = "Âge de la population et propriété du logement")

Code
circ |>
  filter(!is.na(acc_medecin), !is.na(part_eloig)) |>
  ggplot(aes(x = acc_medecin, y = part_eloig)) +
  geom_point(color = vert, alpha = 0.7, size = 2) +
  theme_circ() +
  labs(x = "Part de la population ayant un médecin dans sa commune (%)", y = "Part de la population éloignée du panier courant (%)",
       title = "Accès à un médecin et éloignement du panier courant")

Corrélations entre indicateurs

Code
vars <- c(nivvie_median_diff = "Niveau de vie médian", tx_pauvrete60_diff = "Taux de pauvreté", rpt_D9_D1_diff = "D9/D1", actcho = "Chômage",
          actdip_BAC5 = "Bac+5", actdip_PEU = "Peu ou pas diplômés", act_cad = "Cadres", act_ouv = "Ouvriers", proprio = "Propriétaires",
          age_moyen = "Âge moyen", pop_rur = "Rural", modtrans_voit = "Voiture", PPEN = "Part pensions")
cm <- cor(circ[names(vars)], use = "pairwise.complete.obs")
as_tibble(cm, rownames = "a") |>
  pivot_longer(-a, names_to = "b", values_to = "r") |>
  mutate(a = factor(vars[a], levels = vars), b = factor(vars[b], levels = rev(vars))) |>
  ggplot(aes(x = a, y = b, fill = r)) +
  geom_tile(color = "white") +
  geom_text(aes(label = sprintf("%.1f", r)), size = 2.8) +
  scale_fill_gradient2(low = vert, mid = "white", high = rose, limits = c(-1, 1), name = "Corrélation") +
  theme_circ() + theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(x = NULL, y = NULL, title = "Corrélations entre indicateurs de circonscription")

Données

Code
circ |>
  select(circo, nom_circo, Inscrit_22, pop, age_moyen, nivvie_median_diff, tx_pauvrete60_diff, actcho, actdip_BAC5, proprio) |>
  print_table_conditional()

Variables

Code
dico |> print_table_conditional()