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 c("M0","A","H"). For more information, see Details section below.

indmeasures

a character vector with the indicator-specific measures. Default include all the measures c("hd", "hdk", "actb", "pctb"). For more information, see Details section below.

indklist

a numeric vector representing the poverty cut-offs for calculating indicator-specific measures. Should be values between 1 and 100. If NULL, it will be equal to klist.

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 c("M0","A","H","hd", "hdk"). For more information, see Details section below.

ann

logical. If TRUE, annualized changes over time measure are estimated. If FALSE, only non-annualized changes over time are calculated. Default value is FALSE.

cotklist

a numeric vector representing the poverty cut-offs for calculating changes over time measures. Should be values between 1 and 100. If NULL, it will be equal to klist.

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 TRUE, non-annualized changes over time measure are not estimated. Default is FALSE.

nooverall

logical. If TRUE, estimations over all the observations are omitted, e.g., national level calculations, and only measure for the specified subgroups are estimated. Default is FALSE.

level

numeric value with the desired confidence level for the confidence interval calculations in decimal format. Default value is 0.95.

multicore

logical. Use multicore package for parallel estimation by measure and poverty cut-off over multiple processors? It uses forking approach. See Details below.

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))

[Package mpitbR version 1.0.0 Index]