✔️ mainly useful for studies of the income of the elderly following EU definitions
✔️ a ratio of medians
✔️ less sensitive to outliers
❌ solely a measure of medians and does not fully account for the income distribution
❌ not very common outside of the EU
❌ hard to interpret
❌ not (necessarily) a dependency measure
❌ not an inequality measure (fails the Pigou-Dalton principle)
❌ not (exactly) a poverty measure (fails the poverty-focus axiom)
The relative median income ratio (RMIR) is the ratio of the median income of people aged above a value (65) to the median of people aged below the same value. In mathematical terms,
\[ rmir = \frac{median\{y_i; age_i >65 \}}{median\{y_i; age_i \leq 65 \}}. \]
The details of the linearization of the RMIR and are discussed by Deville (1999Deville, Jean-Claude. 1999. “Variance Estimation for Complex Statistics and Estimators: Linearization and Residual Techniques.” Survey Methodology 25 (2): 193–203. http://www.statcan.gc.ca/pub/12-001-x/1999002/article/4882-eng.pdf.) and Osier (2009Osier, Guillaume. 2009. “Variance Estimation for Complex Indicators of Poverty and Inequality.” Journal of the European Survey Research Association 3 (3): 167–95. http://ojs.ub.uni-konstanz.de/srm/article/view/369.).
The R
vardpoor
package (Breidaks, Liberts, and Ivanova 2016Breidaks, Juris, Martins Liberts, and Santa Ivanova. 2016. “Vardpoor: Estimation of Indicators on Social Exclusion and Poverty and Its Linearization, Variance Estimation.” Riga, Latvia: CSB.), created by researchers at the Central Statistical Bureau of Latvia, includes a RMIR coefficient calculation using the ultimate cluster method. The example below reproduces those statistics.
Load and prepare the same data set:
# load the convey package
library(convey)
# load the survey library
library(survey)
# load the vardpoor library
library(vardpoor)
# load the vardpoor library
library(laeken)
# load the synthetic EU statistics on income & living conditions
data(eusilc)
# make all column names lowercase
names(eusilc) <- tolower(names(eusilc))
# add a column with the row number
dati <- data.table::data.table(IDd = 1:nrow(eusilc), eusilc)
# calculate the rmir coefficient
# using the R vardpoor library
varpoord_rmir_calculation <-
varpoord(
# analysis variable
Y = "eqincome",
# weights variable
w_final = "rb050",
# row number variable
ID_level1 = "IDd",
# row number variable
ID_level2 = "IDd",
# strata variable
H = "db040",
N_h = NULL ,
# clustering variable
PSU = "rb030",
# data.table
dataset = dati,
# age variable
age = "age",
# rmir coefficient function
type = "linrmir",
# get linearized variable
outp_lin = TRUE
)
# construct a survey.design
# using our recommended setup
des_eusilc <-
svydesign(
ids = ~ rb030 ,
strata = ~ db040 ,
weights = ~ rb050 ,
data = eusilc
)
# immediately run the convey_prep function on it
des_eusilc <- convey_prep(des_eusilc)
# coefficients do match
varpoord_rmir_calculation$all_result$value
## [1] 0.9330361
## eqincome
## 0.9330361
# linearized variables do match
# vardpoor
lin_rmir_varpoord <- varpoord_rmir_calculation$lin_out$lin_rmir
# convey
lin_rmir_convey <-
attr(svyrmir( ~ eqincome , des_eusilc, age = ~ age), "lin")
# check equality
all.equal(lin_rmir_varpoord, lin_rmir_convey[, 1])
## [1] TRUE
## eqincome
## eqincome 0.000127444
## [1] 0.0001272137
## [1] 0.0112789
## eqincome
## eqincome 0.01128911
The variance estimator and the linearized variable \(z\) are both defined in Linearization-Based Variance Estimation. The functions convey::svyrmir
and vardpoor::linrmir
produce the same linearized variable \(z\).
However, the measures of uncertainty do not line up, because library(vardpoor)
defaults to an ultimate cluster method that can be replicated with an alternative setup of the survey.design
object.
# within each strata, sum up the weights
cluster_sums <-
aggregate(eusilc$rb050 , list(eusilc$db040) , sum)
# name the within-strata sums of weights the `cluster_sum`
names(cluster_sums) <- c("db040" , "cluster_sum")
# merge this column back onto the data.frame
eusilc <- merge(eusilc , cluster_sums)
# construct a survey.design
# with the fpc using the cluster sum
des_eusilc_ultimate_cluster <-
svydesign(
ids = ~ rb030 ,
strata = ~ db040 ,
weights = ~ rb050 ,
data = eusilc ,
fpc = ~ cluster_sum
)
# again, immediately run the convey_prep function on the `survey.design`
des_eusilc_ultimate_cluster <-
convey_prep(des_eusilc_ultimate_cluster)
# matches
stopifnot(all.equal(
attr(
svyrmir(~ eqincome , des_eusilc_ultimate_cluster , age = ~ age) ,
'var'
)[1],
varpoord_rmir_calculation$all_result$var
))
# matches
stopifnot(all.equal(SE(
svyrmir(~ eqincome , des_eusilc_ultimate_cluster, age = ~ age)
)[1], varpoord_rmir_calculation$all_result$se))
For additional usage examples of svyrmir
, type ?convey::svyrmir
in the R
console.
This section displays example results using nationally-representative surveys from both the United States and Brazil. We present a variety of surveys, levels of analysis, and subpopulation breakouts to provide users with points of reference for the range of plausible values of the svyrmir
function.
To understand the construction of each survey design object and respective variables of interest, please refer to section 1.4 for CPS-ASEC, section 1.5 for PNAD Contínua, and section 1.6 for SCF.
## rmir SE
## htotval 0.58634 0.0077
## sex htotval se.htotval
## male male 0.6313901 0.01140849
## female female 0.5489581 0.01019126
## rmir SE
## ftotval 0.73108 0.0089
## sex ftotval se.ftotval
## male male 0.6738011 0.01491180
## female female 0.7829485 0.02052539
## rmir SE
## pearnval 1 0.0141
## sex pearnval se.pearnval
## male male 1.048387 0.03250064
## female female 0.990000 0.02940573
## rmir SE
## deflated_per_capita_income 1.3387 0.009
svyby(
~ deflated_per_capita_income ,
~ sex ,
pnadc_design ,
svyrmir ,
na.rm = TRUE ,
age = ~ v2009
)
## sex deflated_per_capita_income se.deflated_per_capita_income
## male male 1.292163 0.009593305
## female female 1.382046 0.010980132
## rmir SE
## deflated_labor_income 0.94302 0.0239
## sex deflated_labor_income se.deflated_labor_income
## male male 1.050714 0.04347873
## female female 0.812591 0.01104187
## Multiple imputation results:
## with(scf_design, svyrmir(~networth, age = ~x8022))
## scf_MIcombine(with(scf_design, svyrmir(~networth, age = ~x8022)))
## results se
## networth 2.689949 0.1708213
## Multiple imputation results:
## with(scf_design, svyby(~networth, ~hhsex, svyrmir, age = ~x8022))
## scf_MIcombine(with(scf_design, svyby(~networth, ~hhsex, svyrmir,
## age = ~x8022)))
## results se
## male 2.596248 0.2319167
## female 5.501855 1.3986325
## Multiple imputation results:
## with(scf_design, svyrmir(~income, age = ~x8022))
## scf_MIcombine(with(scf_design, svyrmir(~income, age = ~x8022)))
## results se
## income 0.7061228 0.02895166
## Multiple imputation results:
## with(scf_design, svyby(~income, ~hhsex, svyrmir, age = ~x8022))
## scf_MIcombine(with(scf_design, svyby(~income, ~hhsex, svyrmir,
## age = ~x8022)))
## results se
## male 0.7510737 0.03486002
## female 0.7900000 0.05072419