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)
6 Sexe, âge et urbanité
Nous allons prendre ici un exemple de croisement de trois indicateurs classiques auquels on ajoute une dimension territoriale :
- AGE3 : Distribution de la population en trois classes d’âges
- SEX : Répartition de la population entre hommes et femmes
- URBAN : Classification du logement en zone rurale ou urbaine
- GEOLEV1 ou GEOLEV2 : code de l’unité géographique
On y ajoute deux autres variables facilitant le tri ultérieur du tableau
- COUNTRY : nom du pays
- YEAR : date de recensement
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
<-readRDS(file = "ipums/rp/rp_fivecountries_samp10pct.RDS")
rp
## Création des classes d'âges
$AGE3<-cut(rp$AGE,c(0,14,59,100))
rplevels(rp$AGE3)<-c("0014","1559","60XX")
## Calcul au niveau administratif I
<-rp %>% filter(URBAN !=9)%>%
tc1 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)
<- tc1 %>% filter(SEX=="Male",
HU == "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)
<- tc1 %>% filter(SEX=="Male",
HR == "Rural",
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 = "HR",
values_fill = 0)
<- tc1 %>% filter(SEX=="Female",
FU == "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)
<- tc1 %>% filter(SEX=="Female",
FR == "Rural",
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 = "FR",
values_fill = 0)
<-HU %>% left_join(HR) %>% left_join(FU) %>% left_join(FR)
tab1
# fill missinv values <ith 0
4:15][is.na(tab1[,4:15])]<-0
tab1[,
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.