There are several ways of measuring poverty rate. One is through income or expenditure. For example, since 2011, the World Bank has set a cutoff of $1.90 a day income in determining extreme poverty. Using expenditure (real), you divide total household expenditure per day by total adult equivalence. A household is then classified as poor if it falls below the poverty line.
Multidimensional poverty index (MPI) is currently used by UNEP as a global poverty index and has been adapted in SDGs. MPI is based on Alkire-Foster method. MPI reveals a different pattern of poverty than income poverty, as it illuminates a different set of deprivations. The MPI has three dimensions: health, education, and standard of living. A person is identified as multidimensionally poor (or ‘MPI poor’) if he/she is deprived in at least one third (33.3%) of the weighted sum of all relevant indicators. To be deprived means that one fall below the weighted score in each dimension. The following dimensions and indicators are used in coming up with the MPI.
MPI is calculated as follows:
\[\begin{equation}
MPI=H\times A
\end{equation}\]
Where
* A is the intensity of poverty i.e. average percentage of dimensions in which poor people are deprived
* H Is the percentage of people who are poor, i.e. headcount ratio
If a person is deprived in 20-33.3% of the weighted indicators the person is considered ‘Vulnerable to Poverty’, and if deprived in 50% or more (i.e. k=50%), the person is identified as being in ‘Severe Poverty’.
The example that I will use is based on a survey (I have generated the data) and has the three dimensions. Indicators that I have used differ slightly with those listed earlier. Weights applied are clearly indicated.
First, import the stata file that contains the data. The data has not been weighted (yet), and contain all variables necessary. Most variables are binary e.g. yes where a household is deprived.
Apply all necessary packages required by R.
library(haven)
library(knitr)
library(kableExtra)
library(dplyr)
library(tidyr)
library(ggplot2)
poverty <- read_dta("D:/My projects/Stanley/poverty.dta")
head(poverty,10) %>%
kable("html") %>%
kable_styling(font_size=12) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
ID | hdds | health | schoolchildren | toilet | water | fuel | floor | bicycle | radio | tv | phone | no_assets |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 7 | 2 | 0 | 1 | 5 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
2 | 7 | 1 | 1 | 1 | 15 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
3 | 8 | 2 | 1 | 1 | 30 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
4 | 8 | 3 | 1 | 1 | 60 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
5 | 6 | 3 | 1 | 1 | 30 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
6 | 6 | 1 | 1 | 1 | 60 | 1 | 0 | 1 | 1 | 0 | 1 | 3 |
7 | 4 | 1 | 1 | 1 | 20 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
8 | 5 | 1 | 1 | 1 | 20 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
9 | 5 | 1 | 1 | 1 | 15 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
10 | 9 | 1 | 1 | 1 | 15 | 1 | 1 | 0 | 1 | 0 | 1 | 2 |
Weight the data, and display the data of the first 15 respondents. A column of people that are experiencing multidimensional poverty has been included. A person is multidimensional poor if weighted sum of dimensions>0.33.
poverty=select(poverty,ID,hdds,health,schoolchildren,toilet,water,fuel,floor,no_assets)
poverty_data= poverty %>%
mutate(hdds=round(1/6*(ifelse(hdds<=3,1,0)),2),
health=round(1/6*(ifelse(health>1,0,1)),2),
schoolchildren=round(1/3*(ifelse(schoolchildren>0,1,0)),2),
toilet=round(1/15*toilet,2),
water=round(1/15*(ifelse(water>30,1,0)),2),
fuel=round(1/15*fuel,2),
floor=round(1/15*floor,2),
no_assets=round(1/15*(ifelse(no_assets>1,0,1)),2))
poverty_data= poverty_data%>%
mutate(weighted.sum=rowSums(poverty_data[,c("hdds","schoolchildren","toilet","water","fuel","floor","no_assets")]),
multidimensionalpoor=factor(ifelse(weighted.sum>0.33,0,1),labels = c("Yes","No")))
head(poverty_data,15) %>%
kable("html") %>%
kable_styling(font_size=12,position = "center",full_width = T) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
ID | hdds | health | schoolchildren | toilet | water | fuel | floor | no_assets | weighted.sum | multidimensionalpoor |
---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0.00 | 0.00 | 0.07 | 0.00 | 0.07 | 0.07 | 0.07 | 0.28 | No |
2 | 0 | 0.17 | 0.33 | 0.07 | 0.00 | 0.07 | 0.07 | 0.07 | 0.61 | Yes |
3 | 0 | 0.00 | 0.33 | 0.07 | 0.00 | 0.07 | 0.07 | 0.07 | 0.61 | Yes |
4 | 0 | 0.00 | 0.33 | 0.07 | 0.07 | 0.07 | 0.07 | 0.07 | 0.68 | Yes |
5 | 0 | 0.00 | 0.33 | 0.07 | 0.00 | 0.07 | 0.07 | 0.07 | 0.61 | Yes |
6 | 0 | 0.17 | 0.33 | 0.07 | 0.07 | 0.07 | 0.00 | 0.00 | 0.54 | Yes |
7 | 0 | 0.17 | 0.33 | 0.07 | 0.00 | 0.07 | 0.00 | 0.07 | 0.54 | Yes |
8 | 0 | 0.17 | 0.33 | 0.07 | 0.00 | 0.07 | 0.00 | 0.07 | 0.54 | Yes |
9 | 0 | 0.17 | 0.33 | 0.07 | 0.00 | 0.07 | 0.00 | 0.07 | 0.54 | Yes |
10 | 0 | 0.17 | 0.33 | 0.07 | 0.00 | 0.07 | 0.07 | 0.00 | 0.54 | Yes |
11 | 0 | 0.00 | 0.33 | 0.07 | 0.00 | 0.07 | 0.00 | 0.07 | 0.54 | Yes |
12 | 0 | 0.00 | 0.33 | 0.07 | 0.07 | 0.07 | 0.00 | 0.07 | 0.61 | Yes |
13 | 0 | 0.00 | 0.33 | 0.07 | 0.07 | 0.07 | 0.00 | 0.07 | 0.61 | Yes |
14 | 0 | 0.00 | 0.33 | 0.07 | 0.00 | 0.07 | 0.07 | 0.00 | 0.54 | Yes |
15 | 0 | 0.00 | 0.33 | 0.07 | 0.00 | 0.07 | 0.07 | 0.07 | 0.61 | Yes |
Get headcount ratio (H) of those experiencing multidimensional poverty which in this case is 19.2%.
hh_ratio=round(prop.table(table(poverty_data$multidimensionalpoor)),3); hh_ratio
##
## Yes No
## 0.192 0.808
We are interested with MPI. Thus go ahead and get intensity i.e.average percentage of dimensions in which poor people are deprived.
First, subset the data according to those who are experiencing multidimensional poverty i.e. “Yes” in the last column.
Based on the result, intensity is 0.2360774. This implies that the average number of dimensions in which poor people are deprived is 24%.
intensity_data=subset(poverty_data,multidimensionalpoor=="No")
avg=mean(poverty_data$weighted.sum,na.rm=T);avg
## [1] 0.2360774
After calculation, MPI= 0.0453269, and this reflect population that is multidimensionally poor adjusted by the intensity of the deprivation suffered.
To check contribution of each indicator, we need to get censored headcount ratio of dimension \(h_{j}(k)\) for each dimension, MPI denoted as \(M_{o}\), weights \(w_{j}\).
\[\begin{equation} \phi_{j}=\frac{w_{j}\times h_{j}(k)}{M_{o}} \end{equation}\]
In the data, first censore all non-poor people, by replacing weights in each column for non poor people. Then find censored headcount ratio for each dimension i.e. proportion of poor people deprived in each column.
var=names(poverty_data) %in% c("weighted.sum")
poverty_data2=poverty_data[!var]
for(i in seq_along(poverty_data)){
if (poverty_data2$multidimensionalpoor[i]=="No"){
poverty_data2$hdds[i]=0
poverty_data2$health[i]=0
poverty_data2$schoolchildren[i]=0
poverty_data2$toilet[i]=0
poverty_data2$water[i]=0
poverty_data2$fuel[i]=0
poverty_data2$floor[i]=0
poverty_data2$no_assets[i]=0
}
}
head(filter(poverty_data2,multidimensionalpoor=="No")) %>% ##Display if results for No are true
kable("html") %>%
kable_styling(font_size=12,position = "center",full_width = T) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
ID | hdds | health | schoolchildren | toilet | water | fuel | floor | no_assets | multidimensionalpoor |
---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0.00 | 0 | 0.00 | 0 | 0.00 | 0.00 | 0.00 | No |
26 | 0 | 0.17 | 0 | 0.00 | 0 | 0.07 | 0.07 | 0.07 | No |
27 | 0 | 0.17 | 0 | 0.07 | 0 | 0.07 | 0.07 | 0.07 | No |
28 | 0 | 0.17 | 0 | 0.07 | 0 | 0.07 | 0.07 | 0.07 | No |
32 | 0 | 0.00 | 0 | 0.07 | 0 | 0.07 | 0.07 | 0.07 | No |
33 | 0 | 0.00 | 0 | 0.07 | 0 | 0.07 | 0.07 | 0.07 | No |
Get the censored head count for each dimension. For ease of interpretation, we will use the bar graph below.
options(digits=2)
hdds=1/6*prop.table(table(poverty_data2$hdds))[2]
health=1/6*prop.table(table(poverty_data2$health))[2]
schoolchildren=1/3*prop.table(table(poverty_data2$schoolchildren))[2]
toilet=1/15*prop.table(table(poverty_data2$toilet))[2]
water=1/15*prop.table(table(poverty_data2$water))[2]
fuel=1/15*prop.table(table(poverty_data2$fuel))[2]
floor=1/15*prop.table(table(poverty_data2$floor))[2]
no_assets=1/15*prop.table(table(poverty_data2$no_assets))[2]
data=c(hdds,health,schoolchildren,toilet,water,fuel,floor,no_assets)
names(data)=c(1,2,3,4,5,6,7,8)
df=data.frame(indicator=c("hdds","health","schoolchildren","toilet","water","fuel","floor","no_assets"),weight_hr=t(t(data)))
total=sum(df$weight_hr)
df=mutate(df,contribution=weight_hr/total)
data=select(df,indicator,contribution); data
## indicator contribution
## 1 hdds 0.089
## 2 health 0.122
## 3 schoolchildren 0.188
## 4 toilet 0.160
## 5 water 0.035
## 6 fuel 0.119
## 7 floor 0.122
## 8 no_assets 0.165
We generate a simple graph to show contribution of each indicator to multidimensional poverty index. From the chart, enrollment of school-aged children to school contribute the highest proportion thus showing its centrality in determining poverty. Distance walked to fetch water has the lowest contribution.
ggplot(data, aes(x = reorder(indicator,-contribution), y = contribution)) +
geom_bar(stat= "identity", fill = "skyblue2", width = 0.7) +
ggtitle("Contribution of each indicator") + xlab("")