library(data.table)
library(dplyr)
library(ggplot2)
library(knitr)
require(tidymodels)

Chargement des données

aa <- fread("DAN-P4-FAO/aide_alimentaire.csv", encoding = 'UTF-8', colClasses = c('character', 'integer', 'character', 'numeric' ))
da <- fread("DAN-P4-FAO/dispo_alimentaire.csv", encoding = 'UTF-8')
pop <-fread("DAN-P4-FAO/population.csv", encoding = 'UTF-8')
sn <- fread("DAN-P4-FAO/sous_nutrition.csv", encoding = 'UTF-8', colClasses = c(Année = 'factor'), na.strings = "")

Nettoyage

Dans la table sn sont présents des intervalles d’années, dont la chiffre correspondante dans la colonne Valeur correspond à la moyennes sur les trois années, on peut donc résumer ces intervalles par l’année centrale (e.g. 2012-2014 -> 2013):

levels(sn$Année) = c(2013,2014,2015,2016,2017,2018)
sn[, Année := as.numeric(as.character(Année))]

On est obligé a substituer les valeurs <0.1 par de NA en absence de données plus précises. Même si on gardait la valeur 0.1 cela pourrait fausser le taux de malnutrition calculé pour des pays avec populations du même ordre (~ 100.000).

#20 lignes avec valeurs '<0.1'
sn[Valeur == '<0.1' & Année == 2017, .N,Zone]
##                                Zone N
##  1:                         Arménie 1
##  2:                         Barbade 1
##  3:                          Belize 1
##  4:                      Cabo Verde 1
##  5:            Chine - RAS de Macao 1
##  6:                          Chypre 1
##  7:                       Dominique 1
##  8:                           Fidji 1
##  9:                          Guyana 1
## 10:                    Îles Salomon 1
## 11:                        Kiribati 1
## 12:               Macédoine du Nord 1
## 13:                         Maurice 1
## 14:              Nouvelle-Calédonie 1
## 15:             Polynésie française 1
## 16: Saint-Vincent-et-les Grenadines 1
## 17:            Sao Tomé-et-Principe 1
## 18:                        Suriname 1
## 19:               Trinité-et-Tobago 1
## 20:                         Vanuatu 1
sn[, Valeur:= as.numeric(ifelse(Valeur == '<0.1', NA ,Valeur))]

Données pour l’année 2017 :

Nous allons joindre les table sn17 et pop17 qui contiennent les valeurs de population et nombre de personnes en état de malnutrition pour l’année 2017. Dans le dataframe ainsi obtenu, nous allons renommer le colonnes et convertir la population en millions:

sn17 = sn[Année == 2017]          
pop17 = pop[Année == 2017, .(Zone, Année, Pop = Valeur*1000)]
sn_pop_17 = sn17[pop17, on = .(Zone)][,.(Zone, Année, Pop, Pmaln = Valeur*10^6)]
sn_pop_17
##                                        Zone Année      Pop    Pmaln
##   1:                            Afghanistan  2017 36296113 10500000
##   2:                         Afrique du Sud  2017 57009756  3100000
##   3:                                Albanie  2017  2884169   100000
##   4:                                Algérie  2017 41389189  1300000
##   5:                              Allemagne  2017 82658409       NA
##  ---                                                               
## 232: Venezuela (République bolivarienne du)  2017 29402484  8000000
## 233:                               Viet Nam  2017 94600648  6500000
## 234:                                  Yémen  2017 27834819       NA
## 235:                                 Zambie  2017 16853599       NA
## 236:                               Zimbabwe  2017 14236595       NA

Taux de malnutrition globale:

mal_glob <-
  sn_pop_17 %>% summarise(
    popglob17 = sum(Pop),
    totpopmaln. = sum(Pmaln, na.rm = TRUE),
    Taux.maln.glob = percent(sum(Pmaln, na.rm = TRUE) / sum(Pop))
  )

kable(
  mal_glob,
  col.names = c(
    'Pop. mondiale',
    'Total de personnes en état de malnutrition',
    'Taux de malnutrition global'
  ),
  align = c('c', 'c', 'c')
)
Pop. mondiale Total de personnes en état de malnutrition Taux de malnutrition global
7548134111 535700000 7%

Proportion de personnes en état de sous-nutrition par pays

prop_sous_nut = sn_pop_17[!is.na(Pmaln), .(`Taux de malnutrition` = Pmaln / Pop, Pmaln) , Zone] %>% arrange(desc(`Taux de malnutrition`)) %>% head(20)

prop_sous_nut %>% mutate(`Taux de malnutrition` = percent(`Taux de malnutrition`)) %>% kable(col.names = c('Zone','Taux de malnutrition', 'Population totale malnourrie'), align=c('lcr'))
Zone Taux de malnutrition Population totale malnourrie
Haïti 48.259% 5300000
République populaire démocratique de Corée 47.189% 12000000
Madagascar 41.063% 10500000
Libéria 38.280% 1800000
Lesotho 38.249% 800000
Tchad 37.958% 5700000
Rwanda 35.056% 4200000
Mozambique 32.811% 9400000
Timor-Leste 32.174% 400000
Afghanistan 28.929% 10500000
Congo 27.394% 1400000
Venezuela (République bolivarienne du) 27.209% 8000000
Sierra Leone 26.708% 2000000
République-Unie de Tanzanie 24.515% 13400000
Iraq 23.966% 9000000
Kenya 23.695% 11900000
Botswana 22.675% 500000
Togo 20.783% 1600000
Côte d’Ivoire 20.051% 4900000
Éthiopie 19.831% 21100000

Nombre théorique de personnes qui pourraient être nourries

La disponibilité totales de calories par jour pour chaque produit on peut l’obtenir avec la relation suivante : kcaltot = Disp alim (kcal/pr/jour) x pop.

2366 kcal/jour est le besoin moyen estimé en kcal entre hommes et femmes, calculé sur une mediane d’age de 29.8 (https://www.worldometers.info/world-population/, https://www.webmd.com/diet/features/estimated-calorie-requirement).

Avec la disponibilité alimentaire globale on pourrait nourrir 8841498152 personnes, c’est à dire le 117.13% de la population mondiale en 2017.

  • Nombre théorique de personnes qui pourraient être nourries a partir de produits végétaux:

Les seuls produits végétaux pourraient nourrir 7295335677, c’est à dir le 96.65% de la population mondiale en 2017.

Utilisation mondiale de la disponibilité intérieure

En particulier la part qui est attribuée à l’alimentation animale, celle qui est perdue et celle qui est concrètement utilisée pour l’alimentation humaine.

On peut vérifier la relation suivante : Disponibilité intérieure d’un aliment= Nourr. + Pertes + Semences + Traitement + Aliments animaux + Autres Utilisations = Production + Importation - Exportation + Stock

setnafill(da, cols = 4:length(da), fill = 0)
da[, dtot := Production - `Exportations - Quantité` + `Importations - Quantité` + `Variation de stock`]
da[, dtot2 := Nourriture + Pertes + Semences + Traitement + `Aliments pour animaux` + `Autres Utilisations`]
da[1:50 , dtot - `Disponibilité intérieure`]
##  [1]  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
## [26]  0  0  0  0  0 -1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0 -1  0
da[1:50, dtot2 - `Disponibilité intérieure`]
##  [1]  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
## [26]  0  0  0  0 -1  0  0 -1  0  0  0  0  0 -1  0 -1 -1  0  0  0  0  1 -1  0  0

Pour certains pays il y a une légère différence entre en dt1 et dt2, les deux totaux calculés, et le total déclaré dans la colonne Disponibilité intérieure ( cela est du probablement aux valeurs manquantes).

di <- da %>%
  summarise(
    prop_nourriture = sum(Nourriture) / sum(`Disponibilité intérieure`),
    prop_pertes = sum(Pertes) / sum(`Disponibilité intérieure`),
    prop_alim_anim = sum(`Aliments pour animaux`) / sum(`Disponibilité intérieure`),
    prop_semences = sum(Semences) / sum(`Disponibilité intérieure`),
    prop_traitement = sum(Traitement) / sum(`Disponibilité intérieure`),
    prop_autres = sum(`Autres Utilisations`) / sum(`Disponibilité intérieure`)
  )

ggplot(gather(di), aes(x="", y=value, fill= key)) + geom_col( width=1, color="white") + labs(x = 'Usage aliments', y='Proportion') + coord_polar("y", start=0) + theme_void() + geom_text(aes(label = percent(value)), position = position_stack(vjust=0.5)) +
  labs(title = 'Utilisation globale des produits alimentaires', x = NULL, y = NULL, fill = NULL)  + scale_fill_brewer(type="div", palette=1)

di[, 1:3] %>% mutate_all(percent, accuracy = 0.01) %>% kable(
  caption = 'Utilisation de la disponibilité intérieure mondiale',
  col.names = c('Nourriture', 'Pertes', 'Alimentation animale'),
  align = c('ccc'
  ))
Utilisation de la disponibilité intérieure mondiale
Nourriture Pertes Alimentation animale
49.51% 4.61% 13.24%

Il faudra remarquer que la production alimentaire d’un certain nombre de pays n’est pas du tout recensée:

anti_join(pop17,da, by="Zone") %>% select(Zone) %>% head()
##                           Zone
## 1:                     Andorre
## 2:                    Anguilla
## 3: Antilles néerlandaises (ex)
## 4:                       Aruba
## 5:                     Bahreïn
## 6:                     Bhoutan
tabledi <- da %>%  group_by(Zone) %>%
  summarise(
    prop_nourriture = sum(Nourriture, na.rm = TRUE) / sum(`Disponibilité intérieure`, na.rm =
                                                            TRUE),
    prop_pertes = sum(Pertes, na.rm = TRUE) / sum(`Disponibilité intérieure`, na.rm = TRUE),
    prop_alim_anim = sum(`Aliments pour animaux`, na.rm = TRUE) /
      sum(`Disponibilité intérieure`, na.rm = TRUE)
  ) %>% left_join(prop_sous_nut, by = "Zone")  %>% arrange(desc(`Taux de malnutrition`)) %>% head(20)

tabledi[1:5] %>% mutate(across(!Zone, percent, accuracy = 0.01)) %>% kable(
  caption = 'Utilisation des aliments des pays plus touchés par la malnutrition ',
  col.names = c(
    'Pays',
    'Nourriture',
    'Pertes',
    'Alim. Animaux',
    'Taux de malnutrition'
  ),
  align = c('lcccr')
)
Utilisation des aliments des pays plus touchés par la malnutrition
Pays Nourriture Pertes Alim. Animaux Taux de malnutrition
Haïti 66.41% 11.00% 7.79% 48.26%
République populaire démocratique de Corée 76.80% 7.17% 5.49% 47.19%
Madagascar 64.02% 6.35% 5.53% 41.06%
Libéria 82.57% 5.54% 1.75% 38.28%
Lesotho 93.06% 5.28% 0.10% 38.25%
Tchad 77.24% 8.65% 1.96% 37.96%
Rwanda 92.23% 4.33% 0.00% 35.06%
Mozambique 56.93% 5.28% 7.81% 32.81%
Timor-Leste 93.74% 3.13% 2.01% 32.17%
Afghanistan 79.43% 8.40% 5.68% 28.93%
Congo 72.92% 9.66% 0.45% 27.39%
Venezuela (République bolivarienne du) 61.49% 3.69% 8.91% 27.21%
Sierra Leone 46.73% 33.35% 13.71% 26.71%
République-Unie de Tanzanie 72.02% 8.48% 5.46% 24.52%
Iraq 71.28% 7.04% 14.54% 23.97%
Kenya 76.21% 4.64% 1.92% 23.70%
Botswana 88.83% 4.07% 1.92% 22.67%
Togo 77.80% 11.62% 3.69% 20.78%
Côte d’Ivoire 68.96% 8.51% 2.82% 20.05%
Éthiopie 75.80% 5.13% 1.56% 19.83%

Le pays le plus touchés par le problème de la malnutrition utilisent souvent la plupart des ressources alimentaires pour la nourriture humaine.

Utilisation mondiale des céreales

cereales = c(
  "Blé",
  "Céréales, Autres" ,
  "Orge",
  "Riz (Eq Blanchi)",
  "Avoine" ,
  "Sorgho",
  "Maïs",
  "Millet",
  "Seigle"
)

da_cer_glob <- da %>% filter(Produit %in% cereales) %>% summarise(
  prop_nourriture = sum(Nourriture) / sum(`Disponibilité intérieure`),
  prop_alimanim = sum(`Aliments pour animaux`) / sum(`Disponibilité intérieure`), prop_semences = sum(Semences) / sum(`Disponibilité intérieure`),
    prop_traitement = sum(Traitement) / sum(`Disponibilité intérieure`),
    prop_autres = sum(`Autres Utilisations`) / sum(`Disponibilité intérieure`))
  
ggplot(gather(da_cer_glob), aes(x="", y=value, fill= key)) + geom_col(width=1, color="white") + labs(x = 'Usage aliments', y='Proportion') + coord_polar("y", start=0) + theme_void() + geom_text(aes(label = percent(value)), position = position_stack(vjust=0.5)) +
  labs(title = 'Utilisation globale des céréales', x = NULL, y = NULL, fill = NULL)  + scale_fill_brewer(type="div", palette=1)

da_cer_glob[1:2] %>% mutate_all(percent) %>% kable(
  caption = 'Utilisation globale des céreales',
  col.names = c('Nourriture', 'Alimentation animale'),
  align = c('cc')
)
Utilisation globale des céreales
Nourriture Alimentation animale
43% 36%

On remarque que plus qu’un troisième de la production mondiale en céréales est destinée a l’alimentation animale.

Usage des céréales par type

usage_cer <-
  da %>% filter(Produit %in% cereales) %>% group_by(Produit) %>% summarise(
    prop_nourriture = sum(Nourriture, na.rm = TRUE) / sum(`Disponibilité intérieure`, na.rm =
                                                            TRUE),
    prop_alimanim = sum(`Aliments pour animaux`, na.rm = TRUE) / sum(`Disponibilité intérieure`, na.rm =
                                                                       TRUE)
  ) %>% arrange(desc(prop_nourriture))


usage_cer %>% mutate(across(where(is.numeric), percent)) %>% kable(
  caption = "Usage des céréales par type",
  col.names = c('Produit', 'Nourriture', 'Alimentation animale')
)
Usage des céréales par type
Produit Nourriture Alimentation animale
Riz (Eq Blanchi) 79.3% 7.06%
Millet 77.0% 11.05%
Blé 67.4% 19.08%
Sorgho 41.5% 42.60%
Seigle 33.2% 48.89%
Céréales, Autres 19.4% 69.26%
Avoine 16.7% 69.43%
Maïs 13.1% 57.14%
Orge 4.8% 65.98%

Seulement riz, millet et blé sont utilisés en prévalence pour l’alimentation humaine, les autres céréales étant destinés en priorité à l’alimentation animale.

Usage des céréales par Pays

da_cer <-
  da %>%  filter(Produit %in% cereales) %>% group_by(Zone) %>%
  summarise(
    prop_nourriture = sum(Nourriture, na.rm = TRUE) / sum(`Disponibilité intérieure`, na.rm =
                                                            TRUE),
    prop_alimanim = sum(`Aliments pour animaux`, na.rm = TRUE) /
      sum(`Disponibilité intérieure`, na.rm = TRUE)
  ) %>% inner_join(prop_sous_nut, by = "Zone") %>% arrange(desc(`Taux de malnutrition`)) %>% head(20)

da_cer[1:4] %>% mutate(across(!Zone, percent)) %>% kable(
  caption = 'Usage des cereales par Pays',
  col.names = c(
    'Pays',
    'Nourriture',
    'Alimentation animale',
    'Taux de Malnutrition'
  ),
  align = c('l', 'c', 'c', 'c')
)
Usage des cereales par Pays
Pays Nourriture Alimentation animale Taux de Malnutrition
Haïti 86.28% 7.782% 48.259%
République populaire démocratique de Corée 72.37% 7.333% 47.189%
Madagascar 84.26% 3.971% 41.063%
Libéria 87.50% 6.731% 38.280%
Lesotho 91.25% 0.195% 38.249%
Tchad 84.06% 2.254% 37.958%
Rwanda 76.99% 0.000% 35.056%
Mozambique 82.00% 11.081% 32.811%
Timor-Leste 93.40% 4.061% 32.174%
Afghanistan 75.23% 7.668% 28.929%
Congo 81.48% 4.558% 27.394%
Venezuela (République bolivarienne du) 54.28% 36.173% 27.209%
Sierra Leone 67.19% 1.828% 26.708%
République-Unie de Tanzanie 66.40% 12.410% 24.515%
Iraq 56.60% 26.772% 23.966%
Kenya 90.07% 2.316% 23.695%
Botswana 78.35% 2.749% 22.675%
Togo 71.56% 11.228% 20.783%
Côte d’Ivoire 76.54% 7.116% 20.051%
Éthiopie 69.82% 3.289% 19.831%

On remarque encore plus la relation entre taux de malnutrition et utilisation des aliments pour la nourriture.

Production de Manioc en Thaïlande

La Thaïlande pourrait résoudre le problème de la sous-nutrition en réduisant l’exportation du manioc, qui constitue l’83% de la production du pays:

mt <-
  da_pop %>% filter(Produit == 'Manioc' &
                      Zone == 'Thaïlande') %>% select(
                        Zone,
                        Production,
                        `Disponibilité intérieure`,
                        Nourriture,
                        `Importations - Quantité`,
                        `Exportations - Quantité`,
                        `Variation de stock`
                      )

kable(mt)
Zone Production Disponibilité intérieure Nourriture Importations - Quantité Exportations - Quantité Variation de stock
Thaïlande 30228 6264 871 1250 25214 0

Pays ayant beneficié le plus d’aides

at_pays <-
  aa %>% group_by(`Pays bénéficiaire`) %>% summarise(`Aides Totales` = sum(Valeur)) %>%
  arrange(desc(`Aides Totales`)) %>% left_join(prop_sous_nut, by = c(`Pays bénéficiaire` = "Zone")) %>% left_join(pop17, by =
                                                                                                                    c(`Pays bénéficiaire` = 'Zone')) %>% select(c(1, 2, 3, 4))

at_pays %>% rename(`Population totale malnourrie` = Pmaln) %>% mutate(`Taux de malnutrition` = percent(`Taux de malnutrition`)) %>% head(20) %>% kable(align = c('lcccc'))
Pays bénéficiaire Aides Totales Taux de malnutrition Population totale malnourrie
République arabe syrienne 1858943 NA NA
Éthiopie 1381294 19.831% 21100000
Yémen 1206484 NA NA
Soudan du Sud 695248 NA NA
Soudan 669784 NA NA
Kenya 552836 23.695% 11900000
Bangladesh 348188 NA NA
Somalie 292678 NA NA
République démocratique du Congo 288502 NA NA
Niger 276344 NA NA
Tchad 267966 37.958% 5700000
Pakistan 231072 NA NA
République populaire démocratique de Corée 187412 47.189% 12000000
Afghanistan 185452 28.929% 10500000
République-Unie de Tanzanie 172022 24.515% 13400000
Philippines 171722 NA NA
Palestine 169684 NA NA
Mali 149586 NA NA
Haïti 116450 48.259% 5300000
Nicaragua 115332 NA NA
pakistan <-
  at_pays %>% filter(`Pays bénéficiaire` == 'Pakistan') %>% select(`Aides Totales`)
bangladesh <-
  at_pays %>% filter(`Pays bénéficiaire` == 'Bangladesh') %>% select(`Aides Totales`)
ethiopie <-
  at_pays %>% filter(`Pays bénéficiaire` == 'Éthiopie') %>% select(`Aides Totales`)

La Syrie est la première dans la liste de bénéficiaires des aides humanitaires, même si on ne peut pas comparer cette donnée a la population totale malnourrie. On remarquera aussi que la distribution a un right skew assez prononcé (le 90% de pays on reçu moins de 290590.0 Tonnes totales).Bien qu’ils aient un chiffre similaire sur la population souffrant de malnutrition (ou plus grande), les aides totales reçus par le Bangladesh et le Pakistan representent les deux moins d’un quart des aides a l’Ethiopie. Il faudra aussi remarquer que pour beaucoup de pays (Inde, Indonésie, Nigéria ..) qui présentent une chiffre importante de personnes en état de malnutrition les aides ne sont pas recensés.

noaides <-
  left_join(sn, aa, by = c("Zone" = "Pays bénéficiaire")) %>% group_by(Zone) %>% summarise(PopM = mean(Valeur.x), Aidetot = sum(Valeur.y)) %>% arrange(desc(PopM)) %>% filter(is.na(Aidetot)) %>% head(10)

kable(
  noaides,
  caption = 'Aides non recensés',
  col.names = c('Zone', 'Population totale malnourrie', 'Aides totales')
)
Aides non recensés
Zone Population totale malnourrie Aides totales
Inde 194.233333 NA
Indonésie 23.616667 NA
Nigéria 20.316667 NA
Viet Nam 7.416667 NA
Mexique 7.083333 NA
Thaïlande 6.133333 NA
Venezuela (République bolivarienne du) 5.250000 NA
Afrique du Sud 2.816667 NA
Pérou 2.000000 NA
Arabie saoudite 1.533333 NA

Disponibilité en kcal/personne/jour par pays

da_jour <- da_pop %>% group_by(Zone) %>%
  summarise(
    `Dispotot(kcal/jour)` = sum(`Disponibilité alimentaire (Kcal/personne/jour)`, na.rm =
                                  TRUE)
  ) %>% arrange(`Dispotot(kcal/jour)`)  %>% left_join(prop_sous_nut, by =
                                                        "Zone") %>% head(20)

da_jour %>% mutate(`Taux de malnutrition` = percent(`Taux de malnutrition`)) %>% kable(align =
                                                                                         c('lcr'))
Zone Dispotot(kcal/jour) Taux de malnutrition Pmaln
République centrafricaine 1879 NA NA
Zambie 1924 NA NA
Madagascar 2056 41.06% 10500000
Afghanistan 2087 28.93% 10500000
Haïti 2089 48.26% 5300000
République populaire démocratique de Corée 2093 47.19% 12000000
Tchad 2109 37.96% 5700000
Zimbabwe 2113 NA NA
Ouganda 2126 NA NA
Éthiopie 2129 19.83% 21100000
Timor-Leste 2129 32.17% 400000
Namibie 2166 NA NA
Tadjikistan 2199 NA NA
République-Unie de Tanzanie 2204 24.52% 13400000
Kenya 2205 23.70% 11900000
Congo 2206 27.39% 1400000
Libéria 2206 38.28% 1800000
Yémen 2217 NA NA
Rwanda 2224 35.06% 4200000
Bolivie (État plurinational de) 2250 NA NA

En absence des données sur la population totale malnourrie, qui permettent de calculer le taux de malnutrition, la disponibilité en calorie journalières est un bon indicateur des conditions alimentaires. Les pays de hémisphère sud, en particulier de l’Afrique centrale (avec le Madagascar), de l’Amérique du Sud (Haïti en premier), du Moyen Orient, la Corée du Nord, l’Inde sont les plus touchés.