6  Sexe, âge et urbanité

library(knitr)
library(dplyr, warn.conflicts = FALSE)
options(dplyr.summarise.inform = FALSE)
library(sf, quietly=T)
library(mapsf)
library(RColorBrewer)
library(haven)
library(tidyr,quietly = T,warn.conflicts = FALSE)
options(tidyr.summarise.inform = FALSE)
library(FactoMineR)
library(explor)

Nous allons prendre ici un exemple de croisement de trois indicateurs classiques auquels on ajoute une dimension territoriale :

On y ajoute deux autres variables facilitant le tri ultérieur du tableau

Après avoir stocké le tableau de contingence en format “long” ou “large” on donne un exemple d’utilisation avec la réalisation d’une analyse factorielle des correspondance (AFC) et une classification ascendante hiararchique (CAH) sur la structure par âge et par sexe des populations au niveau administratif I.

6.1 Création des tableaux

La première étape consiste à établir des tableaux croisés qui énumèrent tous les croisements possibles en ayant retirer les individus auxquels il manque une des caractéristique. Il s’agit en général d’un petit nombre de cas.

6.1.1 niveau I

## Chargement des données
rp <-readRDS(file = "ipums/rp/rp_fivecountries_samp10pct.RDS")

## Création des classes d'âges
rp$AGE3<-cut(rp$AGE,c(0,14,59,100))
levels(rp$AGE3)<-c("0014","1559","60XX")


## Calcul  au niveau administratif I
tc1 <-rp      %>%  filter(URBAN !=9)%>%
                  group_by(COUNTRY, YEAR,GEOLEV1, AGE3, SEX, URBAN) %>%
                   summarise(N=sum(PERWT)) %>%
                  as_factor(only_labelled=T)

saveRDS(tc1, "indic/all/GEOLEV1_POP_AGE_SEX_URB_long.RDS")

kable(head(tc1))
COUNTRY YEAR GEOLEV1 AGE3 SEX URBAN N
Benin 2013 204001 0014 Male Rural 165950
Benin 2013 204001 0014 Male Urban 49390
Benin 2013 204001 0014 Female Rural 157890
Benin 2013 204001 0014 Female Urban 47670
Benin 2013 204001 1559 Male Rural 137410
Benin 2013 204001 1559 Male Urban 50210

Ce tableau qui est au format “long” est pratique pour certaines application mais pas pour d’autres où l’on préférera un format “large”. On va donc le transformer en une seconde version qui conserve les valeurs mais les range différemment dans les colonnes. Dans ce nouveau format le nom des colonnes permet de repérer le croisement opéré (e.g. HU0014 est la population d’hommes résidant en milieu urbain d’âge 0-14 ans, FR85XX est la population de femmes de 85ans et plus résidant en milieu rural, etc)

library(tidyr)

HU <- tc1 %>% filter(SEX=="Male", 
                     URBAN == "Urban", 
                     is.na(AGE3)==F) %>% 
              group_by(COUNTRY, YEAR, GEOLEV1, AGE3) %>%
              summarise(N=sum(N)) %>%
              pivot_wider(id_cols = c(COUNTRY, YEAR,GEOLEV1),
                          names_from = AGE3,
                          values_from = N,
                          names_prefix = "HU",
                          values_fill = 0)

HR <- tc1 %>% filter(SEX=="Male", 
                     URBAN == "Rural", 
                     is.na(AGE3)==F) %>% 
              group_by(COUNTRY, YEAR, GEOLEV1, AGE3) %>%
              summarise(N=sum(N)) %>%
              pivot_wider(id_cols =  c(COUNTRY, YEAR,GEOLEV1),
                          names_from = AGE3,
                          values_from = N,
                          names_prefix = "HR",   
                          values_fill = 0)

FU <- tc1 %>% filter(SEX=="Female", 
                     URBAN == "Urban", 
                     is.na(AGE3)==F) %>% 
              group_by(COUNTRY, YEAR, GEOLEV1, AGE3) %>%
              summarise(N=sum(N)) %>%
              pivot_wider(id_cols =  c(COUNTRY, YEAR,GEOLEV1),
                          names_from = AGE3,values_from = N,
                          names_prefix = "FU",  
                          values_fill = 0)

FR <- tc1 %>% filter(SEX=="Female", 
                     URBAN == "Rural", 
                     is.na(AGE3)==F) %>% 
              group_by(COUNTRY, YEAR, GEOLEV1, AGE3) %>%
              summarise(N=sum(N)) %>%
              pivot_wider(id_cols =  c(COUNTRY, YEAR,GEOLEV1),
                          names_from = AGE3,
                          values_from = N,
                          names_prefix = "FR", 
                          values_fill = 0)

tab1<-HU %>% left_join(HR) %>% left_join(FU) %>% left_join(FR) 

# fill missinv values <ith 0
tab1[,4:15][is.na(tab1[,4:15])]<-0

saveRDS(tab1, "indic/all/GEOLEV1_POP_AGE_SEX_URB_wide.RDS")

kable(head(tab1))
COUNTRY YEAR GEOLEV1 HU0014 HU1559 HU60XX HR0014 HR1559 HR60XX FU0014 FU1559 FU60XX FR0014 FR1559 FR60XX
Benin 2013 204001 49390 50210 4130 165950 137410 12640 47670 52460 3410 157890 149560 11090
Benin 2013 204002 66620 63400 6060 123840 96870 12560 63960 71810 7070 114090 114290 12950
Benin 2013 204003 117440 167670 9720 174430 182190 15420 117500 176970 12240 163070 200670 21010
Benin 2013 204004 113560 130850 9820 174430 143420 13050 111430 134350 9970 167980 155680 11920
Benin 2013 204005 40240 48300 4430 121210 116610 12030 40570 52520 6000 109360 128400 13600
Benin 2013 204006 46070 45050 3660 129190 102010 10370 45070 55030 5550 126380 139970 15150

6.1.2 niveau II

On reprend les mêmes procédure exactement, en changeant juste le niveau d’agrégation territoriale

COUNTRY YEAR GEOLEV2 AGE3 SEX URBAN N
Benin 2013 204001001 0014 Male Rural 53610
Benin 2013 204001001 0014 Male Urban 8980
Benin 2013 204001001 0014 Female Rural 49690
Benin 2013 204001001 0014 Female Urban 8420
Benin 2013 204001001 1559 Male Rural 44210
Benin 2013 204001001 1559 Male Urban 8760
COUNTRY YEAR GEOLEV2 HU0014 HU1559 HU60XX HR0014 HR1559 HR60XX FU0014 FU1559 FU60XX FR0014 FR1559 FR60XX
Benin 2013 204001001 8980 8760 700 53610 44210 4120 8420 9580 720 49690 47900 3950
Benin 2013 204001002 2990 3050 170 26320 21800 1960 3260 3600 280 25580 23820 1930
Benin 2013 204001003 12230 13610 1090 31110 25230 2160 11480 13460 900 30790 28240 1880
Benin 2013 204001004 2660 3000 210 13030 11640 1010 2480 2680 160 12930 12390 880
Benin 2013 204001005 15730 15600 1480 25800 21500 2070 15060 16800 940 24040 23380 1590
Benin 2013 204001006 6800 6190 480 16080 13030 1320 6970 6340 410 14860 13830 860

6.2 Utilisation pédagogique

On peut tirer de nombreux indicateurs du tableau de contingence multiple pour des analyses univariées, bivariées ou multivariées. L’intérêt de ce type de tableau est leur compacité et leur faible taille comparativement au tableau inital des individus. Ils peuvent en particulier être utilisé pour des applications interactives de visualisaton développées sous Shiny où l’utilisateur pourra choisir par exemple de visualiser le % de jeunes, pour un pays donné, à une date donnée, pour un genre donné, en milieu rura ou urbai, etc.