knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-",
  out.width = "100%"
)

SGF

La SGF (pour Statistique Générale de la France) est l'ancêtre de l'Insee, à savoir un service ministériel chargé de collecter et analyser des statistiques pour le gouvernement français entre 1833 et 1940.

Une partie de ces données a été saisie dans les années 1980 par une équipe de chercheurs franco-américains à l'Inter-University Consortium for Political and Social Research (ICPSR), situé à Ann Arbor, Michigan, États-Unis. L'Insee a publié ici 200 tableurs au format dbf portant sur les recensements de la population, la démographie et l'enseignement primaire, entre 1800 et 1925.

Le package sgf regroupe, normalise et documente ces indicateurs disponibles dans la plupart des cas à l'échelon géographique du département (des arrondissements voire des chefs-lieux d'arrondissements dans quelques rares cas). Il permet également de cartographier ces indicateurs au millésime géographique du département ou de l'arrondissement correspondant au millésime de la donnée.

sgf est composé de :

Sources et crédits

Données statistiques : SGF, ICPSR, Insee, insee.fr/fr/information/1300622

Fonds cartographiques : F. Salmon, 2019, fondsdecarte.free.fr/

Documentation, géoréférencement : Observatoire des Territoires.

Installation

Le package sgf peut être installé depuis github via la commande suivante :

``` {r eval=F} remotes::install_github("observatoire-territoires/sgf")

Pour accéder à la documentation décrivant les tables de données, par exemple celle listant les indicateurs :
``` {r eval=F, echo=T, message=F, warning=F}
?sgf::indicateurs_SGF

Géographie

Les contours des départements de France métropolitaine ont évolué sur la période que couvre les données de la SGF. Les 5 millésimes de cette géographie départementale sont disponibles dans la table geo_DEP_SGF_histo (idem pour les contours des arrondissements dans la table geo_ARR_SGF_histo) :

library(tidyverse)
library(sf)

load( file = "./data/geo_DEP_SGF_histo.rda")

geo_DEP_SGF_histo_modifs <- 
  geo_DEP_SGF_histo %>%
  mutate(modif = case_when(CODGEO %in% '82' & ANNEE_GEOGRAPHIE == 1826 ~ "création",
                           CODGEO %in% '73' & ANNEE_GEOGRAPHIE == 1866 ~ "création",
                           CODGEO %in% '74' & ANNEE_GEOGRAPHIE == 1866 ~ "création",
                           CODGEO %in% '06' & ANNEE_GEOGRAPHIE == 1866 ~ "création",
                           CODGEO %in% '83' & ANNEE_GEOGRAPHIE == 1866 ~ "modification",
                           CODGEO %in% '54' & ANNEE_GEOGRAPHIE == 1876 ~ "création",
                           CODGEO %in% '90' & ANNEE_GEOGRAPHIE == 1876 ~ "création",
                           CODGEO %in% '88' & ANNEE_GEOGRAPHIE == 1876 ~ "modification",
                           CODGEO %in% '57' & ANNEE_GEOGRAPHIE == 1918 ~ "création",
                           CODGEO %in% '67' & ANNEE_GEOGRAPHIE == 1918 ~ "création",
                           CODGEO %in% '68' & ANNEE_GEOGRAPHIE == 1918 ~ "création")) %>%
  # ajout des départements supprimés en 1876
  rbind.data.frame(geo_DEP_SGF_histo %>%
                     filter(ANNEE_GEOGRAPHIE == 1866 & CODGEO %in% c('57','67','68')) %>%
                     mutate(ANNEE_GEOGRAPHIE = 1876) %>%
                     mutate(modif = "suppression"))

ggplot(data = geo_DEP_SGF_histo_modifs ) +
  geom_sf(aes(fill = modif),
          color = "grey70", lwd = 0.2) +
  geom_sf_text(aes(label = CODGEO), color = "grey20", size = 1.5, fontface = "bold") +
  scale_fill_manual(name = "Modifications successives\ndepuis 1801",
                    values =c("green", "orange", "red"), na.translate = F, na.value = "grey") +
  facet_wrap(~ ANNEE_GEOGRAPHIE, ncol = 3) +
  theme(axis.text = element_blank(), 
        axis.title = element_blank(), 
        text =  element_text(size = 10,face = "bold"),
        strip.text.x = element_text(size = 10, colour = "white"),
        strip.background = element_rect(fill="grey20", colour=NA,size=0),
        legend.position = c(0.85,0.3),
        legend.key.size = unit(0.2, "cm"),
        legend.key.width = unit(0.4,"cm") ,
        legend.title = element_text(size = 7),
        legend.text = element_text(size = 5),
        axis.ticks  = element_blank()) +
  labs(
    title = "Contours des départements de France métropolitaine"
  ) +
  coord_sf(crs = st_crs(2154), datum = NA)

Démo

La recherche des indicateurs se fait directement dans la table indicateurs_SGF :

library(sgf)
View(indicateurs_SGF)
indicateurs_SGF %>% slice(1:3) %>%
  kableExtra::kable() %>%
  kableExtra::kable_styling(font_size = 6.5, bootstrap_options = c("striped", "hover", "condensed", "responsive"))
DT::datatable(indicateurs_SGF %>% slice(1:2000))

Une fois le niveau géographique (variable 'TYPE_NIVGEO'), la source (variable 'TABLEAU') et l'identifiant (variable 'VAR_COD') des indicateurs sélectionnés, la fonction sgf_sfdf permet de générer un sf dataframe des territoires avec les indicateurs correspondants, au format large :

DEP_pop_1866 <-
  sgf_sfdf(TYPE_NIVGEO = "DEP",
           SRC ="REC_T25",
           LISTE_VAR_COD = c(215, 177, 183))

glimpse(DEP_pop_1866)

Puis on peut cartographier le tout avec ggplot par exemple :

library(ggplot2)
library(scales)
library(hrbrthemes)

ggplot() +
  geom_sf(data = DEP_pop_1866 %>%
            mutate(personnes_sachant_lire_et_ecrire_total_1866_pct = 
                     personnes_sachant_lire_et_ecrire_total_1866 / total_general_de_la_population_total_1866),
          aes(fill= personnes_sachant_lire_et_ecrire_total_1866_pct),
          color = "grey20",
          lwd = 0.15) +
  scale_fill_distiller(name = "", palette = "RdBu",
                       labels = percent_format(accuracy =1),
                       direction = 1) +
  theme_ipsum() +
  theme(axis.text = element_blank(), axis.title  = element_blank(), axis.ticks  = element_blank()) +
  labs(
    title = "Part de la population sachant lire et écrire",
    subtitle = "En 1866, par département",
    caption = "Sources : Insee - SGF - ICPSR - F.Salmon - OT"
  )

Autre exemple avec une cartographie d'un indicateur à la maille arrondissement en symboles proportionnels :

ARR_pop_sexe_1851 <-
  sgf_sfdf(TYPE_NIVGEO = "ARR",
           SRC ="REC_T01",
           LISTE_VAR_COD = c(11,12,13,14)) %>%
  mutate(ratio_femmes_hommes_1851 = (total_du_sexe_feminin_1851 / total_du_sexe_masculin_1851) *100  )



ggplot() +
  geom_sf(data = ARR_pop_sexe_1851, fill="grey80", color = "grey90" , lwd = 0.35) +
  geom_sf(data = geo_DEP_SGF_histo %>% filter(ANNEE_GEOGRAPHIE == 1826), 
          fill=NA, color = "grey95", lwd = 0.75 ) +
  geom_sf(data = ARR_pop_sexe_1851 %>% st_centroid(of_largest_polygon=T),
          aes(fill= ratio_femmes_hommes_1851,
              size = total_du_sexe_masculin_1851 + total_du_sexe_feminin_1851 ),
          color = "grey40", shape = 21) +
  scale_fill_gradientn(colours = c("#1b7837", "white", "#762a83"),
                       name = "Nombre de femmes\npour 100 hommes",
                       breaks = c(70,80,90,100,105,110,115),
                       values = scales::rescale(c(70, 92, 100, 104, 115))) +
  scale_size_continuous(labels=function(x) format(x, big.mark = " ", scientific = FALSE),
                        range = c(1,12),
                        name = "Population totale") +
  guides(fill = guide_legend(reverse=T)) +
  theme_ipsum() +
  theme(axis.text = element_blank(), axis.title  = element_blank(), axis.ticks  = element_blank()) +
  labs(
    title = "Sex-ratio en 1851",
    subtitle = "Par arrondissement",
    caption = "Sources : Insee - SGF - ICPSR - F.Salmon - OT"
  ) +
  theme(legend.position = c(0.95,0.5),
        axis.line=element_blank(),
        axis.title=element_blank(),
        axis.text=element_blank() )


observatoire-territoires/sgf documentation built on Sept. 13, 2024, 1:29 a.m.