ECOLE D’ETE CIST 2022

Inventaire préparatoire des données

Claude Grasland (Université de Paris (Diderot), UMR 8504 Géographie-cités, FR 2007 CIST)

featured

1 INTRODUCTION

L’objectif de ce document est d’examiner quelles sources en accès libre pourraient être utilisées pour la préparation de l’école d’été du CIST afin de construire des modules pédagogiques qui seront mis en ligne à une date mais pourront ensuite être régulièrement mises à jour.

Nous avons choisi de nous focaliser sur l’exemple des données relatives au Benin puisque ce pays accueillera la seconde phase du projet,mais l’idée est évidemment de pouvoir constituer des tableaux comparables dans chacun des pays concernés (Togo, Côte d’Ivoire, Niger, Burkina faso, Mali, Sénégal, …) au prix d’éventuelles adaptations.

Les tableaux de données sont sélectionnées prioritairement sur leurs qualités pédagogiques c’est-à-dire leur intérêt pour apprendre les méthodes de statistique, cartographie ou analyse spatiale. Mais il est évidemment souhaitable que ces données possèdent également un intérêt thématique et que le formateur puisse proposer des interprétations des résultats. Et il faut évidemment éviter que ces données comportent des erreurs ou véhiculent des informations fausses.

C’est la raison pour laquelle la sélection initiale effectuée par un enseignant-chercheur éloigné du terrain devra impérativement être validée par des spécialistes du pays concerné, aussi bien en termes pédagogiques que thématiques.

Ce document n’est évidemment pas exhaustif et devra être complété par d’autres chercheurs, notamment s’agissant des données d’enquête (e.g. EDS) ou des relevés de terrain (GPS, kobo toolbox, …)

2 DONNEES DE RECENSEMENT

Les données individuelles sont celles qui offrent les plus riches possibilités de traitement puisqu’il est possible de les agréger selon des dimensions sociales ou spatiale multiples et ainsi produire des tableaux en nombre virtuellement infini. Elles posent cependant des questions de nature différentes selon qu’elles portent sur un échantillon limité ou une population exhaustive.

Mouftaou Amadou Sanni souligne l’imporance de l’IREDA qui a réalisé un inventaire des Recensements de Population (RGPHs) et Enquetes Demographiques d’acces libre que l’on peut trouver en suivant ce lien. A partir de ce lien, on peut accéder librement en ligne aux Recensements et Enquetes Démographiques de 23 pays d’Afrique Subsaharienne y compris le Benin.

“IREDA: Inventaires des Recensements et Enquetes en Afrique” est un projet Exécuté par CEPED/Paris en collaborations avec des intitutions afticaines de collecte de données et de Recherche dont mon Institution le CEFORP/Cotonou. Ce projet a démarré en 2008; il s’est inscrit dans la dynamique de sauvegarde, de conservation et de valorisstion des opérations de collecte sous la forme d’inventaires documentés. Il a été co-financé par Paris21-INSEE-IRD-OIF-CESD "Statistiwues pour Développement

A partir du site de l’IREDA, on peut notamment accéder à un catalogue d’archives des enquêtes et recensement du Benin en suivant ce lien qui comporte pas moins de 30 fiches descriptives d’enquêtes ou de recensements.

2.1 Données disponibles

Parmi les ressources disponibles, une source incontournable est naturellement le dernier recensement du Benin pour lequel on peut retrouver un grand nombre de fichiers et de publications relatives à la collecte et aux résultats en suivant ce lien qui donne accès au téléchargement direct de l’ensemble des archives disponibles.

2.1.1 Métadonnées

Avant toute exploitation statistique des données, il peut être intéressant de montrer aux étudiants tout le détail du processus de réalisation du recensement en s’appuyant à la fois sur la documentation générale et sur le bulletin d’enquête proprement dit

Mais bien d’autres documents méritent également d’être analysés, notamment ceux relatifs aux procédures de recueil, saisie ou contrôle et ceux relatifs au coût financier de l’opération de recensement.

2.1.2 Rapports officiels

La relative ancienneté de ce recensement présente en fait l’avantage de montrer l’ensemble des exploitations officielles qui ont pu en être faites sous l’égide de l’INSAE, à destination des décideurs politiques de tous niveaux mais aussi des entreprises ou des citoyens. Le point commun de la majorité des rapports est de fournir un très grand nombre de tableaux croisés (tris à plat) qui présentent les dénombrement des populations et des ménages à touts les échelles. On notera à cet égard le grand intérêt de la collection des cahiers de village qui fournissent pour chacun des douze départements du Bénin des tableaux très précis des situations locales. Malheureusement, seule une partie d’entre eux fournit une cartographie des contours des arrondissements (niveau de découpage infracommunal) et il est en général impossible de localiser les villages qui sont le niveau géographique d’observation le plus fin. Notons enfin que les seules cartes fournies dans ces rapports le sont à l’échelle des départements mais pour ainsi dire jamais à l’échelles des communes et encoremoins à celle des arrondissements.

La cartographie locale semble donc être un enjeu très important pour l’école d’été CIST 2022, mais il ne semble pas forcément évident d’obtenir les contours des unités spatiales de collecte les plus petites (arrondissements, villages) ni même leur géolocalisation. Ces données ne sont en tous les cas pas disponibles sur le site du recensement que nous avons examinée. Elle relèvent probablement d’u autre organisme national (Insitut Géographique National ?) à moins qu’elles ne soient soumises à des règles de confidentialité.

2.1.3 Données individuelles

Nous avons découvert à notre grande surprise que les bulletins individuels de recensement des populations et des ménages sont librement accessibles dans le dossier d’archive mis à la disposition du public sous l’appellation “masque de saisie” en suivant ce lien. Plus précisément, on obtient un dossier contenant deux fichiers :

  • le fichier de données INSAE_RGPH4_2013.dat (978 Mo) contient l’enssemble exhaustif des informations sur les points d’enquête (localisation en département, commune, arrondissement, village, bloc, numéro de ménage), les individus, les ménages et les décès survenus au cours des dernières années.
  • le dictionnaire de métadonnées INSAE_RGPH4_2013.dcf (103 Ko) décrit de façon précise et détaillée les champs d’information et les codes de chacune des variables.

On peut lire le fichier en se servant d’un programme R, mais celui-ci est très lourd (près de 20 millions de lignes) et pour les utilisateurs débuutants de R il est plus simple de l’ouvrir avec le logiciel CSPro qui est l’application qui a été utilisée pour réaliser le recensement au Benin comme dans de nombreux pays africains.

2.2 Exploitation avec CSPro

CSPro, abréviation de Census and Survey Processing System est un ensemble logiciel comprenant compilateur et différents outils spécialisés dans le développement d’applications de collecte, visualisation, traitement et analyse de données. C’est un logiciel développé par le Census Bureau des États-Unis ainsi que ICF international. Serpro S.A était aussi impliqué dans les premières étapes du développement de CSPro. Le financement de ce programme provient principalement de l’USAID. La première version de CSPro remonte à mai 2000, cependant le développement de ses ancêtres : ISSA et IMPS remonte a plus de 30 années. Les dernières versions du compilateur et des outils sont conçues pour être utilisées sur les ordinateurs ayant comme système d’exploitation Windows 7 et plus. Cependant, les applications implémentées avec CSPro 7+ peuvent être déployées sur n’importe quel ordinateur, tablette, smartphone utilisant Android, Windows UWP ou Windows 7, 8 , 10. CSPro dispose d’un environnement de développement très simple, mais la puissance de son langage de programmation propre : Le Cspro Programming Language (CPL) lui permet de concevoir des applications complexes et intelligentes susceptibles d’être utilisées dans des domaines variés (Formulaires électroniques pour Enquêtes et Recensements, implémentation de système d’information sophistiqués : Suivi-Evaluation, Administration et Gestion d’entreprises etc.) Source : Wikipedia.France

Ce logiciel étant gratuit, nous avons pu effectuer un test d’utilisation sur les fichiers du Benin qui s’ouvrent effectivement sans difficultés et peuvent être ainsi décodés rapidement :

  • Remarques: Si la disponibilité de ces données semble avérée (lien web public) il faut toutefois faire preuve de prudence dans leur dissémination car il semble possible d’accéder à des données individuelles sensibles ce qui poserait des questions éthiques. Notons pour l’anecdote que l’une des professions possible est “Président de la République” (code 001), catégorie qui n’apparaît que pour trois individus sur les dix millionsque compte le Benin… Si on souhaite utiliser ces données dans un cadre pédagogique, il sera sans doute préférable de les anonymiser ce qui constitue en soi un excellent exercice pédagogique.

2.2.1 Exemple d’utilisation

Nous utilisons ici un tableau qui a été réalisé à l’aide de CSPro en croisant les variables “Département de résidence actuel” et “Département de résidence antérieur”. Nous excluons de ce fait les mobilités internationales entrantes et nous ne prenons pas en compte l’ancienneté de la migration qui est variable puisque le recensement demande uniquement le dernier changement de domicile.

Migrations interdépartementales au Bénin (source : RGPH 2013)
ALI ATA ATL BOR COL COU DON LIT MON OUE PLA ZOU Sum
ALIBORI 814089 3246 1880 15174 1881 157 1432 1804 345 1126 137 1018 842289
ATACORA 1319 722704 3783 36289 6947 276 6880 2385 601 1474 455 1428 784541
ATLANTIQUE 485 1008 1003857 2782 2684 1669 526 33639 5474 11863 1405 6531 1071923
BORGOU 5125 8944 8554 1055450 9761 762 6734 7742 1065 3351 433 3851 1111772
COLLINES 1478 2705 14181 17791 604630 1000 3221 7158 988 2813 1206 11705 668876
COUFFO 314 461 15291 2694 4375 709699 717 6766 9352 3261 941 7701 761572
DONGA 1157 4199 3353 17894 6860 160 490592 7182 358 2187 265 971 535178
LITTORAL 1336 3136 232386 11456 10396 5370 3333 481139 16627 78088 4671 18653 866591
MONO 207 411 21685 1663 1412 4178 262 13590 425086 4694 656 2528 476372
OUEME 575 955 17496 4009 1822 1234 621 31907 2610 930591 13344 4357 1009521
PLATEAU 202 204 3454 691 1606 607 138 6879 681 15595 578954 3466 612477
ZOU 783 984 30066 6957 28729 3517 866 19492 2068 7586 6235 768624 875907
Sum 827070 748957 1355986 1172850 681103 728629 515322 619683 465255 1062629 608702 830833 9617019

Commentaire : Les lignes correspondent au département de résidence précédente et les colonnes au département de résidence actuelle. La diagonale correspond aux individus présents dans un département n’ayant pas déclaré avoir résidé dans un autre. Les personnes recensées qui déclare avoir résidé à l’étranger sont exclues ce qui explique que le total général soit 9.62 millions d’habitants et non pas de 10 millions. On peut déduire de la somme des lignes et des colonnes (hors diagonale) la somme des départs et des arrivées, ce qui permet par la suite de calculer le volume des migrations et le solde migratoire. On peut enfin examiner pour chaque paire de département la quantité d’échanges bilatéraux ainsi que les transferts nets. Par exemple, on trouve 1319 migrants du département d’Atacora vers celui d’Alibori contre 3246 dans la direction opposée.

Ce tableau peut donc servir de base à une initiation à l’étude des migrations interne du pays, un premier exercice pouvant consister à en extraire les indicateurs de base sur les départements.

Synthèses des migrations inter-départementales du Bénin (source : RGPH, 2013)
département population stables départs arrivées volume solde tx_mob tx_emi tx_imm tx_asy
ALIBORI 842289 814089 28200 12981 41181 -15219 4.89 3.35 1.54 -36.96
ATACORA 784541 722704 61837 26253 88090 -35584 11.23 7.88 3.35 -40.40
ATLANTIQUE 1071923 1003857 68066 352129 420195 284063 39.20 6.35 32.85 67.60
BORGOU 1111772 1055450 56322 117400 173722 61078 15.63 5.07 10.56 35.16
COLLINES 668876 604630 64246 76473 140719 12227 21.04 9.61 11.43 8.69
COUFFO 761572 709699 51873 18930 70803 -32943 9.30 6.81 2.49 -46.53
DONGA 535178 490592 44586 24730 69316 -19856 12.95 8.33 4.62 -28.65
LITTORAL 866591 481139 385452 138544 523996 -246908 60.47 44.48 15.99 -47.12
MONO 476372 425086 51286 40169 91455 -11117 19.20 10.77 8.43 -12.16
OUEME 1009521 930591 78930 132038 210968 53108 20.90 7.82 13.08 25.17
PLATEAU 612477 578954 33523 29748 63271 -3775 10.33 5.47 4.86 -5.97
ZOU 875907 768624 107283 62209 169492 -45074 19.35 12.25 7.10 -26.59

Commentaire : Si les chiffres du recensement sont exacts et si nous n’avons pas commis d’erreurs … le tableau met en évidence des évolutions démographiques très contrastées d’un département à l’autre en termes de mobilité et d’attractivité migratoire. Ainsi le département d’Alibori se caractérise apparemment par une très faible mobilité avec un taux d’émigration de 3.3% et un taux d’immigration de 1.5% soit un solde migratoire négatif de -15219 habitants. Le département de l’Atlantique est quant à lui le plus attractif avec un solde migratoire de +248063 habitant qui s’explique par un taux d’immigration exceptionnel (près du tiers de ses habitants actuels ont résidé antérieurement dans un autre département). A l’inverse, le département du Littoral est caractérisé par un solde migratoire de -246908 habitant qui s’explique par une très forte mobilité combinant une assez forte immigration (16%) et une très forte immigration (45%). On peut supposer que cela correspond à un phénomène de plaque tournante de la métropole de Cotonou qui attire et renvoie de nombreux migrants de tout le pays tout en s’étalant progressivement au delà des limites étroites de son département vers des périphéries urbaines situées dans les départements de l’Atlantique et de Oueme. Notons pour finir que le département de Bhttp://127.0.0.1:32566/rmd_output/0/#annexesorgou connaît également une évolution très positive liée à la croissance de la ville de Parakou, métropole du Nord.

2.3 Exploitation directe avec R

L’inconvénient de CSPro est de limiter les possibilités de croisement des données puisque l’outil de base est le tableau à 2 dimensions. Or, il est possible d’obtenir des tableaux beaucoup plus intéressants en utilisant des programmes R qui lisent directement les fichiers de données brutes. A titre d’exemple, nous allons montrer (sans détaillerles programmes) un exemple d’analyse des trajectoires de mobilités où nous relevons pour chaque individu trois points dans l’espace-temps.

2.3.1 Construction du tableau de données

  1. Lieu (loc1) et (dat1) date de naissance de l’individu
  2. Lieu (loc2) et date de départ (dat2) de la dernière résidence si elle est différente de la résidence actuelle
  3. Lieu (loc3) et date de recensement (dat3) dans la résidence actuelle.

On peut en déduire trois autres variables booléennes indiquant l’existence de mobilités passées

  • mob13 : migration durée de vie, si le lieu de naissance est différent du lieu de recensement
  • mob23 : dernière migration, si l’individu a déclaré avoir résidé antérieurement dans un autre lieu
  • mob12 : migration entre la naissance et le dernier lieu de résidence avant le lieu de recensement.

On peut ensuite ajouter au fichier autant de données que l’on souhaite relatives à l’individu ou au ménage. Ici, on a jouté à titre d’exemple uniquement deux variables :

  • ref : indique si l’individu concerné est la personne de référence du ménage ou non.
  • sex : indique si l’individu concerné est un homme ou une femme.

On choisit ici de retenir les individus qui ont déclaré avoir effectué à la fois une mobilité 1-2 et une mobilité 2-3, ce qui donne un tableau comportant 635051 observations. Il est probablement incomplet car beaucoup d’individus n’ont pas renseigné la seconde localisation ou bien l’ont fait de façon imprécise. Mais il offre néanmoins de nombreuses possibilités d’utilisation pédagogique :

dt<-readRDS("data/rp2013/mobind.RDS")
  dt<-data.table(dt)
  dt2<-dt[mob12+mob23==2 &is.na(dat2)==F]
  kable(head(dt2))
ref sex loc1 loc1_name dat1 loc2 loc2_name dat2 loc3 loc3_name dat3 mob12 mob23 mob13
O M 052 DASSA 1979 031 ABOMEY-CALAVI 2005 011 BANIKOARA 2013 1 1 1
N F 011 BANIKOARA 1983 081 COTONOU 2005 011 BANIKOARA 2013 1 1 0
N F 011 BANIKOARA 2006 013 KANDI 2008 011 BANIKOARA 2013 1 1 0
N M 053 GLAZOUE 1982 013 KANDI 2013 011 BANIKOARA 2013 1 1 1
N M 052 DASSA 1985 045 PARAKOU 2013 011 BANIKOARA 2013 1 1 1
N F 045 PARAKOU 2005 013 KANDI 2010 011 BANIKOARA 2013 1 1 1

La première ligne du tableau ci-dessus correspond à un homme chef de ménage qui avait environ 34 ans lors du recensement de 2013. Il est né dans la commune de Dassa en 1979, puis a effectué au moins une migration qui l’a amené à un date inconnue à Abomey-Calavi d’où il est parti en 2005 pour Banikoara où il résidait en 2013. La seconde ligne du tableau correspond à une femme qui n’est pas chef de ménage et avait environ 30 ans lors du recensement de 2013. Elle est née en 1983 dans la commune de Banikoara puis est partie à une date inconnue à Cotonou qu’elle a quitté en 2008 pour revenir dans sa commune d’origine.

Comme on peut le voir avec les deux exemples précédents, le tableau permet de repérer soit des trajectoires complexes mettant en jeu trois lieux différents, soit des trajectoires d’aller et retour concernant des individus qui sont revenus dans leur commune de naissance après avoir séjourné dans une autre commune.

2.3.2 Exemple des mobilités depuis ou vers Cotonou

Etudions à tire d’exemple le cas de l’ensemble des personnes qui ont déclarées être présentes dans la commune de Cotonou (code 081) a un moment ou un autre de leur parcours migratoire. On peut distinguer 8 cas

  1. Résidence permanente à Cotonou (loc1 = loc2 = loc3 = Cotonou)
  2. Arrivée à Cotonou sans relais (loc1 = X, loc2 = X, loc3 = Cotonou)
  3. Arrivée à Cotonou avec relais (loc1 = X, loc2 = Y, loc3 = Cotonou)
  4. Départ puis retour à Cotonou (loc1 = Cotonou, loc2 = X, loc3 = Cotonou)
  5. Départ de Cotonou sans relais (loc1 = loc2 = Cotonou, loc3 = X)
  6. Départ de Cotonou avec relais (loc1 = Cotonou, loc2 = X, loc3 = Y)
  7. Aller à Cotonou puis retour (loc1 = X, loc2 = Cotonou, loc3 = X)
  8. Aller à Cotonou puis départ (loc1 = X, loc2 = Cotonou, loc3 = Y)
com<-"081"
  cas1<-dt[loc1==com][loc2==com][loc3==com][,cas:=1]
  cas2<-dt[loc1!=com][loc2==loc1][loc3==com][,cas:=2]
  cas3<-dt[loc1!=com][loc2!=loc1][loc2!=com][loc3==com][,cas:=3]
  cas4<-dt[loc1==com][loc2!=com][loc3==com][,cas:=4]
  cas5<-dt[loc1==com][loc2==loc1][loc3!=com][,cas:=5]
  cas6<-dt[loc1==com][loc2!=loc1][loc3!=com][loc3!=loc2][,cas:=6]
  cas7<-dt[loc1!=com][loc2==com][loc3==loc1][,cas:=7]
  cas8<-dt[loc1!=com][loc2==com][loc3!=loc1][loc3!=com][,cas:=8]
  tabcom<-rbind(cas1,cas2,cas3,cas4,cas5,cas6,cas7,cas8)
  tabcom$cas<-as.factor(tabcom$cas)
  levels(tabcom$cas) <-c("1. Résidence permanente" ,
                         "2. Arrivée sans relais " ,
                         "3. Arrivée avec relais"  ,
                         "4. Aller et retour"      ,
                         "5. Départ sans relais"   ,
                         "6. Départ avec relais"   ,
                         "7. Passage puis retour"  ,
                         "8. Passage puis départ")
  
  res<-tabcom[,.(nb=.N),.(cas)]
  restot<-data.table(cas="Total",nb=dim(tabcom)[1])
  res2013<-data.table(cas="Résidents 2013 (1+2+3+4)",nb=sum(res[1:4]$nb))
  
  res[c(1,4,5,6),sum(nb)]
[1] 616450
natifs<-data.table(cas="Natifs (1+4+5+6)",nb=sum(res[c(1,4,5,6)]$nb))
  res<-rbind(res,res2013,natifs,restot)
  res$pct<-100*res$nb/restot$nb
  kable(res,digits = c(NA,0,2),caption = "Cotonou dans le système migratoire du Bénin (RP 2013)")
Cotonou dans le système migratoire du Bénin (RP 2013)
cas nb pct
1. Résidence permanente 377516 37.85
2. Arrivée sans relais 149572 15.00
3. Arrivée avec relais 32425 3.25
4. Aller et retour 21839 2.19
5. Départ sans relais 186265 18.67
6. Départ avec relais 30830 3.09
7. Passage puis retour 65829 6.60
8. Passage puis départ 133133 13.35
Résidents 2013 (1+2+3+4) 581352 58.29
Natifs (1+4+5+6) 616450 61.81
Total 997409 100.00

Cet exemple montre que près d’un million de personnes recensées au Bénin en 2013 (soit environ 10% de la population) sont “passées” à un moment ou un autre de leur parcours migratoire par Cotonou. On remarque aussi que le nombre de natifs de Cotonou présents au Bénin en 2013 (613450) est supérieur à la population de la commune à cette date (581352). il s’agit donc d’une plaque tournante migratoire majeure pour le pays, mais dont l’espace est saturé et qui redistribue plus de population vers le reste du pays qu’elle n’en reçoit.

2.3.3 Exemple des mobilités depuis ou vers Parakou

Le programme précédent peut être transformé en fonction applicable à n’importe quelle commune du Benin et ultérieurement implanté sous forme de site web pour apprécier les différences de fonctionnement des territoires. A titre d’exemple, considérons justes le cas de Parakou (code 045), métropole en pleine croissance qui polarise le nord du pays.

com<-"045"
  cas1<-dt[loc1==com][loc2==com][loc3==com][,cas:=1]
  cas2<-dt[loc1!=com][loc2==loc1][loc3==com][,cas:=2]
  cas3<-dt[loc1!=com][loc2!=loc1][loc2!=com][loc3==com][,cas:=3]
  cas4<-dt[loc1==com][loc2!=com][loc3==com][,cas:=4]
  cas5<-dt[loc1==com][loc2==loc1][loc3!=com][,cas:=5]
  cas6<-dt[loc1==com][loc2!=loc1][loc3!=com][loc3!=loc2][,cas:=6]
  cas7<-dt[loc1!=com][loc2==com][loc3==loc1][,cas:=7]
  cas8<-dt[loc1!=com][loc2==com][loc3!=loc1][loc3!=com][,cas:=8]
  tabcom<-rbind(cas1,cas2,cas3,cas4,cas5,cas6,cas7,cas8)
  tabcom$cas<-as.factor(tabcom$cas)
  levels(tabcom$cas) <-c("1. Résidence permanente" ,
                         "2. Arrivée sans relais " ,
                         "3. Arrivée avec relais"  ,
                         "4. Aller et retour"      ,
                         "5. Départ sans relais"   ,
                         "6. Départ avec relais"   ,
                         "7. Passage puis retour"  ,
                         "8. Passage puis départ")
  
  res<-tabcom[,.(nb=.N),.(cas)]
  restot<-data.table(cas="Total",nb=dim(tabcom)[1])
  res2013<-data.table(cas="Résidents 2013 (1+2+3+4)",nb=sum(res[1:4]$nb))
  
  res[c(1,4,5,6),sum(nb)]
[1] 194345
natifs<-data.table(cas="Natifs (1+4+5+6)",nb=sum(res[c(1,4,5,6)]$nb))
  res<-rbind(res,res2013,natifs,restot)
  res$pct<-100*res$nb/restot$nb
  kable(res,digits = c(NA,0,2),caption = "Cotonou dans le système migratoire du Bénin (RP 2013)")
Cotonou dans le système migratoire du Bénin (RP 2013)
cas nb pct
1. Résidence permanente 153975 51.85
2. Arrivée sans relais 59993 20.20
3. Arrivée avec relais 17064 5.75
4. Aller et retour 7994 2.69
5. Départ sans relais 22843 7.69
6. Départ avec relais 9533 3.21
7. Passage puis retour 12136 4.09
8. Passage puis départ 13412 4.52
Résidents 2013 (1+2+3+4) 239026 80.49
Natifs (1+4+5+6) 194345 65.45
Total 296950 100.00

Cet exemple montre qu’environ 300 000 de personnes recensées au Bénin en 2013 sont “passées” à un moment ou un autre de leur parcours migratoire par Parakou. On remarque aussi que le nombre de natifs de Parakou présents au Bénin en 2013 (194345) est supérieur à la population de la commune à cette date (239026). A l’inverse de Cotonou, cette commune de Parakou retient donc plus de migrants qu’elle n’en redistribue vers le reste du pays. Il s’agit d’un pôle d’accumulation.

2.3.4 Exemple de modèle de choix conditionnel : Parakou ou Cotonou ?

Pour répondre à la demande de France et Mouftaou de construire des applications des modèles logistique ou multi-niveau, on peut construire un exemple simple de modèle de choix en considérant les personnes chef de ménage et âgées de plus de 18 ans en 2013 qui ont quitté leur commune de naissance pour se rendre respectivement à Cotonou (0) ou à Parakou (1). On trouve 128473 individus répondant à ces critères parmi lesquels on tire au hasard un échantillon de 1000 personnes :

sel<-dt[!loc1 %in% c("045","081")][loc3 %in% c("045","081")][dat1<1995][ref=="O",.(sex,age = 2013-dat1,ori=loc1_name,dest=as.character(loc3_name))]
  kable(head(sel))
sex age ori dest
F 53 SAVE PARAKOU
M 48 COVE PARAKOU
M 40 ABOMEY PARAKOU
M 38 SAKETE PARAKOU
M 39 ABOMEY PARAKOU
F 44 BOHICON PARAKOU

2.3.4.1 Effet isolé du sexe

tabcont<-table(sel$sex,sel$dest)
  test<-chisq.test(tabcont)
  chi<-round(test$statistic,2)
  pval<-cut(test$p.value,breaks=c(0,0.001,0.01,0.1,1))
  levels(pval)<-c("***","**","*","n.s.")
  res<-paste("Chi-2 = ", chi, ", df = ",test$parameter,"sign = ", pval)
  plot(tabcont,col=c("lightyellow","orange"), main = "Les femmes préfèrent Cotonou ?", sub=res)

2.3.4.2 Effet isolé de l’âge

sel$age2<-cut(sel$age,breaks=c(18,25,35,45,55,65,100))
  tabcont<-table(sel$age2,sel$dest)
  test<-chisq.test(tabcont)
  chi<-round(test$statistic,2)
  pval<-cut(test$p.value,breaks=c(0,0.001,0.01,0.1,1))
  levels(pval)<-c("***","**","*","n.s.")
  res<-paste("Chi-2 = ", chi, ", df = ",test$parameter,"sign = ", pval)
  plot(tabcont,col=c("lightyellow","orange"), main = "Les jeunes préfèrent Parakou ?", sub=res)

3 DONNEES HUMANITAIRES (HDX)

3.1 La source HDX (Humanitarian Data Exchange)

Il s’agit d’une source majeure qui semble utilisable dans tous les pays.

Le sigle OCHA désigne le United Nation Office for the Coordination of Human Affairs dont la vocation est de fournir une aide dans les situations d’urgence. Sa mission qui est expliquée en détail sur son site web comporte de nombreux volets. Cette agence est organisée sur un plan régional et comporte notamment une délégation spécialisée dans les pays d’Afrique Centrale et de l’Ouest appelée OCHA-ROWCA qui couvre l’ensemble despays ciblés par l’école d’été du CIST.

Pour mener à bien ses actions l’OCHA-ROWCA a développé un grand nombre de bases de données qui sont mises à jour régulièrement avec un accès à première vue facile. Ces données sont accessiblesà travers la plateforme Humanitarian Data Exchange (HDX) qui semble avoir été mise au point par OCHA. Cette plateforme HDX ne comporte pas seulement des données mais aussi différents outils de visualisation ou d’analyse.

Cela pourrait donc constituer une source majeure de données pour l’école d’été CIST 2022-2023, mais il faut en faire un inventaire précis. L’objet de cette note est de procéder à quelques explorations préliminaires en prenant comme cible le Bénin.

Si nous effectuons une requête Benin sur le site de données HDX ce qui conduit à une liste de 142 sources de données provenant soit de OCHA-ROWCA, soit d’autres agences des Nations-Unies (FAO, WorldBank, WolrdPop, …). On trouve encore plus de sources (environ 200) si on utilise le menu de recherche par pays car le moteur ajoute dans ce cas des bases de données transnationales.

Le HDX est donc un véritable hub de concentration des données les plus récentes sur les pays qui nousintéressent pour l’école d’été, et pas seulement le Benin.

knitr::include_graphics("data/figures/HDX.png")

Comme on ne peut tout explorer d’un coup, nous commençons par les données qui viennet à proprement parler d’OCHA-ROWCA.

Dans les sections suivantes nous proposons de rassembler des tableaux de données harmonisées en vue de l’école d’été CIST 2022. Nous privilégions l’exemple du Bénin qui sera le lieu de la formation. Chaque tableau de données fait l’objet d’un exemple rapide d’application de méthodes statistiques ou carographiques afin de vérifier la fiabilité et la qualité des données

3.2 Limites administratives

3.2.1 Métadonnées

Le dossier des limites administratives du Benin fourni par HDX (cliquer ici) est accessible au format shapefile et comporte différentes couches correspondant aux différents niveaux administratifs. Sa datation laisse augurer qu’il s’agit de la situation la plus récente: les fichiers datent de juin 2021 mais leur nom comporte la séquence “20190816” qui doit plutôt correspondre au 16 Août 2019. En pratique, les limites sont celles du recensement de 2013.

N.B. nous avons toutefois découvert une erreur importante dans le code de la commune d’Adjara qui est noté BJ0101 alors que le code exact est BJ1001. Nous avons également constaté une variabilité des noms de vraiables désignant les codes dans la base OCHA. C’est pourquoi nous avons préféré harmoniser les fichiers.

adm0<-st_read("data/admin/ben_adm0.shp",quiet = TRUE)
  adm1<-st_read("data/admin/ben_adm1.shp",quiet = TRUE)
  adm2<-st_read("data/admin/ben_adm2.dbf", quiet = TRUE)

3.2.2 Exemple d’application

Pour vérifier la qualité des fichiers nous effectuons un calage sur un fonds de carte OpenStreetMap à l’aide du package leaflet :

map <- leaflet() %>% 
              addTiles() %>%
              setView(lat = 8, lng=2.1, zoom = 6) %>%
                addPolygons(data = adm2,
                            label = ~ADM2_NAME,
                            highlightOptions = TRUE,
                             fill = TRUE,
                             color = "orange",
                             weight = 3 ) %>%
               addPolygons(data = adm1,
                          fill = FALSE,
                          color = "red",
                          weight = 2) %>%
               addPolygons(data = adm0,
                          fill = FALSE,
                          color = "black",
                          weight = 1) 
    
  
  map

Superposition des fonds de carte sur OSM

3.3 Pyramide des âges 2019

3.3.1 Métadonnées

Un dossier du HDX accessible ici fournit les populations par âge et par sexe en 2019 au niveau des communes, départements ou pays entier. Il s’agit naturellement d’estimations mais les données n’en sont pas moins très utile pour toute analyse travaillant sur les situations présentes. Les classes d’âges sont suffisamment détaillées (tranches de 5 ans de 0 à 80 ans) pour procéder à des analyses démographiques intéressantes.

3.3.2 Exemple d’application

A titre de vérification, on réalise une analyse factorielle des correspondances AFC sur la pyramide des âges des 77 communes

don<-read.table("data/pop2019/ben_adm2_pop.csv", sep=";",header=T, encoding = "UTF-8")
  don2<-don[,c(11:44)]
  row.names(don2)<-don$ADM2_PCODE
  
  afc<-CA(don2,ncp = 10,graph = FALSE)
  library(explor)
  res <- explor::prepare_results(afc)
  explor::CA_var_plot(res, xax = 1, yax = 2, lev_sup = FALSE, var_sup = FALSE,
      var_sup_choice = , var_hide = "Row", var_lab_min_contrib = 0, col_var = "Position",
      symbol_var = NULL, size_var = NULL, size_range = c(10, 300), labels_size = 10,
      point_size = 56, transitions = TRUE, labels_positions = "auto", xlim = c(-0.234,
          0.332), ylim = c(-0.187, 0.38))

AFC sur les structures par âge et sexe des communes du Benin en 2019 (Source : OCHA-ROWCA)

On enchaîne par une CAH (sur les axes de l’AFC) :

cah <- HCPC(afc,nb.clust = 5,graph = FALSE)
  plot.HCPC(cah,choice = "tree")
Type de structures par âge et sexe des communes du Benin en 2019 (source : OCHA)

Type de structures par âge et sexe des communes du Benin en 2019 (source : OCHA)

plot.HCPC(cah,choice = "map", label.cex=0.3)
Position des classes de la CAH sur les axes de l'AFC (source : OCHA)

Position des classes de la CAH sur les axes de l’AFC (source : OCHA)

Il reste à visualiser les classes. On crée pour cela une fonction assez complexe de comparaison entre le profil de celles-ci et le profil du Bénin, inspirée d’un programme trouvé sur un forum du CIRAD

Profils moyens des classes (source : OCHA)

Profils moyens des classes (source : OCHA)

  • la classe 1 : correspond à une population beaucoup plus jeune que la moyenne du pays avec un excédent de 0-9 ans et un déficit de 30 ans et plus. C’est la partie du pays où la transition démographique semble être la plus tardive
  • la classe 2 : présente également un profil de population jeune avec un excédent de 5-14 ans, mais se caractérise par une réduction relative des 0-4 ans qui témoigne soit d’une baisse de la fécondité, soit d’un exode rural des jeunes ménages avec enfants.
  • la classe 3 correspond au profil moyen du pays.
  • la classe 4 est caractérisée par un excédent de personnes âgées et un déficit à la fois de jeunes enfants et de jeunes adultes. Elle correspond à des zones de vieillissment relatif de la population, soit sous l’effet de l’exode rural, soit en raison d’une baisse de la fécondité.
  • la classe 5 est caractérise par une forte surreprésentation des jeunes adultes et des persones âgées, associée à un net déficit des enfants jeunes de 0 à 14 ans. Il s’agit vraisemblablement de zones urbaines caractérisées par une fécodité plus tardive et une meilleure espérance de vie.

On peut visualiser la distribution de ces cinq classes sur une carte :

Distribution spatiale des classes (source : OCHA)

Distribution spatiale des classes (source : OCHA)

3.4 Alphabetisation et langues (2013)

3.4.1 Métadonnées

Ce fichier qui est accessible sur HDX en suivant ce lien a été mis à disposition par l’organisation Translators without borders mais l’analyse des métadonnées montre qu’il s’agit en fait de données extraites du recensement géénral de population du Bénin de 2013 :

Created by Translators without Borders, Uploaded on Jun-21, Version 1

Notes and caveats

  • All data is drawn from government survey results and is subject to any associated limitations or distortions present in the source data.
  • Literacy was measured as the ability to read and write in any language. Languages with population shares less than 0.01% or under 1,000 people (whichever is greater) have been aggregated into the “Other” field.
  • All decimal values have been rounded to a maximum of 3 decimal places. As a result language shares may not total 100%.
  • Empty values represent non-existent data and should not be treated as zero values. Data is available under an Attribution NonCommercial ShareAlike 4.0 International license (CC BY NC SA 4.0)

Copyright and terms of use

  • You are free to share and adapt the data subject to requirements for attribution and non commercial use.
  • Any derivative work must be distributed under the same license as the original. Full terms at https://creativecommons.org/licenses/by nc sa/4.0/

Les fichiers fournies comportaient de petites erreurs ou des difficultés de formatage rendant compliquée leur importation dans R. Il a donc fallu les corriger un peu avant de les utiliser. Une fois cela effectué, on a vérifié que les données pouvaient se cartographie en effectuant une jointure avec le fichier administratif au niveau communal.

N.B. nous avons retrouvé l’erreur dans le code de la commune d’Adjara qui est noté BJ0101 alors que le code exact est BJ1001. Nous avons donc reconstruit les fichiers en les harmonisant avec les fonds de carte.

3.4.2 Exemple d’application

Le fichier comporte un ensemble de variables concernant le niveau d’alphabétisation des hommes et des femmes de plus de 6 ans en 2013. Voici à titre indicatif les valeurs par département et pour l’ensemble du pays :

dep<-read.table("data/langues/ben_lang_adm1_correct.csv", sep=";",header =TRUE, dec=",")
  dep<-dep[,c(1:2,77:82)]
  kable(dep)
ADM1_CODE ADM1_NAME pop_total pop_male pop_female literacy_all literacy_male literacy_female
BJ01 Alibori 872500 435070 437430 0.2411522 0.2800548 0.2028016
BJ02 Atacora 786350 385520 400830 0.3697587 0.4450240 0.2987815
BJ03 Atlantique 1417420 699260 718160 0.6529884 0.7560399 0.5546867
BJ04 Borgou 1228980 611910 617070 0.4172042 0.4703573 0.3647056
BJ05 Collines 717580 355000 362580 0.5494504 0.6415866 0.4607534
BJ06 Couffo 747530 347990 399540 0.5146621 0.6490924 0.4019793
BJ07 Donga 547790 271290 276500 0.4165344 0.4913587 0.3443179
BJ08 Littoral 683970 328190 355780 0.7939093 0.8747998 0.7209568
BJ09 Mono 506620 246530 260090 0.6348241 0.7547283 0.5222640
BJ10 Oueme 1103370 536610 566760 0.6400245 0.7459637 0.5422918
BJ11 Plateau 627710 302360 325350 0.4621522 0.5612206 0.3719805
BJ12 Zou 857110 411050 446060 0.5354925 0.6407501 0.4412843

Ce tableau se prêtera particulièrement bien à des exercices d’initiation à la statistiques et la cartographie sous R puisqu’il comporte à la fois des stocks (population par sexe), des taux (% de population alphabétisée par sexe) et une possibilité de les combiner pour retrouver le nombre de personnes alphabétisée. Il s’inscrit par ailleurs pleinement dans la thématique des inégalités territoriales.

On peut à titre d’exemple construire une cartographie du niveau d’alphabétisation des hommes et des femmes par département du Bénin en 2013 (carte choroplèthe) et superposer par dessus les effectifs correspondants d’hommes et de femmes alphabétisés.

Alphabétisation des hommes et femmes du Bénin par département en 2013 (source : RP Bénin 2013, via OCHA)

Alphabétisation des hommes et femmes du Bénin par département en 2013 (source : RP Bénin 2013, via OCHA)

On voit apparaître alors une assez forte corrrélation entre les deux distributions, même si les femmes sont moins alphabétisés que les hommes. Ce qui suggère un exercice d’apprentissage de la régression linéaire entre les deux variables.

mod.reg <- lm(dep$literacy_female~dep$literacy_male)
  #stargazer(mod.reg,type = "html")
  ggplot(data = dep) + aes(x=100*literacy_male, y = 100*literacy_female, label = ADM1_NAME) +
                       geom_point(col="red") + 
                       geom_smooth(method="lm") +
                       geom_text(cex=3, nudge_y=2) +
                       scale_x_continuous("Taux d'alphabétisation des hommes (%)") +
                       scale_y_continuous("Taux d'alphabétisation des femmes (%)") +
                       ggtitle("Inégalités d'alphabétisation des départements du Benin par sexe",
                               subtitle = "Source : RP 2013 via OCHA")

Les résultats mettent en évidence le fait que l’alphabétisation des femmes au Bénin en 2013 est en moyenne inférieure de 20% à celle des hommes (le paramètre b de la régression est non significatif) et la relation est statistiquement très significative (r2 = 93 %, p < 0.001). Il existe notamment des résidus c’est-à-dire des départements où la scolarisation des femmes estimée en fonction de celle des hommes est plus forte que prévue (Alibori, Borgou, Littoral) ou plus faible que prévue (Plateau, Couffo, Mono).

Le même modèle appliqué au niveau des communes permettrait une analyse plus fine des résultats à travers une carte des résidus. On pourrait aussi imaginer une analyse mutiscalaire croisant les écarts des communes à la moyenne du pays, de leur département et des communes voisines à l’aide du package mta. Bref, il s’agit sans nul doute d’un excellent exemple pédagogique pour l’école d’été CIST2022.

3.5 Prix de la nourriture sur les marchés (2002-2021)

3.5.1 Métadonnées

Ce fichier qui est accessible sur HDX en suivant ce lien a été mis à disposition par World Food Programme. Cette base qui semble avoir été interrompue présente l’avantage d’offrir une grande profondeur historique et une résolution spatialetrès précise puisque les prix sont localisés par marché et par semaine.

This no longer updated dataset contains Global Food Prices data from the World Food Programme covering foods such as maize, rice, beans, fish, and sugar for 76 countries and some 1,500 markets. It is updated weekly but contains to a large extent monthly data. The data goes back as far as 1992 for a few countries, although many countries started reporting from 2003 or thereafter.

Le fichier contenant les coordonnées de latitude et de longitude des marchés, il peut théoriquement être cartographié facilement à l’aide d’un outil de cartographie dynamique tel que mapview. Mais il peut aussi faire l’objet de multiples agrégations spatiales, temporelles, par produit. Reste évidemment à en apprécier la qualité …

Noter qu’il est nécessaire d’éliminer la seconde ligne du tableau initial sous excel pour pouvoir ensuite charger correctement le fichier. Il est également préférable de lire le fichier avec la fonction fread() du package data.table faut de quoi on peut avoir des problèmes d’encodage plus ou moins délicats à résoudre.

dt<-fread("data/foodprices/wfp_food_prices_ben.csv")
  kable(head(dt))
date admin1 admin2 market latitude longitude category commodity unit priceflag pricetype currency price usdprice
2002-01-15 Alibori Malanville Malanville (CBM) 11.86 3.38 cereals and tubers Maize KG actual Wholesale XOF 145.00 0.2503
2002-01-15 Alibori Malanville Malanville (CBM) 11.86 3.38 cereals and tubers Millet KG actual Wholesale XOF 145.00 0.2503
2002-01-15 Alibori Malanville Malanville (CBM) 11.86 3.38 cereals and tubers Rice (imported) KG actual Wholesale XOF 293.33 0.5064
2002-01-15 Alibori Malanville Malanville (CBM) 11.86 3.38 cereals and tubers Sorghum KG actual Wholesale XOF 141.67 0.2446
2003-01-15 Alibori Malanville Malanville (CBM) 11.86 3.38 cereals and tubers Maize KG actual Wholesale XOF 106.00 0.1830
2003-01-15 Alibori Malanville Malanville (CBM) 11.86 3.38 cereals and tubers Millet KG actual Wholesale XOF 116.00 0.2002

On peut assez facilement spatialiser le fichier qui comporte en tout 51 marchés assez bien répartiis sur l’ensemble du pays comme le montre la carte ci-desous :

loc<-dt %>% filter(duplicated(market)==FALSE) %>% select(c(2,3,4,5,6)) %>% arrange (admin1,admin2, market)
  markets <- st_as_sf(loc, coords = c("longitude","latitude"))
  st_crs(markets)<- 4326
  #mapview(markets)
  
  
  adm0<-st_read("data/admin/ben_adm0.shp",quiet = TRUE)
  adm1<-st_read("data/admin/ben_adm1.shp",quiet = TRUE)
  adm2<-st_read("data/admin/ben_adm2.shp", quiet = TRUE)
  
  par(mar=c(0,0,0,0))
  plot(adm2$geometry,col="gray90", border = "gray20",lwd=0.5)
  plot(adm1$geometry,col=NA, border = "black",lwd=1, add=TRUE)
  plot(adm0$geometry,col=NA, border = "black",lwd=2, add=TRUE)
  plot(markets$geometry,col="red", bg="yellow",pch=21,add=TRUE,cex=0.7)

3.5.2 Exemple d’application

Cette base de données multidimensionelle peut servir d’exemple pour de nombreux exercices d’apprentissage de la statistique et de la cartographie sous R. Le prix des produits alimnentaires dépend en effet :

  • du type de produit (QUOI) ?
  • de la date d’achat (QUAND) ?
  • du lieu d’achat (OU ?)

Pour chacune des dimensions, on peut réaliser des procédures d’agrégation des valeurs observées ou d’estimation des valeurs manquantes. A titre d’exemple, on extrait de la base de donnée l’ensemble des lignes qui concernent le riz

riz<- dt %>% filter(substr(commodity,1,4)=="Rice") %>% 
                 select(when = date, 
                        where1 = admin1,
                        where2 = admin2,
                        where3 = market,
                        what = commodity,
                        cost = usdprice )
  kable(head(riz))
when where1 where2 where3 what cost
2002-01-15 Alibori Malanville Malanville (CBM) Rice (imported) 0.5064
2003-01-15 Alibori Malanville Malanville (CBM) Rice (imported) 0.4972
2003-02-15 Alibori Malanville Malanville (CBM) Rice (imported) 0.5136
2003-03-15 Alibori Malanville Malanville (CBM) Rice (imported) 0.4877
2003-04-15 Alibori Malanville Malanville (CBM) Rice (imported) 0.4963
2003-05-15 Alibori Malanville Malanville (CBM) Rice (imported) 0.5006

On peut calculer le prix median du riz sur l’ensemble des points de sondage disponibles en fonction de la catégorie de riz :

tab<- riz %>% group_by(when, what) %>% summarize(median_cost=median(cost), nbobs = n())
  ggplot(tab) + aes(x=when,y=median_cost, color=what, size=nbobs) + geom_point() + 
    scale_x_continuous("Données de prix mensuelles") + 
    scale_y_continuous("Prix médian d'un kilog de riz (en $)")+
    ggtitle(label = "Estimation des prix du riz au Bénin",subtitle = "Source : World Food Program (via HDX)")

Le graphique montre plusieurs choses :

  • les données les plus complètes concernent le riz importé qui augmente fortement au moment de la crise de 2007-2008
  • la spatialisation des données n’est pas vraiment possible avant 2015 voire 2018
  • il y a de fortes différences de prix selon le type de riz

Effectuons maintenant un zoom sur le priz médian du riz importé en 2020-2021 par régions :

tab <- riz %>% filter(when >=as.Date("2020-04-01"), what =="Rice (imported)") %>%
                 group_by(when,where1) %>%
                 summarize(median_cost=median(cost))
  ggplot(tab) + aes(x=when,y=where1, fill=median_cost) +geom_tile() + 
    scale_fill_gradient(low="white", high = "red")+
      scale_x_date("Médiane des valeurs observées par mois") + 
    scale_y_discrete("Département")+
    ggtitle(label = "Prix du riz importé sur les marchés du Benin ($/kg)",subtitle = "Source : World Food Program (via HDX)")

3.6 Villages et localités vers 2015

3.6.1 Métadonnées

Ce fichier accessible en cliquant ici concerne le peuplement, c’est-à-dire apparemment l’inventaire de toutes les localisations avec leur nom et leur position en latitude longitude. Il comporte 6306 entrées. Les fichiers sont datés de 2015.

loc<-st_read("data/settlement/ben_plp_NGA.shp", quiet = TRUE)
  par(mar=c(0,0,0,0))
  plot(adm2$geometry,col="lightyellow", border = "gray20",lwd=0.5)
  plot(loc$geometry,col="red",pch=16,cex=0.2, add=T)
Village et peuplement au Benin vers 2015 (Source : OCHA-ROWCA)

Village et peuplement au Benin vers 2015 (Source : OCHA-ROWCA)

3.6.2 Exemple d’application

A titre de vérification de la précision, nous effectuons une superposition sur le fonds de carte OpenStreetMap pour la commune de Ouidah (code BJ0304 ou BEN003004) ou aura lieu l’école d’été du CIST. En cliquant sur les points onpeut comparer leur nom avec celui des localités indiquées par OSM.

map<-adm2[adm2$admin2Pcod=="BJ0304",]
  map<-st_transform(map,4326)
  
  vil<-loc[loc$RowcaCode2=="BEN003004",]
  vil<-st_transform(vil,4326)
  
  
  map <- leaflet() %>% 
              addTiles() %>%
              setView(lat = 6.4, lng=2.1, zoom = 11) %>%
              addPolygons(data = map,
                          fill = FALSE,
                          color = "red",
                          weight = 2) %>%
               addMarkers(data = vil,
                          label = ~FULL_NAME_)
  
  map

Projection des données OCHA-ROWCA sur Open Street Map (commune de Ouidah

Il y a à l’évidence des décalages … Et le contour de la commune lui-même ne semble pas coller exactement avec celui fourni par OSM. Il faudra vérifier laquelle des deux sources est erronée (à moins que ce ne soient les deux ?). Toutefois, la localisation semble rester approximativement juste …

4 DONNEES GLOBALES (Banque Mondiale)

Nous allons présenter ici deux packages R qui correspondent à des API permettant de télécharger respectivement des données statistiques de la Banque Mondiale et des fonds de carte Natural Earth. Chacune de ces API a été implémentée sous le forme de package R ce qui permet d’extraire facilement les données, dès lors qu’on dispose d’une connexion internet suffisante. Un intérêt évident de cette approche par API est de pouvoir effectuer facilement des requêtes sur n’importe quelle partie du monde et de pouvoir mettra à jour régulièrement les données au fur et à mesure de leur mise à jour.

A titre d’exemple, nous allons montrer comment réaliser une carte des émissions de CO2 par habitant des pays de la CEDEAO en 2018.

4.1 L’API Banque Mondiale

Supposons que l’on souhaite télécharger la population, le PIB et les émisssions de CO2 des pays du monde de 2000 à 2015. Plutôt que d’aller chercher des fichiers sur un site web, nous allons utiliser une API proposée par la Banque Mondiale qui permet de télécharger les données facilement et surtout de les mettre à jour régulièrement. Pour cela on va installer le package R correspondant à l’API wbstats de la Banque mondiale.

https://cran.r-project.org/web/packages/wbstats/vignettes/Using_the_wbstats_package.html

Au moment du chargement du package, il est créé un fichier wb_cachelist qui fournit l’ensemble des donnes disponibles sous la forme d’une liste de tableaux de méta-données.

library("wbstats")
  cat<-wb_cachelist
  str(cat,max.level = 1)
List of 8
   $ countries    : tibble [304 x 18] (S3: tbl_df/tbl/data.frame)
   $ indicators   : tibble [16,649 x 8] (S3: tbl_df/tbl/data.frame)
   $ sources      : tibble [63 x 9] (S3: tbl_df/tbl/data.frame)
   $ topics       : tibble [21 x 3] (S3: tbl_df/tbl/data.frame)
   $ regions      : tibble [48 x 4] (S3: tbl_df/tbl/data.frame)
   $ income_levels: tibble [7 x 3] (S3: tbl_df/tbl/data.frame)
   $ lending_types: tibble [4 x 3] (S3: tbl_df/tbl/data.frame)
   $ languages    : tibble [23 x 3] (S3: tbl_df/tbl/data.frame)

4.1.1 Le tableau “countries”

Il fournit des renseignements de base sur les différents pays, leurs codes, etc.

str(cat$countries)
tibble [304 x 18] (S3: tbl_df/tbl/data.frame)
   $ iso3c             : chr [1:304] "ABW" "AFG" "AFR" "AGO" ...
   $ iso2c             : chr [1:304] "AW" "AF" "A9" "AO" ...
   $ country           : chr [1:304] "Aruba" "Afghanistan" "Africa" "Angola" ...
   $ capital_city      : chr [1:304] "Oranjestad" "Kabul" NA "Luanda" ...
   $ longitude         : num [1:304] -70 69.2 NA 13.2 19.8 ...
   $ latitude          : num [1:304] 12.52 34.52 NA -8.81 41.33 ...
   $ region_iso3c      : chr [1:304] "LCN" "SAS" NA "SSF" ...
   $ region_iso2c      : chr [1:304] "ZJ" "8S" NA "ZG" ...
   $ region            : chr [1:304] "Latin America & Caribbean" "South Asia" "Aggregates" "Sub-Saharan Africa" ...
   $ admin_region_iso3c: chr [1:304] NA "SAS" NA "SSA" ...
   $ admin_region_iso2c: chr [1:304] NA "8S" NA "ZF" ...
   $ admin_region      : chr [1:304] NA "South Asia" NA "Sub-Saharan Africa (excluding high income)" ...
   $ income_level_iso3c: chr [1:304] "HIC" "LIC" NA "LMC" ...
   $ income_level_iso2c: chr [1:304] "XD" "XM" NA "XN" ...
   $ income_level      : chr [1:304] "High income" "Low income" "Aggregates" "Lower middle income" ...
   $ lending_type_iso3c: chr [1:304] "LNX" "IDX" NA "IBD" ...
   $ lending_type_iso2c: chr [1:304] "XX" "XI" NA "XF" ...
   $ lending_type      : chr [1:304] "Not classified" "IDA" "Aggregates" "IBRD" ...

Le tableau comporte 304 observation et il mélange des pays (France), des fragments de pays (Réunion) et des agrégats de pays (Europe). Il faudra donc bien faire attention lors de l’extraction à réfléchir à ce que l’on souhaite utiliser. Par exemple, si l’on veut juste les pays :

## Programme en langage R_base
  # pays<-cat$countries[cat$countries$income_level!="Aggregates",c("iso3c", "country","capital_city","longitude","latitude", "region","income_level")]
  
  
  ## Programme en langage dplyr
  
  pays <- cat$countries %>% 
            filter(income_level !="Aggregates") %>%
            select(iso3c,country, capital_city, latitude, longitude, region, income_level)
  
  
  kable(head(pays))
iso3c country capital_city latitude longitude region income_level
ABW Aruba Oranjestad 12.51670 -70.0167 Latin America & Caribbean High income
AFG Afghanistan Kabul 34.52280 69.1761 South Asia Low income
AGO Angola Luanda -8.81155 13.2420 Sub-Saharan Africa Lower middle income
ALB Albania Tirane 41.33170 19.8172 Europe & Central Asia Upper middle income
AND Andorra Andorra la Vella 42.50750 1.5218 Europe & Central Asia High income
ARE United Arab Emirates Abu Dhabi 24.47640 54.3705 Middle East & North Africa High income

4.1.2 Le tableau indicators

Il comporte pas loin de 17000 variables … Autant dire qu’il est difficile de l’explorer facilement si l’on ne sait pas ce que l’on cherche.

indic<-cat$indicators
  dim(indic)
[1] 16649     8
kable(head(indic))
indicator_id indicator unit indicator_desc source_org topics source_id source
1.0.HCount.1.90usd Poverty Headcount ($1.90 a day) NA The poverty headcount index measures the proportion of the population with daily per capita income (in 2011 PPP) below the poverty line. LAC Equity Lab tabulations of SEDLAC (CEDLAS and the World Bank). 11 , Poverty 37 LAC Equity Lab
1.0.HCount.2.5usd Poverty Headcount ($2.50 a day) NA The poverty headcount index measures the proportion of the population with daily per capita income (in 2005 PPP) below the poverty line. LAC Equity Lab tabulations of SEDLAC (CEDLAS and the World Bank). 11 , Poverty 37 LAC Equity Lab
1.0.HCount.Mid10to50 Middle Class ($10-50 a day) Headcount NA The poverty headcount index measures the proportion of the population with daily per capita income (in 2005 PPP) below the poverty line. LAC Equity Lab tabulations of SEDLAC (CEDLAS and the World Bank). 11 , Poverty 37 LAC Equity Lab
1.0.HCount.Ofcl Official Moderate Poverty Rate-National NA The poverty headcount index measures the proportion of the population with daily per capita income below the official poverty line developed by each country. LAC Equity Lab tabulations of data from National Statistical Offices. 11 , Poverty 37 LAC Equity Lab
1.0.HCount.Poor4uds Poverty Headcount ($4 a day) NA The poverty headcount index measures the proportion of the population with daily per capita income (in 2005 PPP) below the poverty line. LAC Equity Lab tabulations of SEDLAC (CEDLAS and the World Bank). 11 , Poverty 37 LAC Equity Lab
1.0.HCount.Vul4to10 Vulnerable ($4-10 a day) Headcount NA The poverty headcount index measures the proportion of the population with daily per capita income (in 2005 PPP) below the poverty line. LAC Equity Lab tabulations of SEDLAC (CEDLAS and the World Bank). 11 , Poverty 37 LAC Equity Lab

4.1.2.1 Recherche du code d’un indicateur

Supposons qu’on recherche les données récentes sur les émissions de CO2. On va utiliser le mot-clé CO2 pour rechercher les variables correspondantes dans le catalogue à l’aide de la fonction wbsearch, ce qui donne 45 réponses

vars <- wbsearch(pattern = "CO2",fields="indicator")
  kable(head(vars))
indicatorID indicator
5294 EN.ATM.CO2E.CP.KT CO2 emissions from cement production (thousand metric tons)
5295 EN.ATM.CO2E.EG.ZS CO2 intensity (kg per kg of oil equivalent energy use)
5296 EN.ATM.CO2E.FF.KT CO2 emissions from fossil-fuels, total (thousand metric tons)
5297 EN.ATM.CO2E.FF.ZS CO2 emissions from fossil-fuels (% of total)
5298 EN.ATM.CO2E.GDP CO2 emissions, industrial (kg per 1987 US$ of GDP)
5299 EN.ATM.CO2E.GF.KT CO2 emissions from gaseous fuel consumption (kt)

On va finalement trouver le code de la variable recherchée

  • EN.ATM.CO2E.KT : émissions de CO2 en kilotonnes

Les deux autres variables dont nous avons besoin ont pour code

  • NY.GDP.MKTP.CD : PIB en parités de pouvoir d’achat
  • SP.POP.TOTL : Population totale

4.1.2.2 Extraction des métadonnées

Une fois que l’on pense connaître le code de nos variables, on peut extraire les métadonnés pour vérifier qu’il s’agit bien de ce que l’on cherche, quelle est la source exacte, quelle est l’unité de mesure …

# Programme R-base
  meta<-cat$indicators[cat$indicators$indicator_id %in% c("SP.POP.TOTL","NY.GDP.MKTP.CD","EN.ATM.CO2E.KT"),]
  
  # Programme dplyr
  meta<-cat$indicators %>%
          filter(indicator_id %in% c("SP.POP.TOTL","NY.GDP.MKTP.CD","EN.ATM.CO2E.KT"))
  
  kable(meta)
indicator_id indicator unit indicator_desc source_org topics source_id source
EN.ATM.CO2E.KT CO2 emissions (kt) NA Carbon dioxide emissions are those stemming from the burning of fossil fuels and the manufacture of cement. They include carbon dioxide produced during consumption of solid, liquid, and gas fuels and gas flaring. Carbon Dioxide Information Analysis Center, Environmental Sciences Division, Oak Ridge National Laboratory, Tennessee, United States. 19 , 6 , Climate Change, Environment 2 World Development Indicators
NY.GDP.MKTP.CD GDP (current US$) NA GDP at purchaser’s prices is the sum of gross value added by all resident producers in the economy plus any product taxes and minus any subsidies not included in the value of the products. It is calculated without making deductions for depreciation of fabricated assets or for depletion and degradation of natural resources. Data are in current U.S. dollars. Dollar figures for GDP are converted from domestic currencies using single year official exchange rates. For a few countries where the official exchange rate does not reflect the rate effectively applied to actual foreign exchange transactions, an alternative conversion factor is used. World Bank national accounts data, and OECD National Accounts data files. 3 , Economy & Growth 2 World Development Indicators
SP.POP.TOTL Population, total NA Total population is based on the de facto definition of population, which counts all residents regardless of legal status or citizenship. The values shown are midyear estimates. (1) United Nations Population Division. World Population Prospects: 2019 Revision. (2) Census reports and other statistical publications from national statistical offices, (3) Eurostat: Demographic Statistics, (4) United Nations Statistical Division. Population and Vital Statistics Reprot (various years), (5) U.S. Census Bureau: International Database, and (6) Secretariat of the Pacific Community: Statistics and Demography Programme. 19 , 8 , Climate Change, Health 2 World Development Indicators

4.1.3 L’extraction des données

Elle se fait à l’aide de la fonction wb_data qui comporte de nombreuses options.

4.1.3.1 le paramètre indicator =

Ce paramètre permet de choisir les indicateurs à collecter, ce qui suppose que l’on connaisse leur code. Par exemple, supposons que l’on veuille extraire la population et le PIB pour pouvoir calculer ensuite le PIB par habitant

df   <- wb_data(indicator  = c("NY.GDP.MKTP.CD","SP.POP.TOTL", "EN.ATM.CO2E.KT"))
  • commentaire : Nous obtenons un tableau très grand (> 13000 lignes) qui comporte les valeurs pour toutes les dates disponibles depuis 1960 et pour tous les pays, même si les valeurs sont souvent manquantes.

4.1.4 le choix d’une période de temps

4.1.4.1 les paramètres startdate = et startdate =

Ces deux paramètres permettent de choisir une plage de temps. On peut par exemple décider de ne collecter que les données relatives aux années 2017, 2018 et 2019

df   <- wb_data(indicator  = c("NY.GDP.MKTP.CD","SP.POP.TOTL", "EN.ATM.CO2E.KT"),
                  start_date = 2017,
                  end_date = 2019)
  dim(df)
[1] 651   7
kable(head(df,6))
iso2c iso3c country date EN.ATM.CO2E.KT NY.GDP.MKTP.CD SP.POP.TOTL
AW ABW Aruba 2017 NA 3092430168 105361
AW ABW Aruba 2018 NA 3202188607 105846
AW ABW Aruba 2019 NA NA 106310
AF AFG Afghanistan 2017 7380 18753469630 36296111
AF AFG Afghanistan 2018 7440 18053228579 37171922
AF AFG Afghanistan 2019 NA 18799450743 38041757
  • commentaire : Le tableau ne comporte donc plus que 651 lignes correspondant aux trois dates pour les différents pays du Monde.

4.1.4.2 Le paramètre mrv (most recent value)

Lorsque l’on souhaite juste obtenir les données les plus récentes, on peut remplacer les paramètres startdate = et startdate = par le paramètre mrv = suivit d’un chiffre indiquant le nombre d’années que l’on souhaite à partir de la date la plus récente. Avec mrv=1 on récupère uniquement la dernière année disponible pour au moins l’une des variables.

df   <- wb_data(indicator  = c("NY.GDP.MKTP.CD","SP.POP.TOTL","EN.ATM.CO2E.KT"),
                  mrv = 1)
  dim(df)
[1] 434   7
kable(head(df,6))
iso2c iso3c country date EN.ATM.CO2E.KT NY.GDP.MKTP.CD SP.POP.TOTL
AW ABW Aruba 2018 NA NA NA
AW ABW Aruba 2020 NA NA 106766
AF AFG Afghanistan 2018 7440 NA NA
AF AFG Afghanistan 2020 NA 20116137326 38928341
AO AGO Angola 2018 27340 NA NA
AO AGO Angola 2020 NA 58375976293 32866268

L’inconvénient de cette méthode est que cela peut aboutir à un grand nombre de valeurs manquantes si l’une des variables recherchée n’a pas été mise à jour. Il est donc préférable de sélectioner une période plus longue mrv=5 et de faire ensuite soi-même le tri

4.1.5 Le choix des unités géographiques

Le paramètre country = permet de choisir les entités spatiales à collecter, soit sous forme de liste de codes, soit à l’aide de valeurs spéciales. Par défaut; il renvoie la liste de tous les pays, mais on peut se limiter à quelques uns seulement à l’aide de leur nom en anglais (risqué …) ou de leur code ISO3 (plus sûr)

4.1.5.1 sélection de pays

df   <- wb_data(indicator  = c("NY.GDP.MKTP.CD","SP.POP.TOTL","EN.ATM.CO2E.KT"),
                  start_date = 2018,
                  end_date = 2018,
                  country = c("BEN","TGO"))
  df$GDP.per.capita <- round(df$NY.GDP.MKTP.CD / df$SP.POP.TOTL,0)
  df$CO2.per.capita <- round(1000*df$EN.ATM.CO2E.KT / df$SP.POP.TOTL,2)
  kable(head(df,6))
iso2c iso3c country date EN.ATM.CO2E.KT NY.GDP.MKTP.CD SP.POP.TOTL GDP.per.capita CO2.per.capita
BJ BEN Benin 2018 7910 14262407012 11485035 1242 0.69
TG TGO Togo 2018 2260 7112200725 7889095 902 0.29
  • commentaire : Il est donc facile de travailler sur un petit nombre de pays que l’on souhaite comparer.

4.1.5.2 Opérateurs spéciaux

Il existe un certain nombre de paramètres spéciaux que l’on peut utiliser à la place de la liste des pays :

  • “countries_only” (Default)
  • “regions_only”
  • “admin_regions_only”
  • “income_levels_only”
  • “aggregates_only”
  • “all”
df   <- wb_data(indicator  = c("NY.GDP.MKTP.CD","SP.POP.TOTL","EN.ATM.CO2E.KT"),
                  start_date = 2018,
                  end_date = 2018,
                  country = "regions_only")
  df$GDP.per.capita <- round(df$NY.GDP.MKTP.CD / df$SP.POP.TOTL,0)
  df$CO2.per.capita <- round(1000*df$EN.ATM.CO2E.KT / df$SP.POP.TOTL,2)
  kable(df)
iso2c iso3c country date EN.ATM.CO2E.KT NY.GDP.MKTP.CD SP.POP.TOTL GDP.per.capita CO2.per.capita
Z4 EAS East Asia & Pacific 2018 14810056.9 26416317598842 2338223462 11298 6.33
Z7 ECS Europe & Central Asia 2018 6142069.3 23217309660002 918031055 25290 6.69
ZJ LCN Latin America & Caribbean 2018 1689187.4 5703878670405 640483586 8906 2.64
ZQ MEA Middle East & North Africa 2018 2531611.8 3356566979106 448974232 7476 5.64
XU NAC North America 2018 5558099.3 22340938595870 363967296 61382 15.27
8S SAS South Asia 2018 2770040.0 3436593922938 1814455018 1894 1.53
ZG SSF Sub-Saharan Africa 2018 823424.7 1753414899266 1078319512 1626 0.76
  • commentaire : Nous avons extrait les données par grandes régions du Monde pour l’année 2018

4.1.6 Le format de sortie du tableau

Il existe deux façons d’extraire un tableau comprenant plusieurs variables ou plusieurs dates, selon que l’on veut un tableau large (wide) ou étroit. On peut régler la sortie à l’aide du paramètre return_wide qui est TRUE par défaut mais que l’on peut régler sur FALSE.

4.1.6.1 return_wide = FALSE

df   <- wb_data(indicator  = c("NY.GDP.MKTP.CD","SP.POP.TOTL","EN.ATM.CO2E.KT"),
                  return_wide = TRUE,
                  start_date = 2017,
                  end_date = 2018,
                  country = c("BEN","TGO"))
  df
# A tibble: 4 x 7
    iso2c iso3c country  date EN.ATM.CO2E.KT NY.GDP.MKTP.CD SP.POP.TOTL
    <chr> <chr> <chr>   <dbl>          <dbl>          <dbl>       <dbl>
  1 BJ    BEN   Benin    2017           7360   12701654743.    11175192
  2 BJ    BEN   Benin    2018           7910   14262407012.    11485035
  3 TG    TGO   Togo     2017           2070    6395472574.     7698476
  4 TG    TGO   Togo     2018           2260    7112200725.     7889095

4.1.6.2 return_wide = FALSE

df   <- wb_data(indicator  = c("NY.GDP.MKTP.CD","SP.POP.TOTL","EN.ATM.CO2E.KT"),
                  return_wide = FALSE,
                  start_date = 2017,
                  end_date = 2018,
                  country = c("BEN","TGO"))
  df[,1:7]
# A tibble: 12 x 7
     indicator_id   indicator          iso2c iso3c country  date        value
     <chr>          <chr>              <chr> <chr> <chr>   <dbl>        <dbl>
   1 NY.GDP.MKTP.CD GDP (current US$)  BJ    BEN   Benin    2018 14262407012.
   2 NY.GDP.MKTP.CD GDP (current US$)  BJ    BEN   Benin    2017 12701654743.
   3 NY.GDP.MKTP.CD GDP (current US$)  TG    TGO   Togo     2018  7112200725.
   4 NY.GDP.MKTP.CD GDP (current US$)  TG    TGO   Togo     2017  6395472574.
   5 SP.POP.TOTL    Population, total  BJ    BEN   Benin    2018    11485035 
   6 SP.POP.TOTL    Population, total  BJ    BEN   Benin    2017    11175192 
   7 SP.POP.TOTL    Population, total  TG    TGO   Togo     2018     7889095 
   8 SP.POP.TOTL    Population, total  TG    TGO   Togo     2017     7698476 
   9 EN.ATM.CO2E.KT CO2 emissions (kt) BJ    BEN   Benin    2018        7910 
  10 EN.ATM.CO2E.KT CO2 emissions (kt) BJ    BEN   Benin    2017        7360 
  11 EN.ATM.CO2E.KT CO2 emissions (kt) TG    TGO   Togo     2018        2260 
  12 EN.ATM.CO2E.KT CO2 emissions (kt) TG    TGO   Togo     2017        2070 

4.2 L’API Natural Earth

4.2.1 Natural Earth

Nous allons ici utiliser le fonds de carte Natural Earth qui est un fonds de carte libre de droit et mis à jour régulièrement. Le site web du projet se situe à l’adresse suivante :

https://www.naturalearthdata.com/

Il indique ses objectifs comme suit :

“Natural Earth is a public domain map dataset available at 1:10m, 1:50m, and 1:110 million scales. Featuring tightly integrated vector and raster data, with Natural Earth you can make a variety of visually pleasing, well-crafted maps with cartography or GIS software.[…] Natural Earth was built through a collaboration of many volunteers and is supported by NACIS (North American Cartographic Information Society), and is free for use in any type of project (see our Terms of Use page for more information).”

On peut télécharger les différents fonds de carte sur le site web, mais dans une perspective de mise à jour automatique régulière du fonds de carte il est plus pertinent d’utiliser l’API rnaturalearthqui permet d’accéder directement à la plupart des fonds de carte avec juste quelques lignes de code. Il suffit pour cela de commencer par installer et charger le package.

library("rnaturalearth")
  library("rnaturalearthdata")

4.2.2 le fonds de carte countries110 (175 unités)

On va télécharger tout d’abord le fonds de carte des pays du Monde avec une forte généralisation des contours countries110 et le transformer en objet de type spatial feature du package sf du package avant de le visualiser et d’ examiner le nombre d’unités

map<-st_as_sf(countries110)
  class(map)
[1] "sf"         "data.frame"
ggplot(data = map) +
          geom_sf(fill="lightyellow") +
          theme_bw()

Ce fonds de carte comporte 175 unités spatiales, mais de quoi s’agit-il exactement. Les métadonnées associées permettent de se faire une idée plus précise de la nature exacte de ces unités. Prenons pour cela quelques exempes

sel<-map[map$adm0_a3 %in% c("FRA", "NCL","ATA","ATF","USA", "PRI","CHN","TWN","MAR", "SAH","CHN","TWN","ISR","PSX"),c("sovereignt","sov_a3","type","admin", "adm0_a3","name","note_adm0","iso_a3","wb_a3")]
  kable(sel)
sovereignt sov_a3 type admin adm0_a3 name note_adm0 iso_a3 wb_a3 geometry
6 Antarctica ATA Indeterminate Antarctica ATA Antarctica NA ATA NA MULTIPOLYGON (((-59.57209 -…
7 France FR1 Dependency French Southern and Antarctic Lands ATF Fr. S. Antarctic Lands Fr. ATF NA MULTIPOLYGON (((68.935 -48….
30 China CH1 Country China CHN China NA CHN CHN MULTIPOLYGON (((110.3392 18…
55 France FR1 Country France FRA France NA FRA FRA MULTIPOLYGON (((-52.55642 2…
78 Israel ISR Sovereign country Israel ISR Israel NA ISR ISR MULTIPOLYGON (((35.71992 32…
99 Morocco MAR Sovereign country Morocco MAR Morocco NA MAR MAR MULTIPOLYGON (((-5.193863 3…
113 France FR1 Dependency New Caledonia NCL New Caledonia Fr. NCL NCL MULTIPOLYGON (((165.78 -21….
128 United States of America US1 Dependency Puerto Rico PRI Puerto Rico Commonwealth of U.S.A. PRI PRI MULTIPOLYGON (((-66.28243 1…
132 Israel ISR Disputed Palestine PSX Palestine Partial self-admin. PSE WBG MULTIPOLYGON (((35.54567 32…
137 Western Sahara SAH Indeterminate Western Sahara SAH W. Sahara Self admin. ESH NA MULTIPOLYGON (((-8.794884 2…
163 Taiwan TWN Sovereign country Taiwan TWN Taiwan NA TWN NA MULTIPOLYGON (((121.7778 24…
168 United States of America US1 Country United States of America USA United States NA USA USA MULTIPOLYGON (((-155.5421 1…

Les exemples présentés dans le tableau ci-dessus montrent la complexité du problème de définition et de représentation cartographique des “pays” ou “bouts du monde”. Quelques remarques :

  1. La France (FR1) en tant qu’état souverain regroupe ici cartographiquement la partie métropolitaine du pays et les Départements d’Outre-Mer (Guyane Française, Réunion, Martinique, Guadeloupe) en une seule entité spatiale, mais elle met à part la Nouvelle Calédonie et les îles antarctiques.
  2. Porto Rico (PRI) est considéré comme une dépendance des Etats-Unis (US1) au même titre que la Nouvelle Calédonie(NCL) est considérée comme une dépendance de la France (FR1).
  3. Le Sahara occidental (SAH) est considéré comme une zone indéterminée bien qu’il soit occupé par le Maroc (MAR).
  4. la Palestine (PSX) est considéré comme une zone disputée mais rattachée en terme de souveraineté à Israël (ISR) et une note précise qu’elle est partiellement semi-administrée. Le code sur trois caractères des territoires palestiniens est très variable selon les organisations (PSX, PSE, WBG).
  5. Taïwan (TWN) est présenté comme un état souverain, mais son code ISO3 est manquant pour la banque mondiale car la Chine refuse de le reconnaître.
  6. Plusieurs états souverains de petite taille sont absents de ce fonds de carte qui ne regroupe que 175 unités soit moins que les 193 pays membres des Nations-Unies. La plupart des îles du Pacifique sont en particulier éliminées car leur surface les rendrait invisible pour le degré de généralisation cartographique adopté.

4.2.3 le fonds de carte sovereignty110 (171 unités)

On peut obtenir un fonds différent en installant le package complémentaire rnaturalearthdata qui permet notamment de distinguer le fonds de carte des countries (c’est-à-dire des “bouts du monde” souverains ou non) et des sovereignty (c’est-à-dire des états souverains)

library(rnaturalearthdata)
  map<-st_as_sf(sovereignty110)
  
  ggplot(data = map) +
   geom_sf(fill="lightyellow") +  
    theme_bw()

Le fonds de carte permet désormais de récupérer la plupart des pays souverains du Monde, y compris les petits états insulaires du Pacifique, mais il fait disparaître de façon sélective les territoires indéterminés ou disputés. Ainsi, le Sahra Occidental demeure partiellement séparé du Maroc mais les territoires palestiniens sont annexés à Israël ainsi que le plateau du Golan ce qui n’est évidemment pas un choix neutred’un point de vue géoolitique.

par(mfrow=c(1,2))
  
  map2<-map %>% filter(sov_a3 %in% c("ISR","JOR","SYR","LBN","EGY"))
  ggplot(data = map2) +
      geom_sf(fill=c("gray80","orange","gray80","gray80","gray80")) +
      ggtitle("Limits of Israël") +
    theme_minimal()

map3<-map %>% filter(sov_a3 %in%c("MAR","SAH","DZA","MRT"))
  ggplot(data = map3) +
      geom_sf(fill=c("gray70","orange","gray70","lightyellow")) +
      ggtitle("Limits of Morocco") +
    theme_minimal()

4.2.4 Le fonds de carte countries50

On peut également choisir un fonds moins généralisé dans lequel tous les petits pays seront présents

map<-st_as_sf(countries50)
  ggplot(data = map) +
      geom_sf(fill="lightyellow") +
    theme_bw()

Il existe toute une série d’autres fonds de carte dans le package Natural Earth, notamment avec des résolutions plus précises, mais on se limitera ici à l’exploration des fonds de carte utile pour produire des cartes à contour généralisé couvrant le monde entier.

4.3 Exemple d’application

Nous allons essayer de constituer une carte des émissions de CO2 par habitant des pays de la CEDEAO en 2018 basée sur la combinaison des données wbstats et du fonds de carte naturalearth.

4.3.1 Etape 1 : récupération des données statistiques

Nous commençons par récupérer les données brutes de population et de CO2 en 2018 pour les pays de la CEDEAO et on y ajoute les latitues et longitues des centres des pays.

cedeao<-c("BEN","BFA","CPV","CIV", "GMB","GIN","GNB","GHA","LBR","MLI","NER","NGA","SEN","SLE","TGO")
  df   <- wb_data(indicator  = c("SP.POP.TOTL", "EN.ATM.CO2E.KT"),
                  return_wide = TRUE,
                  start_date = 2018,
                  end_date = 2018,
                  country = cedeao)
  kable(df)
iso2c iso3c country date EN.ATM.CO2E.KT SP.POP.TOTL
BJ BEN Benin 2018 7910 11485035
BF BFA Burkina Faso 2018 4270 19751466
CI CIV Cote d’Ivoire 2018 9910 25069226
CV CPV Cabo Verde 2018 620 543764
GH GHA Ghana 2018 16110 29767108
GN GIN Guinea 2018 3120 12414292
GM GMB Gambia, The 2018 570 2280092
GW GNB Guinea-Bissau 2018 310 1874304
LR LBR Liberia 2018 1320 4818976
ML MLI Mali 2018 5620 19077755
NE NER Niger 2018 2290 22442831
NG NGA Nigeria 2018 130670 195874685
SN SEN Senegal 2018 9860 15854324
SL SLE Sierra Leone 2018 1020 7650149
TG TGO Togo 2018 2260 7889095

Nous renommons les variables pour avoir un tableau plus simple ou la population est en millions d’habitants, les émissions de CO2 en millions de tonnes. On y ajoute l’intensité des émissions en tonnes par habitant.

don <-df %>% select(ISO3 = iso3c, NOM = country, POP = SP.POP.TOTL, CO2 = EN.ATM.CO2E.KT) %>%
              mutate(POP = POP/1000000, CO2 = CO2/1000, CO2_hab = CO2/POP)
  kable(don,digits = 2)
ISO3 NOM POP CO2 CO2_hab
BEN Benin 11.49 7.91 0.69
BFA Burkina Faso 19.75 4.27 0.22
CIV Cote d’Ivoire 25.07 9.91 0.40
CPV Cabo Verde 0.54 0.62 1.14
GHA Ghana 29.77 16.11 0.54
GIN Guinea 12.41 3.12 0.25
GMB Gambia, The 2.28 0.57 0.25
GNB Guinea-Bissau 1.87 0.31 0.17
LBR Liberia 4.82 1.32 0.27
MLI Mali 19.08 5.62 0.29
NER Niger 22.44 2.29 0.10
NGA Nigeria 195.87 130.67 0.67
SEN Senegal 15.85 9.86 0.62
SLE Sierra Leone 7.65 1.02 0.13
TGO Togo 7.89 2.26 0.29

4.3.2 Etape 2 : Récupération du fonds de carte

on récupère ensuite le fonds de carte en ne gardant que les pays de la CEDEAO

cedeao<-c("BEN","BFA","CPV","CIV", "GMB","GIN","GNB","GHA","LBR","MLI","NER","NGA","SEN","SLE","TGO")
  map<-st_as_sf(countries110)
  map<-st_as_sf(countries110) %>% 
          select(adm0_a3,geometry) %>% 
          rename(ISO3 = adm0_a3) %>%
          filter(ISO3 %in% cedeao)
  plot(map$geometry, col="lightyellow")

4.3.3 Etape 3 : Jointure du fonds de carte et des statistiques

mapdon <- right_join(don,map) %>% st_as_sf()
  kable(head(mapdon))
ISO3 NOM POP CO2 CO2_hab geometry
BEN Benin 11.485035 7.91 0.6887223 MULTIPOLYGON (((2.691702 6….
BFA Burkina Faso 19.751466 4.27 0.2161865 MULTIPOLYGON (((-2.827496 9…
CIV Cote d’Ivoire 25.069226 9.91 0.3953054 MULTIPOLYGON (((-2.856125 4…
GHA Ghana 29.767108 16.11 0.5412014 MULTIPOLYGON (((1.060122 5….
GIN Guinea 12.414292 3.12 0.2513232 MULTIPOLYGON (((-8.439298 7…
GMB Gambia, The 2.280092 0.57 0.2499899 MULTIPOLYGON (((-16.84152 1…

4.3.4 Etape 4 : Visualisation avec mapsf

mf_theme("agolalight")
  mapdon %>% 
    mf_map("CO2_hab", 
           "choro",
           breaks="jenks",
           leg_pos="bottomleft",
           leg_title = "en tonnes/hab.")%>%
    mf_map("CO2", 
           "prop",
           col="red",
           leg_pos = "topleft",
           leg_title = "en millions de tonnes")
  mf_title("Emissions de CO2 des pays de la CEDEAO en 2018")

5 AUTRES DONNEES

Sous le terme de données non conventionnelles on peut regrouper toute une série de bases de données qui ne sont pas issues de la statistique publique mais qui peuvent faire l’objet d’exploitations intéressantes. Cela recouvre notamment les données issues des réseaux sociaux (facebook, twitter, …) mais aussi les données collaboratives (Open Street Map) où les données d’entreprise privée mises à disposition du public.

5.1 Données médiatiques

A titre d’exemple de données non conventionnelles, nous proposons d’examiner le cas des flux RSS de deux journaux du Benin, mis à disposition par le site de recherche américain Media Cloud.

5.1.1 Préparation des données

5.1.1.1 Importation du fichier csv

Le fichier qui a été préalablement nettoyé coporte 36466 titres de nouvelles de presses publiées entre novembre 2017 et décembre 2021. Sa structure est très simple comme on peut le voir ci-dessous.

df<-fread("data/corpus/media_benin.csv",encoding = "UTF-8")
  kable(head(df))
who when text
fr_BEN_tribun 2017-11-01 00:10:44 Bénin : Adidjatou Mathys cède 2 départements à Modeste Kérékou et Bintou Adam
fr_BEN_tribun 2017-11-01 04:14:25 Entretiens de la coopération à la Fadesp: La francophonie au cœur des échanges
fr_BEN_tribun 2017-11-01 06:14:33 Bénin : Le projet de budget de l’Etat 2018 est de 1862
fr_BEN_24heur 2017-11-01 10:09:05 Maître Sossa Simawango Clément légitimé à la présidence
fr_BEN_24heur 2017-11-01 13:17:21 Le bilan élogieux de IRGIB- AFRICA aux examens nationaux de Licence
fr_BEN_tribun 2017-11-01 13:45:32 Bénin : Les enseignants du Couffo dans les rues d’Aplahoué mardi prochain

5.1.1.2 Transformation en corpus quanteda

Pour faciliter l’analyse textuelle, le fichier d’origine est transformé en objet de type corpus pour être utilisé par le package d’analyse textuelle quanteda. On ajoute au fichier différentes informations sur les périodes de temps pour faciliter les analyses ultérieures.

# library(quanteda)
  # Create Quanteda corpus
  qd<-corpus(df,text_field = "text")
  qd$media<-as.factor(qd$who)
  levels(qd$media)<-c("24 Heures","La Nouvelle Tribune")
  
  qd$day     <- as.Date(qd$when)
  qd$week    <- cut(qd$day, "weeks", start.on.monday=TRUE)
  qd$month   <- cut(qd$day, "months")
  qd$weekday <- weekdays(qd$day)
  
  
  # Add global meta
  meta(qd,"meta_source")<-"Media Cloud "
  meta(qd,"meta_time")<-"Téléchargé le 18 décembre 2021"
  meta(qd,"meta_author")<-"Auteur :  Claude Grasland"
  meta(qd,"project")<-"Ecole d'été CIST 2022"
  
  class(qd)
[1] "corpus"    "character"
summary(qd,6)
Corpus consisting of 36446 documents, showing 6 documents:

    Text Types Tokens Sentences           who                when
   text1    13     13         1 fr_BEN_tribun 2017-11-01 00:10:44
   text2    13     14         1 fr_BEN_tribun 2017-11-01 04:14:25
   text3    10     12         1 fr_BEN_tribun 2017-11-01 06:14:33
   text4     8      8         1 fr_BEN_24heur 2017-11-01 10:09:05
   text5    10     11         1 fr_BEN_24heur 2017-11-01 13:17:21
   text6    12     12         1 fr_BEN_tribun 2017-11-01 13:45:32
                 media        day       week      month  weekday
   La Nouvelle Tribune 2017-11-01 2017-10-30 2017-11-01 mercredi
   La Nouvelle Tribune 2017-11-01 2017-10-30 2017-11-01 mercredi
   La Nouvelle Tribune 2017-11-01 2017-10-30 2017-11-01 mercredi
             24 Heures 2017-11-01 2017-10-30 2017-11-01 mercredi
             24 Heures 2017-11-01 2017-10-30 2017-11-01 mercredi
   La Nouvelle Tribune 2017-11-01 2017-10-30 2017-11-01 mercredi
head(qd,6)
Corpus consisting of 6 documents and 7 docvars.
  text1 :
  "Bénin : Adidjatou Mathys cède 2 départements à Modeste Kérék..."

  text2 :
  "Entretiens de la coopération à la Fadesp: La francophonie au..."

  text3 :
  "Bénin : Le projet de budget de l’Etat 2018 est de 1862"

  text4 :
  "Maître Sossa Simawango Clément légitimé à la présidence"

  text5 :
  " Le bilan élogieux de IRGIB- AFRICA aux examens nationaux de..."

  text6 :
  "Bénin : Les enseignants du Couffo dans les rues d’Aplahoué m..."

5.1.1.3 Transformation en tibble

L’objet quanteda étant complexe, on peut décider à tout moment d’opérer une transformation inverse e se servant de la fonction tidy du package tidytext.

td <- tidy(qd)
  class(td)
[1] "tbl_df"     "tbl"        "data.frame"

5.1.1.4 Variations temporelles

Avant d’analyser les nouvelles, il faut s’assurer que leur production est régulière dans le temps, à la fois pour l’ensemble de la période et au cours des différents jours de la semaine.

- Commenaire : Les deux journaux connaissent un régime assez régulier mais en croissance au cours du temps. On note toutefois une interruption de la Nouvelle Tribune entre mars et juin 2019. qui pourrait avoir été lien à l’interdiction temporaire du journal.

  • Commenaire : Les deux journaux connaissent clairement une baisse de leur activité au cours du week-end, l’émission de nouvelles par leur flux RSS étant plus faible le samedi et le dimanche.

5.1.2 Taggage géographique

Bien qu’il s’agissent de textes courts, les titres des nouvelles de presse comportent souuvent un grand nombre de noms de lieux qu’il était intéressant d’indetifier sous forme de “tags” c’est-à-dire d’étiquettes indiquant pour chaque nouvelle les lieux mentionnés.

5.1.2.1 Dictionnaire

On peut par exemple repérer les pays étrangers qui sont cités dans les nouvelles en se servant d’un dictionnaire de mots ou de racines créé dans le cadre de projets de recherche sur les nouvelles internationales (ANR Geomedia, H2020 ODYCCEUS).

   ISO3           x lang
  1:  ABK     abkhaz*   fr
  2:  AFG     afghan*   fr
  3:  AFG      kaboul   fr
  4:  AFG afghanistan   fr
  5:  AGO      angola   fr
  6:  AGO   angolais*   fr

5.1.2.2 Résultats du taggage

On regarde pour chaque journal la distribution des nouvelles en fonction du nombre de pays étrangers cités. Il apparaît alors clairement que La Nouvelle Tribune est beaucoup plus tourné vers l’international (39% des nouvelles citent au moins un pays étrangers) que 24 heures (moins de 5% des nouvelles citent un pays étranger.

Nombre de pays étrangers cités dans les nouvelles
24 Heures La Nouvelle Tribune
0 95.736 65.853
1 4.081 29.482
2 0.183 4.248
3 0.000 0.397
4 0.000 0.016
5 0.000 0.004

On peut afficher les nouvelles qui affichent un nombre record de pays étrangers dans leur titre.


      0     1     2     3     4     5 
  27435  7826  1081    99     4     1 
who when text states nbstates
text6930 fr_BEN_tribun 2019-01-27 03:29:19 Venezuela : la Russie accuse les USA de vouloir agir comme en Irak et en Libye VEN RUS USA IRQ LBY 5
text4330 fr_BEN_tribun 2018-09-03 14:40:43 Bataille d’Idleb en Syrie : la France lance un appel à la Russie et à la Turquie SYR FRA RUS TUR 4
text17350 fr_BEN_tribun 2020-06-30 10:45:08 Libye : Ankara accuse la France de chercher à renforcer la présence russe LBY TUR FRA RUS 4
text23528 fr_BEN_tribun 2020-11-28 10:12:20 Nucléaire iranien : les USA sanctionnent des sociétés chinoises et russes IRN USA CHN RUS 4
text28490 fr_BEN_tribun 2021-03-10 11:24:28 L’Allemagne veut s’allier aux USA pour contrer la Russie et la Chine DEU USA RUS CHN 4

5.1.3 Taggage thématique

On peut également procéder à un taggae thématique en cherchant à repérer les nouvelles qui correspondent à un sujet dont l’on souhaite étudier la présence dans les médias. A titre d’exemple, nous allons ici essayer de repérer les nouvelles traitant d’épidémies et de pathologies transmissibles

5.1.3.1 Dictionaire

Nous proposons par exemple de partir du dictionaire suivant :

code lang label
epi fr épidémie*
epi fr pandémie*
epi fr crise sanitaire
virus fr virus
vaccin fr vaccin*
oms fr oms
ebola fr ébola
ebola fr ebola
h1n1 fr h1n1
sras fr sras
chik fr chikungunya
chol fr choléra
pest fr peste
palu fr paludisme
covid fr covid*
covid fr coronavir*
covid fr ncov*

5.1.3.2 Résultats du taggage

Part des nouvelles parlant de pandémies
24 Heures La Nouvelle Tribune
0 98.016 92.811
1 1.775 5.927
2 0.209 1.254
3 0.000 0.004
4 0.000 0.004

On peut afficher les nouvelles qui affichent un nombre record de pays étrangers dans leur titre.


      0     1     2     3     4 
  34424  1683   337     1     1 
who when text pand nbpand
text23837 fr_BEN_tribun 2020-12-05 03:55:27 OMS : les vaccins contre le covid-19 ne feront pas disparaître le virus oms vaccin covid virus 4
text16334 fr_BEN_tribun 2020-05-16 12:21:24 UE – OMS : La pandémie de COVID-19 est la crise sanitaire marquante de notre époque oms epi covid 3
text2911 fr_BEN_tribun 2018-05-31 05:24:00 Ebola: le vaccin expérimental jugé efficace ebola vaccin 2
text7533 fr_BEN_tribun 2019-02-27 09:58:09 Ebola : le virus découvert dans l’oeil d’un médecin américain censé avoir guéri ebola virus 2
text7641 fr_BEN_tribun 2019-03-05 10:58:41 Ebola : un survivant pourrait aider à la fabrication d’un vaccin ebola vaccin 2
text13787 fr_BEN_tribun 2020-01-28 12:24:11 Coronavirus : après Ebola avec les noirs covid ebola 2
text13901 fr_BEN_tribun 2020-02-02 06:23:24 Coronavirus : la blague déplacée de 50 cent sur le virus covid virus 2
text14072 fr_BEN_tribun 2020-02-10 06:09:30 Coronavirus : Jackie Chan promet une récompense de 130.000€ à celui qui fabriquera le vaccin covid vaccin 2
text14294 fr_BEN_tribun 2020-02-18 11:13:42 Ebola : le vaccin Ervebo validé dans 4 pays africains ebola vaccin 2
text14433 fr_BEN_tribun 2020-02-23 12:05:23 Coronavirus : Xi Jinping d’un air grave se confie sur le virus covid virus 2

5.1.4 Exploration multidimensionnelle

Une fois établi un double taggage géographique (Where) et thématique (What) on peut croiser ces deux dimensions avec le média qui a produit les nouvelles (Who) et le moment où les nouvelles ont été publiés (When). On dispose ainsi de quatre dimensions autour desquelles on peut agréger les nouvelles.

5.1.4.1 Transformation en hypercube

On commence par croiser les quatre dimensions afin de compter le nombre de nouvelles correspondantes et de stocker le résultat dans un objet unique appelé hypercube.

who when where1 where2 what tags news
fr_BEN_tribun 2019-08-23 no no no 18 18.00
fr_BEN_tribun 2019-08-23 IRN IRN no 1 1.00
fr_BEN_tribun 2019-08-23 IND IND no 1 0.25
fr_BEN_tribun 2019-08-23 IND PAK no 1 0.25
fr_BEN_tribun 2019-08-23 PAK IND no 1 0.25
fr_BEN_tribun 2019-08-23 PAK PAK no 1 0.25

Nous allons ensuite croiser les dimensions deux à deux et procéder à des test statistiques permettant de repérer les anomalies les plus remarquables à l’aide d’un test du chi-2.

5.1.4.2 Valeur de référence

On commence par calculer la valeur de référence qui est la part des nouvelles relatives à la thématique retenue.

    what  news       pct
  1: FALSE 34424 94.452066
  2:  TRUE  2022  5.547934
  • Commentaire : Sur l’ensemble de la période, la part des nouvelles du corpus traitant de pandémies est de 5.5%

5.1.4.3 Variation selon le journal (Who.What)

On examine ensuite si cette valeur de référence est la même dans les différents journaux du corpus.

  • Commentaire : Il existe une différence significative entre les deux journaux (p<0.001). Moins de 2% des nouvelles publiées par 24 Heures parlent de pandémie contre plus 7% des nouvelles publiées par La Nouvelle Tribune.

5.1.4.4 Variation temporelle (When.What)

Comment évolue l’intérêt des journaux pour la thématique au cours du temps. La période observée est évidemment marquée par une très forte discontinuité avec l’arrivée du Covid-19. Mais quel est le calendrier précis de son impact sur la presse du Bénin ?

  • Commentaire : Comme dans l’ensemble des pays du Monde, on observe un pic maximal en mars-avril 2020 avec plus de 20% des nouvelles parlant de pandémie contre moins de 1% au cours de l’année précédente. Passée cette période d’intérêt maximal, on observe une stabilisation aux alentours de 7 à 10% des nouvelles publiées.

5.1.4.5 Variations spatiales (Where.What)

Une pandémie étant un phénomène à la fois spatial et temporel, il est intéressant de repérer les pays cités dans les nouvelles quii parlent de pandémie et de repérer les pays qui y ont été associé le plus significativement.

  • Commentaire : 6.7% nouvelles qui citent au moins un pays étranger parlent de pandémie ce qui est plus que la moyenne de référence qui était de 5.5% de nouvelles parlant de pandémie. Certains pays sont plus fréquemment associés à la pandémie que d’autres. Ainsi près de 19% des nouvelles parlant de Chine parlent de pandémie au cours de la période d’observation. Il en va de même pour le Royaume-Uni (15.7%), l’Italie (13.4%), l’Inde (11.9%) ou la Russie (10.9%). La France, en revanche, n’est pas spécialement associée à la pandémie (6.3% des nouvelles) même si elle est le pays le plus cité à ce sujet en nombre absolu. Elle demeure en effet présente dans un grand nombre d’autres sujets (économie, sport, culture, politique, …). Il en va de même pour les Etats-Unis (6.2%).Finalement, d’autres pays sont significativement peu associés à la pandémie comme la Côte d’Ivoire (2.9%) ou le Nigéria (0%).

5.1.4.6 Prolongements possibles

Au lieu de repérer les pays étrangers, on pourrait essayer de repérer les communes ou département du Bénin qui sont cités dans les nouvelles. Ce qui supposerait de construire un nouveau dictionnaire. On peut évidemment choisir par ailleurs d’autres thèmes que celui des pandémies.

Bibliographie

BARNIER, Julien, 2021. rmdformats: HTML Output Formats and Templates for ’rmarkdown’ Documents [en ligne]. S.l. : s.n. Disponible à l'adresse : https://github.com/juba/rmdformats.
R CORE TEAM, 2020. R: A Language and Environment for Statistical Computing [en ligne]. Vienna, Austria : R Foundation for Statistical Computing. Disponible à l'adresse : https://www.R-project.org/.
XIE, Yihui, 2020. knitr: A General-Purpose Package for Dynamic Report Generation in R [en ligne]. S.l. : s.n. Disponible à l'adresse : https://CRAN.R-project.org/package=knitr.

Annexes

Infos session

setting value
version R version 4.1.0 (2021-05-18)
os Windows 10 x64
system x86_64, mingw32
ui RTerm
language (EN)
collate French_France.1252
ctype French_France.1252
tz Europe/Paris
date 2022-01-25
package ondiskversion source
cowplot 1.1.1 CRAN (R 4.1.1)
data.table 1.14.0 CRAN (R 4.1.0)
dplyr 1.0.6 CRAN (R 4.1.0)
DT 0.18 CRAN (R 4.1.0)
explor 0.3.9 CRAN (R 4.1.1)
FactoMineR 2.4 CRAN (R 4.1.0)
ggplot2 3.3.3 CRAN (R 4.1.0)
knitr 1.34 CRAN (R 4.1.1)
leaflet 2.0.4.1 CRAN (R 4.1.1)
mapsf 0.2.0 CRAN (R 4.1.0)
mapview 2.10.0 CRAN (R 4.1.1)
plotly 4.9.4.1 CRAN (R 4.1.0)
quanteda 3.0.0 CRAN (R 4.1.0)
RColorBrewer 1.1.2 CRAN (R 4.1.0)
rmarkdown 2.11 CRAN (R 4.1.1)
rnaturalearth 0.1.0 CRAN (R 4.1.2)
rnaturalearthdata 0.1.0 CRAN (R 4.1.2)
rzine 0.1.0 gitlab ()
sf 1.0.0 CRAN (R 4.1.0)
stargazer 5.2.2 CRAN (R 4.1.0)
tidyr 1.1.3 CRAN (R 4.1.0)
tidytext 0.3.1 CRAN (R 4.1.1)
wbstats 1.0.4 CRAN (R 4.1.2)

Citation

@Manual{ficheRzine,
    title = {Titre de la fiche},
    author = {{Auteur.e.s}},
    organization = {Rzine},
    year = {202x},
    url = {http://rzine.fr/},
  }


Glossaire