mpitb.est {mpitbR} | R Documentation |
Estimate multidimensional poverty indices based on the Alkire-Foster method
Description
Estimate multidimensional poverty indices (MPI) based on the Alkire-Foster (AF) method including disaggregated cross-sectional and changes over time estimates as well as quantities such as standard errors and confidences intervals (accounting for the household survey design).
Usage
mpitb.est(set, ...)
## S3 method for class 'mpitb_set'
mpitb.est(
set,
klist = NULL,
weights = "equal",
measures = c("M0", "H", "A"),
indmeasures = c("hd", "hdk", "actb", "pctb"),
indklist = NULL,
over = NULL,
...,
cotyear = NULL,
tvar = NULL,
cotmeasures = c("M0", "H", "A", "hd", "hdk"),
ann = FALSE,
cotklist = NULL,
cotoptions = "total",
noraw = FALSE,
nooverall = FALSE,
level = 0.95,
multicore = getOption("mpitb.multicore"),
verbose = TRUE
)
Arguments
set |
a "mpitb_set"-class object in which data, indicators, names and description have been specified. |
... |
other arguments |
klist |
a numeric vector representing the poverty cut-offs for calculating the MPI. Should be values between 1 and 100. |
weights |
either a character value or a numeric vector. If "equal", it automatically calculated equal nested weights. |
measures |
a character vector with the MPI and partial measures. Default include all the measures |
indmeasures |
a character vector with the indicator-specific measures. Default include all the measures |
indklist |
a numeric vector representing the poverty cut-offs for calculating indicator-specific measures. Should be values between 1 and 100. If |
over |
a character vector with columns names of the population subgroups in data. |
cotyear |
a character value containing the column name of the years variable in the data. This argument is required if annualized changes over time measure are desired. |
tvar |
a character value containing the column name of the time ID variable in the data. This argument determines if changes over time are calculated. |
cotmeasures |
a character vector with the changes over time measures. Default include all the measures |
ann |
logical. If |
cotklist |
a numeric vector representing the poverty cut-offs for calculating changes over time measures. Should be values between 1 and 100. If |
cotoptions |
a character vector. If "total", estimates change over the total period of observation, i.e. from the first year of observation to the last year of observation. If "insequence", then estimates all consecutive (i.e. year-to-year) changes. The default is "total" |
noraw |
logical. If |
nooverall |
logical. If |
level |
numeric value with the desired confidence level for the confidence interval calculations in decimal format. Default value is 0.95. |
multicore |
logical. Use |
verbose |
logical. If TRUE, print information messages to the console so the user can control the dimension and indicators weights and which measures are being estimated in the process. If FALSE, these messages are ommited. |
Details
This functions is a S3 method for "mpitb_set" class. Hence, the project
has to be correctly specified with mpitb.set()
function previously.
The vector of poverty cut-offs (k
) in percentage point, i.e., numbers
between 1 and 100. Although the deprivation score (c_i = \sum_{i=1}^n w_j g_{ij}^0
) is a real-valued
function, given the weights, it will assume a limited number of values. The same
occurs with the censored deprivation score. Therefore, despite accepting infinite
number of values, results may not vary with close values of k
. For this reason,
it is recommended to use a very limited number of poverty cut-offs for the analysis.
If nothing is passed to weights
argument, equal nested weights are calculated
by dimension and indicator. In this case, it is preferred to pass indicators as a list
in mpitb.set()
. If the user wants to pass another weighting
scheme, she should first pass the indicators as a character vector in mpitb.set()
and then pass a numeric vector in weights
such that the elements of this
vector match with the vector of indicators and all the weights sum up to 1.
To specify the population subgroups (e.g., living area, sex, etc.) and estimate the
disaggregated measures by each level of the subgroup, the user should pass the column
names of the population subgroups in the data using over
argument. If over
is NULL
, the measure are estimate using all the observations (e.g., national-level).
If population subgroups are specified and nooverall
is set to TRUE
,
aggregate (or national-level) estimates will not be produced.
Details on the AF measures estimation:
Available measures include the Adjusted Headcount Ratio (M_0
), the
Incidence (H
) and the Intensity of poverty (A
), as well as other
indicator-specific measures
such as the uncensored headcount ratio (h_j
), the censored headcount ratio (h_j(k)
)
and the absolute and percentage contribution.
The three first partial measures are pass in measures
argument. By default,
mpitb.est
calculates every measure c("M0","H","A")
. The poverty
cut-off (k
) for these measures estimation is specified in klist
argument.
The indicator-specific measure are passed in indmeasures
argument. By default,
mpitb.est
calculates every measure c("hd","hdk","actb","pctb")
. The poverty
cut-off (k
) for these measures estimation is specified in indklist
argument.
If indklist
is NULL
, poverty cut-offs in klist
is used.
The absolute contribution c("actb")
cannot be estimated without also
passing the censored headcount
ratios of each indicator c("hdk")
and the percentage contribution cannot be
calculated without c("hdk")
and c("M0")
passed in measures
argument.
If any of these arguments is NULL
, mpitb.est()
skips these
measures. So it is useful for avoid calculating unnecessary estimations. For example,
if measures = c("H","A")
and indmeasures = NULL
, only the Incidence and
the Intensity will be estimated.
Details on changes over time measures:
The user can decide which AF measure changes over time she want to study. This is
set in cotmeasures
. By default it calculates all the measure, except contributions, i.e.,
cotmeasure = c("M0","A","H","hd","hdk")
. It would be important to check this argument in order to save time.
The poverty
cut-off (k
) for these measures estimation is specified in cotklist
argument.
If cotklist
is NULL
, poverty cut-offs in klist
is used.
The standard errors of the changes over time measures is estimated using Delta method.
For calculating any point estimate for each time period and any change over time
measure, tvar
should not be NULL
. This argument should be a character with the
column name that references the time period t = 1, \ldots,T
.
Changes over time measure can also be annualized. For such measure, information about
the years is needed. cotyear
should be a character with the column name
that have information about the years. Decimal digits are permitted. Argument ann
is a logical
value. If TRUE
, annualized measures are calculated. If cotyear
is passed, ann
is automatically set to TRUE
. If the former is not NULL
and
ann
is FALSE
, only non-annualized
measures are estimated. If only annualized measure are
under study, the user can switch noraw
to TRUE
to avoid estimating non-annualized changes.
Finally, if there are more than two years survey rounds, the user can decide if estimate the
change over the total period of observation, i.e. from the first year of observation to the
last year of observation or year-to-year changes. To do the former, cotoptions = "total"
whereas for the latter case, cotoptions = "insequence"
. By default, cotoptions = "total"
to avoid unnecessary estimations.
Some details on other arguments and estimations:
The package includes the possibility to do parallel calculations over all the measures and poverty cut-offs.
If multicore
is TRUE
, the package proceeds with parallel estimations. Caveat: this package uses
Forking method for parallelization which is only available on Unix-like systems (including Linux), i.e., Windows
users cannot benefit from parallelization.
For every measure the standard errors and confidence intervals are estimated. The former are estimated taking into
account the survey structure whereas the latter are estimated considering measures as proportions using svyciprop()
function from "survey" R package (it uses the "logit" method which consists of fitting a logistic regression model
and computes a Wald-type interval on the log-odds scale, which is then transformed to the probability scale).
Value
An object with S3 class "mpitb_est" containing two data frames with the estimates of the cross-sectional measures ("lframe"-class) and changes over time ("cotframe"-class).
Author(s)
Ignacio Girela
References
Alkire, S., Foster, J. E., Seth, S., Santos, M. E., Roche, J., & Ballon, P. (2015). Multidimensional poverty measurement and analysis. Oxford University Press.
Alkire, S., Roche, J. M., & Vaz, A. (2017). Changes over time in multidimensional poverty: Methodology and results for 34 countries. World Development, 94, 232-249. doi:10.1016/j.worlddev.2017.01.011
Suppa, N. (2023). mpitb: A toolbox for multidimensional poverty indices. The Stata Journal, 23(3), 625-657. doi:10.1177/1536867X231195286
See Also
coef
, confint
, and summary
methods, and mpitb.set
function.
Examples
library(mpitbR)
data <- subset(syn_cdta)
data <- na.omit(data)
svydata <- survey::svydesign(id=~psu, weights = ~weight, strata = ~stratum, data = data)
indicators <- list(d1 = c("d_nutr","d_cm"),
d2 = c("d_satt","d_educ"),
d3 = c("d_elct","d_sani","d_wtr","d_hsg","d_ckfl","d_asst"))
# Specify mpitb project
set <- mpitb.set(svydata, indicators = indicators, name = "myname", desc = "pref. desc")
# Estimate the cross-sectional MPI and compare non-annualized changes over time
est <- mpitb.est(set, klist = c(33), measures = "M0", indmeasures = NULL,
tvar = "t", cotmeasures = "M0",
weights = "equal", over = c("area"))
coef(subset(est$lframe, measure == "M0" & t == 1))
confint(subset(est$lframe, measure == "M0" & t == 1))
summary(subset(est$lframe, measure == "M0" & t == 1))
coef(subset(est$cotframe, measure == "M0"))
confint(subset(est$cotframe, measure == "M0"))
summary(subset(est$cotframe, measure == "M0" & ctype == "abs" & ann == 0 & k == 33))