Nothing
knitr::opts_chunk$set( collapse = TRUE, comment = "#>", warning = FALSE, message = FALSE, fig.width = 7, fig.height = 5 )
Cette vignette présente le calcul des indicateurs de développement humain conformes aux méthodologies internationales PNUD/OPHI, directement utilisables pour les rapports nationaux sur les ODD.
library(statAfrikR) library(dplyr) library(ggplot2)
idh_benin <- calcul_idh( esperance_vie = 61.8, annees_scol_moy = 4.5, annees_scol_att = 13.1, rnb_habitant = 3360, annee = 2023 ) cat("IDH Bénin 2023 :\n") cat(" IDH global :", idh_benin$idh, "\n") cat(" Santé :", idh_benin$indice_sante, "\n") cat(" Éducation :", idh_benin$indice_education, "\n") cat(" Revenu :", idh_benin$indice_revenu, "\n") cat(" Catégorie :", idh_benin$categorie, "\n")
pays_afrique <- tibble::tibble( pays = c("Bénin", "Burkina Faso", "Sénégal", "Côte d'Ivoire", "Mali", "Niger", "Togo", "Guinée"), esperance_vie = c(61.8, 61.6, 68.7, 59.1, 59.3, 62.4, 61.5, 58.9), annees_scol_moy = c(4.5, 2.0, 3.5, 5.3, 2.4, 2.1, 5.5, 3.1), annees_scol_att = c(13.1, 9.3, 14.5, 12.1, 7.5, 9.9, 13.1, 11.2), rnb_habitant = c(3360, 2310, 3690, 5510, 2200, 1340, 2780, 2420) ) idh_regional <- pays_afrique |> dplyr::rowwise() |> dplyr::mutate( res = list(calcul_idh(esperance_vie, annees_scol_moy, annees_scol_att, rnb_habitant)), idh = res$idh, indice_sante = res$indice_sante, indice_educ = res$indice_education, indice_revenu = res$indice_revenu, categorie = res$categorie ) |> dplyr::select(-res) |> dplyr::ungroup() |> dplyr::arrange(dplyr::desc(idh)) knitr::kable( idh_regional[, c("pays", "idh", "categorie", "indice_sante", "indice_educ", "indice_revenu")], caption = "IDH — Comparaison régionale Afrique de l'Ouest", digits = 3 )
idh_long <- idh_regional |> tidyr::pivot_longer( cols = c(indice_sante, indice_educ, indice_revenu), names_to = "composante", values_to = "valeur" ) |> dplyr::mutate( composante = dplyr::recode(composante, indice_sante = "Santé", indice_educ = "Éducation", indice_revenu = "Revenu" ), pays = forcats::fct_reorder(pays, idh) ) graphique_barres( idh_long, var_x = "pays", var_y = "valeur", var_groupe = "composante", position = "stack", titre = "Composantes de l'IDH — Afrique de l'Ouest", label_y = "Valeur de l'indice" ) + ggplot2::coord_flip()
set.seed(2024) n <- 3000 donnees_menages <- tibble::tibble( id_menage = 1:n, region = sample(c("Nord", "Sud", "Est", "Ouest"), n, replace = TRUE), milieu = sample(c("Urbain", "Rural"), n, replace = TRUE, prob = c(0.35, 0.65)), poids = runif(n, 0.5, 2.5), # Dimension Santé malnutrition = sample(c(0L, 1L), n, replace = TRUE, prob = c(0.72, 0.28)), mortalite_enf = sample(c(0L, 1L), n, replace = TRUE, prob = c(0.88, 0.12)), # Dimension Éducation scol_adulte = sample(c(0L, 1L), n, replace = TRUE, prob = c(0.62, 0.38)), scol_enfants = sample(c(0L, 1L), n, replace = TRUE, prob = c(0.71, 0.29)), # Dimension Niveau de vie electricite = sample(c(0L, 1L), n, replace = TRUE, prob = c(0.52, 0.48)), eau_potable = sample(c(0L, 1L), n, replace = TRUE, prob = c(0.58, 0.42)), assainissement = sample(c(0L, 1L), n, replace = TRUE, prob = c(0.55, 0.45)), combustible = sample(c(0L, 1L), n, replace = TRUE, prob = c(0.60, 0.40)), logement = sample(c(0L, 1L), n, replace = TRUE, prob = c(0.75, 0.25)), actifs = sample(c(0L, 1L), n, replace = TRUE, prob = c(0.68, 0.32)) )
# Définition des dimensions IPM standard OPHI indicateurs_ipm <- list( sante = c("malnutrition", "mortalite_enf"), education = c("scol_adulte", "scol_enfants"), niveau_vie = c("electricite", "eau_potable", "assainissement", "combustible", "logement", "actifs") ) resultat_ipm <- calcul_ipm( donnees_menages, var_nutrition = 'malnutrition', var_mortalite_inf = 'mortalite_enf', var_scolarisation = 'scol_enfants', var_annees_scol = 'scol_adulte', var_electricite = 'electricite', var_eau = 'eau_potable', var_assainissement = 'assainissement', var_combustible = 'combustible', var_logement = 'logement', var_actifs = 'actifs', poids = 'poids', seuil_k = 1/3 )
donnees_enrichies <- resultat_ipm$donnees_enrichies ipm_region <- donnees_enrichies |> dplyr::group_by(region) |> dplyr::summarise( n_menages = dplyr::n(), taux_pauvrete_md = round(mean(.est_pauvre_multi) * 100, 1), score_moyen = round(mean(.score_privation), 3), .groups = "drop" ) |> dplyr::arrange(dplyr::desc(taux_pauvrete_md)) knitr::kable( ipm_region, caption = "Pauvreté multidimensionnelle par région", col.names = c("Région", "Ménages", "Taux pauvreté (%)", "Score moyen") )
set.seed(2024) donnees_revenus <- tibble::tibble( menage = 1:2000, milieu = sample(c("Urbain", "Rural"), 2000, replace = TRUE, prob = c(0.4, 0.6)), quintile = sample(1:5, 2000, replace = TRUE), depense_totale = exp(rnorm(2000, log(500000), 0.8)), poids = runif(2000, 0.5, 2.0) )
inegalites <- decomposer_inegalite( donnees_revenus, var_revenu = "depense_totale", var_groupe = "milieu", poids = "poids" )
knitr::kable( inegalites$decomposition, caption = "Décomposition des inégalités par milieu", digits = 3 )
# Construction manuelle de la courbe de Lorenz x_sorted <- sort(donnees_revenus$depense_totale) n <- length(x_sorted) lorenz_df <- tibble::tibble( pop_cumulee = c(0, seq_len(n) / n), rev_cumulee = c(0, cumsum(x_sorted) / sum(x_sorted)) ) ggplot2::ggplot(lorenz_df, ggplot2::aes(pop_cumulee, rev_cumulee)) + ggplot2::geom_line(color = "#1B6CA8", linewidth = 1.2) + ggplot2::geom_abline(intercept = 0, slope = 1, linetype = "dashed", color = "#888888") + ggplot2::annotate("text", x = 0.7, y = 0.35, label = paste0("Gini = ", inegalites$gini), color = "#1B6CA8", fontface = "bold", size = 4) + ggplot2::labs( title = "Courbe de Lorenz — Dépenses des ménages", x = "Part cumulée de la population", y = "Part cumulée des dépenses" ) + theme_ins()
tibble::tibble( Indicateur = c("IDH Bénin 2023", "IPM (H × A)", "Incidence (H)", "Intensité (A)", "Gini"), Valeur = c( idh_benin$idh, resultat_ipm$ipm, round(resultat_ipm$H, 3), round(resultat_ipm$A, 3), inegalites$gini ), Interpretation = c( idh_benin$categorie, paste0(round(resultat_ipm$ipm * 100, 1), "% de pauvreté multidim."), paste0(round(resultat_ipm$H * 100, 1), "% de ménages pauvres"), paste0(round(resultat_ipm$A * 100, 1), "% de privations en moyenne"), dplyr::case_when( inegalites$gini < 0.3 ~ "Inégalités faibles", inegalites$gini < 0.4 ~ "Inégalités modérées", TRUE ~ "Inégalités élevées" ) ) ) |> knitr::kable(caption = "Tableau de bord des indicateurs ODD")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.