SWD Challenge | 2019M3: Visualise-moi ça!

Le défi de ce mois-ci consiste à être efficace, ni plus ni moins. C’est-à-dire de démontrer nos compétences à traiter les données fournies pour répondre à des questions spécifiques. Les données pour ce défi, abordent les transactions financières entre les pays ainsi que les raisons de ces dons. Les données brutes sont disponibles sur le site de ADIDATA.

Les 3 questions à répondre sont:

  • Qui a donné?
  • Combien est-ce qu’ils ont donné?
  • Pourquoi est-ce qu’ils ont donné?

IMPORTER

data<- read_csv("AidDataCoreThin_ResearchRelease_Level1_v3.1.csv",
               col_names = TRUE) #identifier la première ligne comme nom de colonne

#OMG!!!154 MB de données! du pur plaisir!

EXPLORER

glimpse(data)
## Observations: 1,561,039
## Variables: 8
## $ aiddata_id                     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...
## $ aiddata_2_id                   <chr> NA, NA, NA, NA, NA, NA, NA, NA,...
## $ year                           <int> 2003, 1990, 1991, 1992, 1992, 1...
## $ donor                          <chr> "African Development Bank (AFDB...
## $ recipient                      <chr> "Togo", "Burundi", "Cote d`Ivoi...
## $ commitment_amount_usd_constant <int> 29589911, 9713596, 148139421, 2...
## $ coalesced_purpose_code         <int> 24030, 31100, 31120, 31120, 311...
## $ coalesced_purpose_name         <chr> "Formal sector financial interm...
summary(data)
##    aiddata_id        aiddata_2_id            year         donor          
##  Min.   :        1   Length:1561039     Min.   :1947   Length:1561039    
##  1st Qu.: 57937127   Class :character   1st Qu.:2002   Class :character  
##  Median : 74387020   Mode  :character   Median :2007   Mode  :character  
##  Mean   : 75387177                      Mean   :2005                     
##  3rd Qu.: 94736526                      3rd Qu.:2010                     
##  Max.   :121508987                      Max.   :9999                     
##  NA's   :126989                                                          
##   recipient         commitment_amount_usd_constant coalesced_purpose_code
##  Length:1561039     Min.   :-1.664e+09             Min.   :10000         
##  Class :character   1st Qu.: 2.088e+04             1st Qu.:14020         
##  Mode  :character   Median : 1.071e+05             Median :22040         
##                     Mean   : 4.033e+06             Mean   :35878         
##                     3rd Qu.: 5.923e+05             3rd Qu.:43040         
##                     Max.   : 2.141e+09             Max.   :99820         
##                     NA's   :98                                           
##  coalesced_purpose_name
##  Length:1561039        
##  Class :character      
##  Mode  :character      
##                        
##                        
##                        
## 

Les points importants à considérer pour nettoyer ces données avant de les analyser:

  • Le format des années doit être changé pour numérique
  • Le format de la colonne des dons (commitment_amount_usd_constant) doit aussi être changé pour numérique
  • L’année “9999” doit être retirer, probablement une donnée manquante
  • Il faut aussi faire attention au données manquante des dons pour ne pas causer d’erreurs dans l’analyse
data%
  mutate(year=as.numeric(year))%>% #changer le format pour numérique
  mutate(commitment_amount_usd_constant=as.numeric(commitment_amount_usd_constant))%>%#changer le format pour numérique
  filter(!year %in% 9999)%>% #retirer valeur aberhante
  filter(!is.na(commitment_amount_usd_constant)) #retirer les NAs

glimpse(data)
## Observations: 1,560,882
## Variables: 8
## $ aiddata_id                     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...
## $ aiddata_2_id                   <chr> NA, NA, NA, NA, NA, NA, NA, NA,...
## $ year                           <dbl> 2003, 1990, 1991, 1992, 1992, 1...
## $ donor                          <chr> "African Development Bank (AFDB...
## $ recipient                      <chr> "Togo", "Burundi", "Cote d`Ivoi...
## $ commitment_amount_usd_constant <dbl> 29589911, 9713596, 148139421, 2...
## $ coalesced_purpose_code         <int> 24030, 31100, 31120, 31120, 311...
## $ coalesced_purpose_name         <chr> "Formal sector financial interm...
summary(data)
##    aiddata_id        aiddata_2_id            year         donor          
##  Min.   :        1   Length:1560882     Min.   :1947   Length:1560882    
##  1st Qu.: 57940838   Class :character   1st Qu.:2002   Class :character  
##  Median : 74388871   Mode  :character   Median :2007   Mode  :character  
##  Mean   : 75391640                      Mean   :2005                     
##  3rd Qu.: 94737989                      3rd Qu.:2010                     
##  Max.   :121508987                      Max.   :2013                     
##  NA's   :126989                                                          
##   recipient         commitment_amount_usd_constant coalesced_purpose_code
##  Length:1560882     Min.   :-1.664e+09             Min.   :10000         
##  Class :character   1st Qu.: 2.088e+04             1st Qu.:14020         
##  Mode  :character   Median : 1.071e+05             Median :22040         
##                     Mean   : 4.033e+06             Mean   :35877         
##                     3rd Qu.: 5.921e+05             3rd Qu.:43040         
##                     Max.   : 2.141e+09             Max.   :99820         
##                                                                          
##  coalesced_purpose_name
##  Length:1560882        
##  Class :character      
##  Mode  :character      
##                        
##                        
##                        
## 

EXPLORER

#Quel est le montant total des dons effectués entre 1947 et 2913?
don%
  summarise(sum=sum(commitment_amount_usd_constant, na.rm=TRUE))
#Réponse: 6 295 M$

#Quel pays ou organisation est le donneur le plus important?
don%
  group_by(donor)%>%
  summarise(sum=sum(commitment_amount_usd_constant, na.rm=TRUE))
#Réponse: sur les 96 donneurs, les États Unis sont les plus importants après la banque mondiale.

#regrouper toutes les donneurs qui font parti de l'Amérique du Nord
#Quel est le montant donné par l'Amérique du Nord pendant cette période?
don%
  mutate(donor_cat=donor)%>%
  mutate(donor_cat=ifelse(str_detect(donor, "United"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "Bill"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "North"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "Canada"), "AM", donor_cat))%>%
  filter(donor_cat=="AM")%>%
  summarise(sum=sum(commitment_amount_usd_constant, na.rm=TRUE))%>%
  mutate(don_million=sum/1000000000)
#Réponse: 1 156 M$

#Quels sont les principaux pays (environ 20%) qui ont reçu cet argent?
recip_NAM%
  mutate(donor_cat=donor)%>%
  mutate(donor_cat=ifelse(str_detect(donor, "United"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "Bill"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "North"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "Canada"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "World"), "World", donor_cat))%>%
  filter(donor_cat=="AM")%>%
  group_by(recipient)%>%
  summarise(sum=sum(commitment_amount_usd_constant, na.rm=TRUE))%>%
  mutate(don_million=sum/1000000000)%>%
  filter(don_million>28)%>%
  filter(!recipient %in% "Bilateral, unspecified")
#Réponse: Les receveur le plus important des dons sont Egypt, Israel, Iraq, India, Afghanistan, Pakistan

#Quel est l'utilisation principale de cet argent pour chaque pays?
raison_NAM%
  filter(recipient %in% c("Egypt", "Israel", "Iraq", "India", "Afghanistan","Pakistan"))%>%
  mutate(donor_cat=donor)%>%
  mutate(donor_cat=ifelse(str_detect(donor, "United"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "Bill"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "North"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "Canada"), "AM", donor_cat))%>%
  filter(donor_cat=="AM")%>%
  group_by(recipient, coalesced_purpose_name)%>%
  summarise(sum=sum(commitment_amount_usd_constant, na.rm=TRUE))%>%
  mutate(don_million=sum/1000000000000)
#Réponses:
  #Egypt:Food security programs
  #Israel:General budget support
  #Iraq:Electrical transmission/distribution
  #India:Food security programs
  #Afghanistan:Legal and judicial development
  #Pakistan:Food security programs

VISUALISER

Pour répondre à ces 3 questions, j’ai choisi de me concentrer sur le regroupement de donateurs qui ont le plus donné soit l’Amérique du Nord. Une fois qu’on sait qu’ils ont donné 1 150M$ pour la période à l’étude, c’est plus facile de se concentrer sur les receveurs principaux. J’a choisi de représenter visuellement les pays qui ont reçu 20% de cet argent. Pour répondre à la dernière question, j’ai annoté le graphique pour y indiquer l’utilisation principale de cet argent pour chaque pays receveur. Voici comment j’ai fait et ce que ça donne:

don%
  mutate(donor_cat=donor)%>%
  mutate(donor_cat=ifelse(str_detect(donor, "United"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "Bill"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "North"), "AM", donor_cat))%>%
  mutate(donor_cat=ifelse(str_detect(donor, "Canada"), "AM", donor_cat))%>%
  filter(donor_cat=="AM")%>%
  filter(recipient %in% c("Egypt", "Israel", "Iraq", "India", "Afghanistan","Pakistan"))%>%
  group_by(recipient)%>%
  summarise(sum=sum(commitment_amount_usd_constant, na.rm=TRUE))%>%
  mutate(don_million=sum/1000000000)

#Graphique
gg<- ggplot(recip_NAM, aes(x=reorder(recipient, -don_million), y=don_million, fill = recipient))
gg<- gg + geom_bar(stat="identity", width = .1)
gg<- gg + geom_point(size=6, color="#A60067")
gg<- gg + coord_flip()
#Ajuster les couleurs et les axes
gg<- gg + scale_y_continuous(breaks=seq(0,150,10), limits = c(0, 150),position = "top")
gg<- gg + scale_fill_manual(values=c("#A9A9A9", "#A9A9A9", "#A9A9A9", "#A9A9A9", "#A9A9A9", "#A9A9A9", "#A9A9A9", "#A9A9A9", "#A9A9A9", "#A9A9A9", "#A9A9A9"))
#Titres, étiquettes et légendes
gg<-gg + labs(x = NULL,
              y = NULL,
              title =NULL,
              subtitle = NULL)
gg<-gg +theme(plot.title    = element_blank(),
              plot.subtitle = element_blank(),
              axis.title.x  = element_blank(),
              axis.title.y  = element_blank(),
              axis.text.x   = element_blank(),
              axis.text.y   = element_text(hjust=0, size=14, color="#8B8B8B", face="bold"))
gg<-gg +theme(legend.position = "none")
gg<-gg +annotate(geom="text", x=1,  y=66, label="62.6M$ pour les programmes de sécurité alimentaire",
                 color="#8B8B8B", size=4, hjust=0)
gg<-gg +annotate(geom="text", x=2,  y=48, label="45.1M$ pour l'appui budgétaire général",
                 color="#8B8B8B", size=4, hjust=0)
gg<-gg +annotate(geom="text", x=3,  y=47, label="43.6M$ pour la transmission/distribution d'électricité",
                 color="#8B8B8B", size=4, hjust=0)
gg<-gg +annotate(geom="text", x=4,  y=45, label="41.5M$ pour les programmes de sécurité alimentaire",
                 color="#8B8B8B", size=4, hjust=0)
gg<-gg +annotate(geom="text", x=5,  y=39, label="36.0M$ pour le développement juridique et judiciaire",
                 color="#8B8B8B", size=4, hjust=0)
gg<-gg +annotate(geom="text", x=6,  y=38, label="35.1M$ pour les programmes de sécurité alimentaire",
                 color="#8B8B8B", size=4, hjust=0)
#adapter le thème du graphique selon les besions:
gg<-gg +theme(panel.border       = element_blank(),
              panel.background   = element_rect(fill = "#FFFFFF", colour = "#FFFFFF"),
              plot.background    = element_rect(fill = "#FFFFFF", colour = "#FFFFFF"),
              panel.grid.major.y = element_blank(),
              panel.grid.major.x = element_blank(),
              panel.grid.minor   = element_blank(),
              axis.line.x        = element_blank(),
              axis.ticks.x       = element_blank(),
              axis.line.y        = element_blank(),
              axis.ticks.y       = element_blank())

 

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s