ECOLE D’ETE CIST 2022
Inventaire préparatoire des données
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.
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.
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
- Lieu (loc1) et (dat1) date de naissance de l’individu
- Lieu (loc2) et date de départ (dat2) de la dernière résidence si elle est différente de la résidence actuelle
- 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 :
<-readRDS("data/rp2013/mobind.RDS")
dt<-data.table(dt)
dt<-dt[mob12+mob23==2 &is.na(dat2)==F]
dt2kable(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
- Résidence permanente à Cotonou (loc1 = loc2 = loc3 = Cotonou)
- Arrivée à Cotonou sans relais (loc1 = X, loc2 = X, loc3 = Cotonou)
- Arrivée à Cotonou avec relais (loc1 = X, loc2 = Y, loc3 = Cotonou)
- Départ puis retour à Cotonou (loc1 = Cotonou, loc2 = X, loc3 = Cotonou)
- Départ de Cotonou sans relais (loc1 = loc2 = Cotonou, loc3 = X)
- Départ de Cotonou avec relais (loc1 = Cotonou, loc2 = X, loc3 = Y)
- Aller à Cotonou puis retour (loc1 = X, loc2 = Cotonou, loc3 = X)
- Aller à Cotonou puis départ (loc1 = X, loc2 = Cotonou, loc3 = Y)
<-"081"
com<-dt[loc1==com][loc2==com][loc3==com][,cas:=1]
cas1<-dt[loc1!=com][loc2==loc1][loc3==com][,cas:=2]
cas2<-dt[loc1!=com][loc2!=loc1][loc2!=com][loc3==com][,cas:=3]
cas3<-dt[loc1==com][loc2!=com][loc3==com][,cas:=4]
cas4<-dt[loc1==com][loc2==loc1][loc3!=com][,cas:=5]
cas5<-dt[loc1==com][loc2!=loc1][loc3!=com][loc3!=loc2][,cas:=6]
cas6<-dt[loc1!=com][loc2==com][loc3==loc1][,cas:=7]
cas7<-dt[loc1!=com][loc2==com][loc3!=loc1][loc3!=com][,cas:=8]
cas8<-rbind(cas1,cas2,cas3,cas4,cas5,cas6,cas7,cas8)
tabcom$cas<-as.factor(tabcom$cas)
tabcomlevels(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")
<-tabcom[,.(nb=.N),.(cas)]
res<-data.table(cas="Total",nb=dim(tabcom)[1])
restot<-data.table(cas="Résidents 2013 (1+2+3+4)",nb=sum(res[1:4]$nb))
res2013
c(1,4,5,6),sum(nb)] res[
[1] 616450
<-data.table(cas="Natifs (1+4+5+6)",nb=sum(res[c(1,4,5,6)]$nb))
natifs<-rbind(res,res2013,natifs,restot)
res$pct<-100*res$nb/restot$nb
reskable(res,digits = c(NA,0,2),caption = "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.
<-"045"
com<-dt[loc1==com][loc2==com][loc3==com][,cas:=1]
cas1<-dt[loc1!=com][loc2==loc1][loc3==com][,cas:=2]
cas2<-dt[loc1!=com][loc2!=loc1][loc2!=com][loc3==com][,cas:=3]
cas3<-dt[loc1==com][loc2!=com][loc3==com][,cas:=4]
cas4<-dt[loc1==com][loc2==loc1][loc3!=com][,cas:=5]
cas5<-dt[loc1==com][loc2!=loc1][loc3!=com][loc3!=loc2][,cas:=6]
cas6<-dt[loc1!=com][loc2==com][loc3==loc1][,cas:=7]
cas7<-dt[loc1!=com][loc2==com][loc3!=loc1][loc3!=com][,cas:=8]
cas8<-rbind(cas1,cas2,cas3,cas4,cas5,cas6,cas7,cas8)
tabcom$cas<-as.factor(tabcom$cas)
tabcomlevels(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")
<-tabcom[,.(nb=.N),.(cas)]
res<-data.table(cas="Total",nb=dim(tabcom)[1])
restot<-data.table(cas="Résidents 2013 (1+2+3+4)",nb=sum(res[1:4]$nb))
res2013
c(1,4,5,6),sum(nb)] res[
[1] 194345
<-data.table(cas="Natifs (1+4+5+6)",nb=sum(res[c(1,4,5,6)]$nb))
natifs<-rbind(res,res2013,natifs,restot)
res$pct<-100*res$nb/restot$nb
reskable(res,digits = c(NA,0,2),caption = "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 :
<-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))]
selkable(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
<-table(sel$sex,sel$dest)
tabcont<-chisq.test(tabcont)
test<-round(test$statistic,2)
chi<-cut(test$p.value,breaks=c(0,0.001,0.01,0.1,1))
pvallevels(pval)<-c("***","**","*","n.s.")
<-paste("Chi-2 = ", chi, ", df = ",test$parameter,"sign = ", pval)
resplot(tabcont,col=c("lightyellow","orange"), main = "Les femmes préfèrent Cotonou ?", sub=res)
2.3.4.2 Effet isolé de l’âge
$age2<-cut(sel$age,breaks=c(18,25,35,45,55,65,100))
sel<-table(sel$age2,sel$dest)
tabcont<-chisq.test(tabcont)
test<-round(test$statistic,2)
chi<-cut(test$p.value,breaks=c(0,0.001,0.01,0.1,1))
pvallevels(pval)<-c("***","**","*","n.s.")
<-paste("Chi-2 = ", chi, ", df = ",test$parameter,"sign = ", pval)
resplot(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.
::include_graphics("data/figures/HDX.png") knitr
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.
<-st_read("data/admin/ben_adm0.shp",quiet = TRUE)
adm0<-st_read("data/admin/ben_adm1.shp",quiet = TRUE)
adm1<-st_read("data/admin/ben_adm2.dbf", quiet = TRUE) adm2
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
:
<- leaflet() %>%
map 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
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
<-read.table("data/pop2019/ben_adm2_pop.csv", sep=";",header=T, encoding = "UTF-8")
don<-don[,c(11:44)]
don2row.names(don2)<-don$ADM2_PCODE
<-CA(don2,ncp = 10,graph = FALSE)
afclibrary(explor)
<- explor::prepare_results(afc)
res ::CA_var_plot(res, xax = 1, yax = 2, lev_sup = FALSE, var_sup = FALSE,
explorvar_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))
On enchaîne par une CAH (sur les axes de l’AFC) :
<- HCPC(afc,nb.clust = 5,graph = FALSE)
cah plot.HCPC(cah,choice = "tree")
plot.HCPC(cah,choice = "map", label.cex=0.3)
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
- 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 :
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 :
<-read.table("data/langues/ben_lang_adm1_correct.csv", sep=";",header =TRUE, dec=",")
dep<-dep[,c(1:2,77:82)]
depkable(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.
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.
<- lm(dep$literacy_female~dep$literacy_male)
mod.reg #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.
<-fread("data/foodprices/wfp_food_prices_ben.csv")
dtkable(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 :
<-dt %>% filter(duplicated(market)==FALSE) %>% select(c(2,3,4,5,6)) %>% arrange (admin1,admin2, market)
loc<- st_as_sf(loc, coords = c("longitude","latitude"))
markets st_crs(markets)<- 4326
#mapview(markets)
<-st_read("data/admin/ben_adm0.shp",quiet = TRUE)
adm0<-st_read("data/admin/ben_adm1.shp",quiet = TRUE)
adm1<-st_read("data/admin/ben_adm2.shp", quiet = TRUE)
adm2
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
<- dt %>% filter(substr(commodity,1,4)=="Rice") %>%
rizselect(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 :
<- riz %>% group_by(when, what) %>% summarize(median_cost=median(cost), nbobs = n())
tabggplot(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 :
<- riz %>% filter(when >=as.Date("2020-04-01"), what =="Rice (imported)") %>%
tab 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.
<-st_read("data/settlement/ben_plp_NGA.shp", quiet = TRUE)
locpar(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)
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.
<-adm2[adm2$admin2Pcod=="BJ0304",]
map<-st_transform(map,4326)
map
<-loc[loc$RowcaCode2=="BEN003004",]
vil<-st_transform(vil,4326)
vil
<- leaflet() %>%
map 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
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")
<-wb_cachelist
catstr(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
<- cat$countries %>%
pays 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.
<-cat$indicators
indicdim(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
<- wbsearch(pattern = "CO2",fields="indicator")
vars 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
<-cat$indicators[cat$indicators$indicator_id %in% c("SP.POP.TOTL","NY.GDP.MKTP.CD","EN.ATM.CO2E.KT"),]
meta
# Programme dplyr
<-cat$indicators %>%
metafilter(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
<- wb_data(indicator = c("NY.GDP.MKTP.CD","SP.POP.TOTL", "EN.ATM.CO2E.KT")) df
- 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
<- wb_data(indicator = c("NY.GDP.MKTP.CD","SP.POP.TOTL", "EN.ATM.CO2E.KT"),
df 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.
<- wb_data(indicator = c("NY.GDP.MKTP.CD","SP.POP.TOTL","EN.ATM.CO2E.KT"),
df 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
<- wb_data(indicator = c("NY.GDP.MKTP.CD","SP.POP.TOTL","EN.ATM.CO2E.KT"),
df start_date = 2018,
end_date = 2018,
country = c("BEN","TGO"))
$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)
dfkable(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”
<- wb_data(indicator = c("NY.GDP.MKTP.CD","SP.POP.TOTL","EN.ATM.CO2E.KT"),
df start_date = 2018,
end_date = 2018,
country = "regions_only")
$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)
dfkable(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
<- wb_data(indicator = c("NY.GDP.MKTP.CD","SP.POP.TOTL","EN.ATM.CO2E.KT"),
df 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
<- wb_data(indicator = c("NY.GDP.MKTP.CD","SP.POP.TOTL","EN.ATM.CO2E.KT"),
df return_wide = FALSE,
start_date = 2017,
end_date = 2018,
country = c("BEN","TGO"))
1:7] df[,
# 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 rnaturalearth
qui 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
<-st_as_sf(countries110)
mapclass(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
<-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")]
selkable(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 :
- 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.
- 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).
- Le Sahara occidental (SAH) est considéré comme une zone indéterminée bien qu’il soit occupé par le Maroc (MAR).
- 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).
- 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.
- 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)
<-st_as_sf(sovereignty110)
map
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))
<-map %>% filter(sov_a3 %in% c("ISR","JOR","SYR","LBN","EGY"))
map2ggplot(data = map2) +
geom_sf(fill=c("gray80","orange","gray80","gray80","gray80")) +
ggtitle("Limits of Israël") +
theme_minimal()
<-map %>% filter(sov_a3 %in%c("MAR","SAH","DZA","MRT"))
map3ggplot(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
<-st_as_sf(countries50)
mapggplot(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.
<-c("BEN","BFA","CPV","CIV", "GMB","GIN","GNB","GHA","LBR","MLI","NER","NGA","SEN","SLE","TGO")
cedeao<- wb_data(indicator = c("SP.POP.TOTL", "EN.ATM.CO2E.KT"),
df 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.
<-df %>% select(ISO3 = iso3c, NOM = country, POP = SP.POP.TOTL, CO2 = EN.ATM.CO2E.KT) %>%
don 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
<-c("BEN","BFA","CPV","CIV", "GMB","GIN","GNB","GHA","LBR","MLI","NER","NGA","SEN","SLE","TGO")
cedeao<-st_as_sf(countries110)
map<-st_as_sf(countries110) %>%
mapselect(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
<- right_join(don,map) %>% st_as_sf()
mapdon 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.
<-fread("data/corpus/media_benin.csv",encoding = "UTF-8")
dfkable(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
<-corpus(df,text_field = "text")
qd$media<-as.factor(qd$who)
qdlevels(qd$media)<-c("24 Heures","La Nouvelle Tribune")
$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)
qd
# 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
.
<- tidy(qd)
td 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.
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
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
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 (rzine/package@a94bf55) |
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/},
}