Nothing
## ----eval=FALSE---------------------------------------------------------------
# install.packages("mpitbR")
## ----eval=FALSE---------------------------------------------------------------
# library(devtools)
#
# install_github("girelaignacio/mpitbR")
## -----------------------------------------------------------------------------
library(mpitbR)
head(ben_dhs06)
## ----tidyverse, message=FALSE-------------------------------------------------
# Load `tidyverse` package
library(tidyverse)
# Count missing values by all the deprivation indicators columns
# (all their names start with d_*)
indicators_NAs <- ben_dhs06 %>%
summarise(across(grep("^d_",colnames(ben_dhs06)), ~sum(is.na(.))))
print(indicators_NAs)
# Now compare the total number of missing values in the dataset with the indicators.
total_NAs <- sum(is.na(ben_dhs06))
print(total_NAs == sum(indicators_NAs))
## ----na.omit------------------------------------------------------------------
ben_dhs06 <- na.omit(ben_dhs06)
## ----survey, message=FALSE----------------------------------------------------
# Load `survey` library
library(survey)
# Define the survey design
svydata <- svydesign(ids = ~psu, weights = ~weight, strata = ~strata, data = ben_dhs06)
## ----indicators---------------------------------------------------------------
# Group indicators by dimension
indicators <- list(hl = c("d_nutr","d_cm"),
ed = c("d_satt","d_educ"),
ls = c("d_elct","d_sani","d_wtr","d_hsg","d_ckfl","d_asst"))
## ----set_proj-----------------------------------------------------------------
# Set the multidimensional poverty project
set <- mpitb.set(data = svydata, indicators = indicators,
name = "ben_dhs06", desc = "Benin global MPI 2006")
## ----first_globalMPI----------------------------------------------------------
# Estimate the Benin global MPI 2006
estimate.01 <- mpitb.est(set, k = 33, measures = "M0", indmeasures = NULL)
## ----head_first_globalMPI-----------------------------------------------------
# Take a glance at the results
as.data.frame(estimate.01$lframe)
## ----rural-urban--------------------------------------------------------------
# Include living areas in the MPI calculation
estimate.02 <- mpitb.est(set, k = 33, measures = "M0", indmeasures = NULL,
over = "area", verbose = FALSE)
# View results
as.data.frame(estimate.02$lframe)
## ----plot_rural-urban, fig.cap="Multidimensional Poverty by Living Areas in Benin 2006",fig.width=5, fig.height=3, fig.align="center"----
# Save complete subgroups names to be used in the plots
subg_names <- c("National","Rural","Urban")
plt_data.MPI <- as.data.frame(estimate.02$lframe) %>%
# Replace the subgroup names by their complete names
mutate(subg = factor(stringi::stri_replace_all_regex(
subg, pattern = c("nat","rural","urban"),
replacement = subg_names, vectorize = F), levels = subg_names))
# Plot!
plt <- ggplot(plt_data.MPI,
aes(x = subg, y = b, fill = subg)) +
geom_bar(stat = "identity", position = "dodge", width = 0.5) +
# Add confidence intervals
geom_errorbar(aes(ymin = ll, ymax = ul), width = 0.15) +
# Axis labels
labs(x = "Level of Analysis", y = "MPI", fill = "Subgroups") +
# White background
theme_bw() +
# Legend position
theme(legend.position = "bottom") +
# Bars color
scale_fill_manual(values = c("#8C8C8CFF", "#88BDE6FF", "#FBB258FF"))
# Show plot
plt
## ----rural-urban2-------------------------------------------------------------
# Include incidence H and intesity A in the MPI calculation
estimate.03 <- mpitb.est(set, k = 33, measures = c("M0","H","A"), indmeasures = NULL,
over = c("area"), verbose = FALSE)
# Explore coefficients of H and A
# Incidence
coef(subset(estimate.03$lframe, measure == "H" & loa == "area"))
# Intensity
coef(subset(estimate.03$lframe, measure == "A" & loa == "area"))
## ----indicators_measures------------------------------------------------------
# Estimate indicator-specific measures
# We specify nothing in `indmeasures`
# since all of them are calculated by default.
estimate.04 <- mpitb.est(set, k = 33, measures = "M0", over = "area")
# View results
head(estimate.04$lframe)
## ----plt_data.hd--------------------------------------------------------------
# Save complete indicators names to be used in the plots
indicators_names <- c("Nutrition","Child Mortality",
"School Attendance","Years of Schooling",
"Electricity","Sanitation","Water",
"Housing","Cooking Fuel","Assets")
# Rearrange data to create fancier plots :)
plt_data.hd <- as.data.frame(estimate.04$lframe) %>%
# Filter by the indicators headcount ratios
filter(measure == "hd" | measure == "hdk") %>%
# Replace the indicators names by their complete names
mutate(indicator = factor(stringi::stri_replace_all_regex(
indicator, pattern = unlist(indicators),
replacement = indicators_names, vectorize = F), levels = indicators_names)) %>%
# Replace the subgroup names by their complete names
mutate(subg = factor(stringi::stri_replace_all_regex(
subg, pattern = c("nat","rural","urban"),
replacement = subg_names, vectorize = F), levels = subg_names)) %>%
# Replace the measure abbreviation by their complete names
mutate(measure = ifelse(measure == 'hd', 'Uncensored',
ifelse(measure == 'hdk', 'Censored', measure)))
## ----plt_hd_code,fig.cap="\\label{fig:plt_hd}Indicators headcount ratios in Benin 2006",fig.width=8, fig.height=4, fig.align="center"----
# Plot!
plt <- ggplot(plt_data.hd,
aes(x = indicator, y = b, fill = measure)) +
geom_bar(stat = "identity", width = 0.5,
position=position_dodge()) +
# Headcount as percentage
scale_y_continuous(labels = scales::percent) +
# Legend position
theme(legend.position = "right") +
# Axis Labels
labs(y = "Indicators Headcount ratios", fill = "Measure", x = "Indicators") +
# White background
theme_bw() +
# facet by population subgroups
facet_grid(rows = vars(subg)) +
# Fit indicators names by rotating them
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# Show plot
plt
## ----plot_ctb_data------------------------------------------------------------
# Filter contributions estimates
# Absolute contributions
plt_data.actb <- as.data.frame(estimate.04$lframe) %>%
filter(measure == "actb") %>%
# Order indicators by dimensions conveniently to plot
# we want to avoid alphabetical order in the plot and group by dimension
mutate(indicator = factor(stringi::stri_replace_all_regex(
indicator, pattern = unlist(indicators),
replacement = indicators_names, vectorize = F), levels = indicators_names)) %>%
# Replace the subgroup names by their complete names
mutate(subg = factor(stringi::stri_replace_all_regex(
subg, pattern = c("nat","rural","urban"),
replacement = subg_names, vectorize = F), levels = subg_names))
# Percentage contributions
plt_data.pctb <- as.data.frame(estimate.04$lframe) %>%
filter(measure == "pctb") %>%
# Order indicators by dimensions conveniently to plot
# we want to avoid alphabetical order in the plot and group by dimension
mutate(indicator = factor(stringi::stri_replace_all_regex(
indicator, pattern = unlist(indicators),
replacement = indicators_names, vectorize = F), levels = indicators_names)) %>%
# Replace the subgroup names by their complete names
mutate(subg = factor(stringi::stri_replace_all_regex(
subg, pattern = c("nat","rural","urban"),
replacement = subg_names, vectorize = F), levels = subg_names))
# Define palettes by indicators (different colors for each dimension)
palettes <- c("#A50026FF", "#D73027FF",
"#FFFFE5FF", "#FFF7BCFF",
"#B9DDF1FF", "#94C1E0FF","#75A6CBFF",
"#5889B6FF", "#42779EFF", "#2A5783FF")
## ----plot_ctb_code, fig.cap="\\label{fig:plot_ctb}Indicators contributions to the MPI in Benin 2006",fig.width=8, fig.height=4, fig.align="center"----
# Plot Absolute contribution
plt.actb <- ggplot(plt_data.actb,
aes(x = subg, y = b, fill = indicator)) +
geom_bar(stat = "identity", width = 0.5) +
# Axis Labels
labs(y = "Contribution to MPI value", fill = "Indicators", x = "Subgroups") +
# White background
theme_bw() +
# Remove legend
theme(legend.position = "none") +
# Colour palettes of each indicator
scale_fill_manual(values = palettes)
# Plot Percentage contribution
plt.pctb <- ggplot(plt_data.pctb,
aes(x = subg, y = b, fill = indicator)) +
geom_bar(stat = "identity", width = 0.5) +
# Contributions as percentage
scale_y_continuous(labels = scales::percent) +
# Axis labels
labs(y = "Percentage Contribution to the MPI", fill = "Indicators", x = "Subgroups") +
# White background
theme_bw() +
# Legend position
theme(legend.position = "right") +
# Colour palettes of each indicator
scale_fill_manual(values = palettes)
# Show plot
gridExtra::grid.arrange(plt.actb, plt.pctb, ncol = 2,
widths = c(0.40, 0.55),
heights = c(1))
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.