FuzzyPovertyR

library(FuzzyPovertyR)

Introduction

FuzzyPovertyR is a package for estimating fuzzy poverty indexes Broadly speaking, a fuzzy poverty index is an index that ranges in the set \(Q=[0,1]\). A fuzzy indexes assigns to each statistical unit a value in this interval according to a given membership function \(\mu(x_i)\in Q\) where \(x\) is a poverty predicate. The more the value of \(\mu\) the more the individual is reagarded as “poor” with respect to the poverty predicate \(x\). In socio-economic surveys \(x\) may be the equivalised disposable income, or expenditure. However, in principle \(x\) may be a generic poverty predicate that the researcher needs to analyse, for example this could be a variable that relates to access to transports, services and other facilities.

Below we distinguish between monetary and supplementary poverty indexes (or measures). A fuzzy monetary poverty measure is calculated over a numeric vector of length \(N\) (the available sample size). A supplementary poverty index is calculated on a data.frame of items of a questionnaire that relates to other dimensions of poverty other than monetary.

The dataset coming from the package is loaded in the environment with

data(eusilc)

Fuzzy Monetary poverty measures

The package lets the user choose among different membership functions trough the argument fm of the fm_construct function. The membership function available are

\[ \begin{split} \mu_i&=\left(1-F^{(M)}_i\right)^{\alpha-1}\left(1-L^{(M)}_i\right)=\\ &=\left(\frac{\sum_j w_j|x_j> x_i}{\sum_j w_j|x_j> x_1}\right)^{\alpha-1} \left(\frac{\sum_j w_jx_j|x_j> x_i}{\sum_j w_jx_j|x_j> x_1}\right) \end{split} \]

where \(w_i\) is the sampling weight of unit \(i\).

\[ \mu_Q(x_i) = \begin{cases} 1 & a \le x_i < b\\ \frac{-x_i}{c-b} + \frac{c}{c-b} & b \le x_i < c\\ 0 & x_i < a \cup x_i \ge c\\ \end{cases} \]

\[ \mu_Q(x_i) = \begin{cases} 1 & 0 < x_i < z_{min} \\ \frac{-x_i}{z_{\max} - z_{\min}} + \frac{-z_{\max}}{z_{\max} - z_{\min}} & z_{min} \le x_i < z_{max}\\ 0 & x_i \ge z_max \end{cases} \]

\[ \mu_Q(x_i) = \begin{cases} 1 & x_i = 0\\ \frac{z'' - x_i}{z''} & 0 \le x_i < z''\\ 0 & x_i \ge z'' \end{cases} \]

For each of the functions below the breakdown argument can be specified in case the user’s want to obtain estimates for given sub-domains.

Verma

The computation of a fuzzy poverty index that uses the fm="verma"argument goes trough the following steps:

  1. Estimation of the Head Count Ratio (HCR). The package FuzzyPovertyR provides the function HCR to estimate the Head Count Ratio from data. It outputs a list of three elements: a classification of units into being poor or not poor, the poverty line, and the value itself.
hcr = HCR(predicate = eusilc$eq_income, weight = eusilc$DB090, p = 0.5, q = 0.6)$HCR # add poverty threshold

if needed, the package has a built-in function eq_predicate to calculate the equivalised disposable income using some equivalence scales.

  1. Construction of the Fuzzy Monetary measure.
verma = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, ID = NULL,
                     HCR = hcr, interval = c(1,10), alpha = NULL, fm = "verma")
#> Solving non linear equation: E[u] = HCR
#> trying with alpha:  1  Expected Value:  0.712 
#> trying with alpha:  10  Expected Value:  0.099 
#> trying with alpha:  7.841  Expected Value:  0.125 
#> trying with alpha:  4.42  Expected Value:  0.214 
#> trying with alpha:  3.389  Expected Value:  0.272 
#> trying with alpha:  3.847  Expected Value:  0.243 
#> trying with alpha:  3.793  Expected Value:  0.246 
#> trying with alpha:  3.787  Expected Value:  0.246 
#> trying with alpha:  3.787  Expected Value:  0.246 
#> trying with alpha:  3.787  Expected Value:  0.246 
#> Done.

When alpha = NULL (the default) this function solves a non-linear equation finding the value \(\alpha\) in interval that equates the expected value of the poverty measure to the Head Count Ratio calculated above (see #eq-betti2006). This can be avoided by specifying a numeric value of \(\alpha\).

verma = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, ID = NULL, interval = c(1,10), alpha = 2)

The result of fm_construct using fm="verma" is a list containing

head(verma$results)
#>    ID predicate    weight        mu
#> 1  44  3.225806  465.3585 1.0000000
#> 2 450  6.666667 1010.5060 0.9946732
#> 3 372 12.903226  304.7067 0.9930663
#> 4 490 17.857143 1177.4120 0.9868551
#> 5 245 20.000000  853.0255 0.9823546
#> 6 130 42.424242 1141.3410 0.9763241
verma.break = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, ID = NULL, HCR = 0.12, interval = c(1,10), alpha = NULL, breakdown = eusilc$db040)
#> Solving non linear equation: E[u] = HCR
#> trying with alpha:  1  Expected Value:  0.712 
#> trying with alpha:  10  Expected Value:  0.099 
#> trying with alpha:  9.689  Expected Value:  0.102 
#> trying with alpha:  5.345  Expected Value:  0.179 
#> trying with alpha:  8.672  Expected Value:  0.113 
#> trying with alpha:  7.008  Expected Value:  0.139 
#> trying with alpha:  8.239  Expected Value:  0.119 
#> trying with alpha:  8.17  Expected Value:  0.12 
#> trying with alpha:  8.171  Expected Value:  0.12 
#> trying with alpha:  8.171  Expected Value:  0.12 
#> trying with alpha:  8.171  Expected Value:  0.12 
#> Done.
verma.break$estimate
#>          a          b          c          d          e          f          g 
#> 0.06996177 0.07364734 0.06996169 0.14369489 0.08045737 0.08636719 0.21395864 
#>          h          i          j          k          l          m          n 
#> 0.17436515 0.04547396 0.05968537 0.05015386 0.10140407 0.15801399 0.08592076 
#>          o          p          q          r          s          t          u 
#> 0.10504876 0.13311040 0.24887629 0.05927224 0.16582226 0.00551322 0.29453604 
#>          v          w          x          y          z 
#> 0.12934236 0.12693275 0.10686593 0.20676379 0.08280189

ZBM

The computation of the fuzzy index using the Zedini and Belhadj (2015) membership function needs fm = "ZBM". Note that in this cases you need to specify an additional argument hh.size which is the size of the household and an argument k denoting the number of poverty states that you want to investigate (see Zedini and Belhadj (2015) for further details) . Leaving the hh.size argument empty is equivalent to say the household size for each unit is equal to 1. The default for k is k=3 which corresponds to belonging to the states Weak deprivation, Medium Deprivation and Strong deprivation.

The output is list containing the

# hh.size = sample(1:4, 1000, replace = T, prob = c(4,3,2,1))
zbm = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "ZBM", hh.size = NULL)
zbm.break = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "ZBM", hh.size = NULL, breakdown = eusilc$db040)
1 2 3
a 0.374 0.130 0.496
b 0.176 0.550 0.274
c 0.211 0.188 0.600
d 0.437 0.222 0.341
e 0.277 0.514 0.180
f 0.251 0.378 0.371
g 0.638 0.032 0.330
h 0.427 0.215 0.359
i 0.305 0.329 0.367
j 0.318 0.321 0.361
k 0.166 0.645 0.189
l 0.478 0.268 0.254
m 0.535 0.171 0.293
n 0.544 0.178 0.278
o 0.351 0.292 0.357
p 0.402 0.191 0.407
q 0.420 0.279 0.300
r 0.315 0.165 0.520
s 0.667 0.239 0.094
t 0.022 0.696 0.281
u 0.747 0.079 0.164
v 0.329 0.199 0.473
w 0.241 0.255 0.504
x 0.412 0.425 0.163
y 0.423 0.084 0.472
z 0.321 0.358 0.321

Belhadj

The construction of a fuzzy index using the membership function as Besma (2015) is obtained by specifying fm="belhadj". The arguments z1, z2 and b need user’s specification (see Formula above and Besma (2015)).

The value z that correspond to the flex points of the mf or to the point where the two mf touch together is calculated by the function and returned as z_star.

The parameter b (>=1) rules the shape of the membership functions (set b=1 for linearity)

z1 = 500; z2 = 1700; b = 2
belhadj = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "belhadj2015", z1 = z1, z2 = z2, b = b) # use id to return ordered as verma?
belhadj.break = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "belhadj2015", z1 = z1, z2 = z2, b = b, breakdown = eusilc$db040) # use id to return ordered as verma?

Chakravarty

Chakravarty (2019) axiomatic fuzzy index is obtained setting fm = "chakravarty". The argument z needs user’s specification

z = 1500
chakravarty = fm_construct(predicate = eusilc$eq_income, eusilc$DB090, fm = "chakravarty", z = z)

again is is possible to specify the breakdown argument to obtain estimates at sub-domains.

chakravarty.break = fm_construct(predicate = eusilc$eq_income, eusilc$DB090, fm = "chakravarty", z = z, breakdown = eusilc$db040)
knitr::kable(data.frame(verma.break$estimate, belhadj.break$estimate, chakravarty.break$estimate), col.names = c("Verma", "Belhadj", "Chakravarty"), digits = 4)
Verma Belhadj Chakravarty
a 0.0700 0.0260 0.0229
b 0.0736 0.0447 0.0350
c 0.0700 0.0000 0.0000
d 0.1437 0.1167 0.0668
e 0.0805 0.0427 0.0247
f 0.0864 0.0471 0.0440
g 0.2140 0.1529 0.1511
h 0.1744 0.1168 0.1156
i 0.0455 0.0000 0.0000
j 0.0597 0.0000 0.0000
k 0.0502 0.0000 0.0000
l 0.1014 0.0000 0.0000
m 0.1580 0.0000 0.0000
n 0.0859 0.0151 0.0132
o 0.1050 0.0000 0.0000
p 0.1331 0.0187 0.0155
q 0.2489 0.1633 0.1626
r 0.0593 0.0000 0.0000
s 0.1658 0.0009 0.0041
t 0.0055 0.0000 0.0000
u 0.2945 0.0224 0.0128
v 0.1293 0.0697 0.0691
w 0.1269 0.0914 0.0808
x 0.1069 0.0000 0.0000
y 0.2068 0.0632 0.0631
z 0.0828 0.0000 0.0000

Verma 1999

verma1999 = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, 
                      ID = NULL, HCR = hcr, interval = c(1,20), 
                      alpha = NULL, fm = "verma1999")
#> Solving non linear equation: E[u] = HCR
#> trying with alpha:  1  Expected Value:  0.712 
#> trying with alpha:  20  Expected Value:  0.188 
#> trying with alpha:  17.903  Expected Value:  0.2 
#> trying with alpha:  9.452  Expected Value:  0.28 
#> trying with alpha:  13.008  Expected Value:  0.236 
#> trying with alpha:  12.221  Expected Value:  0.244 
#> trying with alpha:  12.066  Expected Value:  0.246 
#> trying with alpha:  12.067  Expected Value:  0.246 
#> trying with alpha:  12.067  Expected Value:  0.246 
#> trying with alpha:  12.067  Expected Value:  0.246 
#> Done.

Fuzzy supplementary

The steps below show how to obtain a Fuzzy Supplementary (FS) poverty measure.

Step 1 - Identification

This step is pretty simple. The user has to select the columns of the data that correspond to the items that he/she has decided to keep in the analysis.

Step 1 is done with the following selection

# eusilc = na.omit(eusilc)
step1 = eusilc[,4:23]

Step 2 - Transformation

In this step the items are mapped from their original space to the \([0,1]\) interval using the function fs_transform (see (Betti, Gagliardi, and Verma 2018; Betti and Verma 2008))

step2 = fs_transform(step1, weight = eusilc$DB090, ID = eusilc$ID)
# step2.1 = fs_transform(step1, weight = eusilc$DB090, ID = eusilc$ID, depr.score = "d")

which outputs

knitr::kable(head(step2), digits = 3, align = "c", caption = "Transformed items")
Transformed items
ID HS040 HS050 HS060 HS070 HS080 HS090 HS100 HS110 HS120 HS160 HS170 HS180 HS190 HH010 HH020 HH040 HH050 HH081 HH091 HX040
1 0 1 0 1 1 1.000 1 1 1.000 0 0 0 0 1.000 1.000 0 1 1 1 0.576
2 0 0 0 1 1 0.776 1 1 0.796 0 0 0 0 0.085 0.080 0 0 1 1 0.154
3 0 1 1 1 1 1.000 1 1 0.796 0 0 0 0 0.085 0.080 1 1 1 1 0.154
4 1 1 1 1 1 0.000 0 0 0.120 0 1 0 1 0.005 0.624 0 1 1 1 1.000
5 1 1 0 1 1 1.000 1 1 0.379 0 0 0 0 0.005 0.624 0 1 1 1 1.000
6 0 1 0 1 1 1.000 1 1 0.379 0 0 0 0 0.085 0.080 0 1 1 1 0.040

Step 3 - Factor Analysis

This fuzzy supplementary measure use factor analysis to undercover latent dimension in the data. There are multiple approaches to get factor analysis in R which we do not cover in this vignette, however the user can check for example the lavaan package. Anyways, factor analysis is not mandatory and the user may wish to unfertake a different approach to undercover a latent structure in the data. Indeed, it is possible to skip factor analysis or to use a personal assignment of columns in dimensions.

Regardless of the chosen method, to go trough Step 3 the user has to specify a numeric vector of the same length of the number of items selected in Step 1 that assigns each column to a given dimension.

dimensions = c(1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5)

Steps 4 and 5 - Calculation of weights and measures within dimensions

These steps computes the weights needed to aggregate transformed items values (see Step 2) into one value per dimension per unit.

steps4_5 = fs_weight(dimensions, step2 = step2, rho = NULL)

The output is a longitudinal data frame that contains the weights \(w_a, w_b, w = w_a\times w_b\) , the deprivation score \(s_{hi}\) for unit \(i\) and dimension \(j\), and the overall score \(s_i\) (the average over dimensions).

knitr::kable(head(steps4_5), digits = 4, caption = "Results from Steps 4 and 5.")
Results from Steps 4 and 5.
ID Item s Factor w_a w_b w s_hi s_i
1 HS040 0 1 0.8038 0.4828 0.3881 0.1476 0.4536
2 HS040 0 1 0.8038 0.4828 0.3881 0.0404 0.2703
3 HS040 0 1 0.8038 0.4828 0.3881 0.6149 0.5334
4 HS040 1 1 0.8038 0.4828 0.3881 1.0000 0.4972
5 HS040 1 1 0.8038 0.4828 0.3881 0.5327 0.4558
6 HS040 0 1 0.8038 0.4828 0.3881 0.1476 0.2527

Step 6 - Calculation of the parameter \(\alpha\)

This step is equivalent to that discussed in the Fuzzy Monetary section when fm="verma". It needs either a former estimate of the Head Count Ratio or a value such that the expectation of the Fuzzy Supplementary measure has to be equal to.

alpha = fs_equate(steps4_5 = steps4_5, weight = eusilc$DB090, HCR = .16, interval = c(1,10))
#> trying with alpha:  1  Expected Value:  0.5559 
#> trying with alpha:  10  Expected Value:  0.0926 
#> trying with alpha:  8.6911  Expected Value:  0.1056 
#> trying with alpha:  4.8455  Expected Value:  0.1786 
#> trying with alpha:  5.8238  Expected Value:  0.152 
#> trying with alpha:  5.5286  Expected Value:  0.1591 
#> trying with alpha:  5.4946  Expected Value:  0.16 
#> trying with alpha:  5.4948  Expected Value:  0.16 
#> trying with alpha:  5.4947  Expected Value:  0.16 
#> trying with alpha:  5.4948  Expected Value:  0.16 
#> Done.

(alternatively a user’s defined specification of the alpha argument can be used as well.)

Step 7 - Construction of the Fuzzy Supplementary measure.

# FS = fs_construct(steps4_5 = steps4_5, weight = eusilc$DB090, alpha = alpha, breakdown = NULL) # no breakdown
FS = fs_construct(steps4_5 = steps4_5, weight = eusilc$DB090, alpha = alpha, breakdown = eusilc$db040)
FS$estimate
#>          FS1        FS2       FS3         FS4        FS5    Overall
#> a 0.04849899 0.08111620 0.7034208 0.044894963 0.07017839 0.11126319
#> b 0.11273215 0.06781556 0.8570465 0.125869735 0.24420846 0.07436290
#> c 0.06028435 0.12878423 0.8491454 0.158718520 0.15073347 0.20006958
#> d 0.06207866 0.31494012 0.8427542 0.103658725 0.02974083 0.13119322
#> e 0.03966508 0.12086418 0.9365959 0.220763213 0.15601941 0.35761308
#> f 0.03780246 0.15449887 0.6916936 0.093011485 0.08230550 0.09046405
#> g 0.07192557 0.10163518 0.7862704 0.099508338 0.04096738 0.17811890
#> h 0.04957820 0.12048403 0.8270679 0.136728490 0.12033181 0.12570444
#> i 0.09087098 0.05964116 0.9559882 0.113180211 0.18226995 0.13067887
#> j 0.02754505 0.13851275 0.8618494 0.008856406 0.10872898 0.08804568
#> k 0.07030834 0.03347863 0.9788688 0.024965214 0.12661310 0.19900283
#> l 0.06633165 0.15077655 0.9133669 0.114838696 0.06227283 0.11855506
#> m 0.10739758 0.05135911 0.8474242 0.129904296 0.12939172 0.10782553
#> n 0.02648698 0.14555562 0.8063976 0.175255218 0.02601035 0.03181872
#> o 0.03118147 0.07834909 0.6451981 0.034102104 0.05491952 0.04212148
#> p 0.04107856 0.15526153 0.7392915 0.190809691 0.21742685 0.11726722
#> q 0.03775597 0.19566769 0.7804648 0.091637046 0.17274667 0.13020343
#> r 0.04833382 0.06171675 0.9460959 0.336025508 0.28010365 0.33921203
#> s 0.20549880 0.20827097 0.9183328 0.197648187 0.10389430 0.28646462
#> t 0.05878172 0.28047819 0.8509346 0.034106976 0.01334767 0.25132028
#> u 0.10089632 0.16106212 0.6638107 0.064357629 0.12029613 0.17611292
#> v 0.12117126 0.11458204 0.6793136 0.115842345 0.14251251 0.18751614
#> w 0.08936005 0.18542725 0.7028543 0.286741848 0.07529739 0.13321843
#> x 0.07697308 0.14882135 0.8554945 0.086343895 0.07498163 0.15037455
#> y 0.03195747 0.21720621 0.8023279 0.070287678 0.04714267 0.18351855
#> z 0.07453546 0.23790709 0.6697140 0.158071398 0.11491620 0.30369489

The output of the fs_construct function is a list containing:

FS$membership$FS1
FS$estimate
#>          FS1        FS2       FS3         FS4        FS5    Overall
#> a 0.04849899 0.08111620 0.7034208 0.044894963 0.07017839 0.11126319
#> b 0.11273215 0.06781556 0.8570465 0.125869735 0.24420846 0.07436290
#> c 0.06028435 0.12878423 0.8491454 0.158718520 0.15073347 0.20006958
#> d 0.06207866 0.31494012 0.8427542 0.103658725 0.02974083 0.13119322
#> e 0.03966508 0.12086418 0.9365959 0.220763213 0.15601941 0.35761308
#> f 0.03780246 0.15449887 0.6916936 0.093011485 0.08230550 0.09046405
#> g 0.07192557 0.10163518 0.7862704 0.099508338 0.04096738 0.17811890
#> h 0.04957820 0.12048403 0.8270679 0.136728490 0.12033181 0.12570444
#> i 0.09087098 0.05964116 0.9559882 0.113180211 0.18226995 0.13067887
#> j 0.02754505 0.13851275 0.8618494 0.008856406 0.10872898 0.08804568
#> k 0.07030834 0.03347863 0.9788688 0.024965214 0.12661310 0.19900283
#> l 0.06633165 0.15077655 0.9133669 0.114838696 0.06227283 0.11855506
#> m 0.10739758 0.05135911 0.8474242 0.129904296 0.12939172 0.10782553
#> n 0.02648698 0.14555562 0.8063976 0.175255218 0.02601035 0.03181872
#> o 0.03118147 0.07834909 0.6451981 0.034102104 0.05491952 0.04212148
#> p 0.04107856 0.15526153 0.7392915 0.190809691 0.21742685 0.11726722
#> q 0.03775597 0.19566769 0.7804648 0.091637046 0.17274667 0.13020343
#> r 0.04833382 0.06171675 0.9460959 0.336025508 0.28010365 0.33921203
#> s 0.20549880 0.20827097 0.9183328 0.197648187 0.10389430 0.28646462
#> t 0.05878172 0.28047819 0.8509346 0.034106976 0.01334767 0.25132028
#> u 0.10089632 0.16106212 0.6638107 0.064357629 0.12029613 0.17611292
#> v 0.12117126 0.11458204 0.6793136 0.115842345 0.14251251 0.18751614
#> w 0.08936005 0.18542725 0.7028543 0.286741848 0.07529739 0.13321843
#> x 0.07697308 0.14882135 0.8554945 0.086343895 0.07498163 0.15037455
#> y 0.03195747 0.21720621 0.8023279 0.070287678 0.04714267 0.18351855
#> z 0.07453546 0.23790709 0.6697140 0.158071398 0.11491620 0.30369489

Again it is possible to obtain results for sub-domains by specifying the breakdownargument

FS1 FS2 FS3 FS4 FS5 Overall
a 0.0485 0.0811 0.7034 0.0449 0.0702 0.1113
b 0.1127 0.0678 0.8570 0.1259 0.2442 0.0744
c 0.0603 0.1288 0.8491 0.1587 0.1507 0.2001
d 0.0621 0.3149 0.8428 0.1037 0.0297 0.1312
e 0.0397 0.1209 0.9366 0.2208 0.1560 0.3576
f 0.0378 0.1545 0.6917 0.0930 0.0823 0.0905
g 0.0719 0.1016 0.7863 0.0995 0.0410 0.1781
h 0.0496 0.1205 0.8271 0.1367 0.1203 0.1257
i 0.0909 0.0596 0.9560 0.1132 0.1823 0.1307
j 0.0275 0.1385 0.8618 0.0089 0.1087 0.0880
k 0.0703 0.0335 0.9789 0.0250 0.1266 0.1990
l 0.0663 0.1508 0.9134 0.1148 0.0623 0.1186
m 0.1074 0.0514 0.8474 0.1299 0.1294 0.1078
n 0.0265 0.1456 0.8064 0.1753 0.0260 0.0318
o 0.0312 0.0783 0.6452 0.0341 0.0549 0.0421
p 0.0411 0.1553 0.7393 0.1908 0.2174 0.1173
q 0.0378 0.1957 0.7805 0.0916 0.1727 0.1302
r 0.0483 0.0617 0.9461 0.3360 0.2801 0.3392
s 0.2055 0.2083 0.9183 0.1976 0.1039 0.2865
t 0.0588 0.2805 0.8509 0.0341 0.0133 0.2513
u 0.1009 0.1611 0.6638 0.0644 0.1203 0.1761
v 0.1212 0.1146 0.6793 0.1158 0.1425 0.1875
w 0.0894 0.1854 0.7029 0.2867 0.0753 0.1332
x 0.0770 0.1488 0.8555 0.0863 0.0750 0.1504
y 0.0320 0.2172 0.8023 0.0703 0.0471 0.1835
z 0.0745 0.2379 0.6697 0.1581 0.1149 0.3037

Variance Estimation

The variance of each Fuzzy Monetary measure can be estimated either via Boostrap or Jackknife Repeated Replications. We recommend the former each time the user has no knowledge of the sampling design, while we recommend the Jackknife when there is full information on the design and of the PSUs (see Betti, Gagliardi, and Verma (2018)).

Verma

In case of fm="verma", we recommend the user to use the value of alpha from obtained from the function fm_construct. It is possible to specify different values of the parameter (i.e. alpha=2). We do not recommend to leave the argument alpha=NULL for the computation of variance.

alpha = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, ID = NULL, HCR = 0.12, interval = c(1,10), alpha = NULL)$alpha
#> Solving non linear equation: E[u] = HCR
#> trying with alpha:  1  Expected Value:  0.712 
#> trying with alpha:  10  Expected Value:  0.099 
#> trying with alpha:  9.689  Expected Value:  0.102 
#> trying with alpha:  5.345  Expected Value:  0.179 
#> trying with alpha:  8.672  Expected Value:  0.113 
#> trying with alpha:  7.008  Expected Value:  0.139 
#> trying with alpha:  8.239  Expected Value:  0.119 
#> trying with alpha:  8.17  Expected Value:  0.12 
#> trying with alpha:  8.171  Expected Value:  0.12 
#> trying with alpha:  8.171  Expected Value:  0.12 
#> trying with alpha:  8.171  Expected Value:  0.12 
#> Done.
fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "verma",  type = "bootstrap", HCR = .14, alpha = alpha, verbose = F)
#> [1] 1.398149e-05
fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "verma", type = "jackknife", HCR = .14, alpha = 9, stratum = eusilc$stratum, psu = eusilc$psu, verbose = F)
#> [1] 5.324184e-06

which gives the bootstrap estimate or the jackknife estimate.

If there are multiple sub-domains or sub-populations that need variance estimation, the user can specify this breakdown to the breakdown argument of the function fm_var. For example:

Variance estimates for sub-domains
Bootstrap Jackknife
a 0.0016661 0.0012209
b 0.0025768 0.0049670
c 0.0026526 0.0024599
d 0.0082674 0.0111044
e 0.0022947 0.0031482
f 0.0020473 0.0019269
g 0.0124318 0.0186663
h 0.0067054 0.0205782
i 0.0004762 0.0006385
j 0.0013760 0.0029483
k 0.0018673 0.0042856
l 0.0015058 0.0011049
m 0.0045612 0.0069662
n 0.0017283 0.0021993
o 0.0047795 0.0054076
p 0.0029910 0.0034323
q 0.0151881 0.0263556
r 0.0023494 0.0023472
s 0.0049384 0.0079995
t 0.0000193 0.0000107
u 0.0034930 0.0056364
v 0.0055145 0.0060581
w 0.0038383 0.0055729
x 0.0024122 0.0029641
y 0.0047769 0.0068758
z 0.0018137 0.0027623

ZBM

The variance of the fuzzy index using fm="ZBM" is obtained as

z1 = 1000; z2 = 2000; b = 2
fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "belhadj2015", 
       breakdown = NULL, type = "bootstrap", z1 = z1, z2 = z2, b = b)
#> [1] 0.0002598766

Results from sub-domains:

Bootstrap.zbm = fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "ZBM", breakdown = eusilc$db040, type = "bootstrap", hh.size = NULL, verbose = F, R = 5)
Jackknife.zbm = fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "ZBM", breakdown = eusilc$db040, type = "jackknife", hh.size = NULL, stratum = eusilc$stratum, psu = eusilc$psu)
Bootstrap
Jackknife
1 2 3 1 2 3
a 0.0510 0.0170 0.0392 0.0432 0.0255 0.0687
b 0.0024 0.0334 0.0313 0.0200 0.0513 0.0219
c 0.0326 0.0101 0.0361 0.0255 0.0329 0.0548
d 0.0161 0.0252 0.0057 0.0276 0.0110 0.0366
e 0.0168 0.0288 0.0060 0.0285 0.0172 0.0374
f 0.0019 0.0094 0.0103 0.0126 0.0201 0.0207
g 0.0402 0.0023 0.0352 0.0253 0.0124 0.0233
h 0.0017 0.0056 0.0065 0.0400 0.0127 0.0209
i 0.0276 0.0247 0.0072 0.0171 0.0165 0.0282
j 0.0192 0.1247 0.1064 0.0238 0.1312 0.0912
k 0.0100 0.0165 0.0079 0.0502 0.1120 0.0304
l 0.0277 0.0198 0.0343 0.0292 0.0157 0.0253
m 0.0430 0.0194 0.0072 0.0435 0.0162 0.0206
n 0.0507 0.0297 0.0148 0.1579 0.1222 0.0276
o 0.0067 0.0147 0.0060 0.0235 0.0283 0.0238
p 0.0248 0.0065 0.0123 0.0371 0.0166 0.0450
q 0.0180 0.0204 0.0165 0.0304 0.0163 0.0181
r 0.0205 0.0251 0.0279 0.1330 0.0849 0.0823
s 0.0079 0.0182 0.0034 0.0579 0.0561 0.0045
t 0.0046 0.0183 0.0056 0.0008 0.0717 0.0633
u 0.0374 0.0016 0.0457 0.0204 0.0026 0.0124
v 0.0312 0.0031 0.0314 0.0301 0.0216 0.0411
w 0.0116 0.0125 0.0098 0.0140 0.0246 0.0283
x 0.0160 0.0201 0.0097 0.0278 0.0238 0.0054
y 0.0045 0.0049 0.0047 0.0185 0.0039 0.0207
z 0.0063 0.0331 0.0225 0.0160 0.0796 0.0952

Belhadj

fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "belhadj2015", type = "bootstrap", z1 = z1, z2 = z2, b = b)
#> [1] 0.0001628415
fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "belhadj2015", type = "jackknife", z1 = z1, z2 = z2, b = b, stratum = eusilc$stratum, psu = eusilc$psu)
#> [1] 0.0001723003

for different sub-domains instead use the breakdown argument

Bootstrap Jackknife
a 0.0010996 0.0009533
b 0.0020990 0.0030344
c 0.0000000 0.0000000
d 0.0114641 0.0223299
e 0.0048499 0.0042305
f 0.0019827 0.0030870
g 0.0160093 0.0310272
h 0.0110593 0.0171539
i 0.0000000 0.0000000
j 0.0010628 0.0008962
k 0.0000000 0.0000000
l 0.0000000 0.0000000
m 0.0000000 0.0000000
n 0.0004407 0.0003358
o 0.0002420 0.0002770
p 0.0003203 0.0004305
q 0.0195714 0.0339575
r 0.0013229 0.0014207
s 0.0034790 0.0037231
t 0.0000000 0.0000000
u 0.0040766 0.0054156
v 0.0055860 0.0063268
w 0.0061861 0.0069609
x 0.0012991 0.0016906
y 0.0041185 0.0072287
z 0.0001143 0.0001333

Chackravarty

fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "chakravarty", breakdown = NULL, type = "bootstrap", z = 2000)
#> [1] 0.0001252776
#>      Bootstrap    Jackknife
#> a 8.004928e-04 7.889088e-04
#> b 3.058915e-03 2.089455e-03
#> c 0.000000e+00 0.000000e+00
#> d 4.911108e-03 8.813879e-03
#> e 1.588152e-03 1.350483e-03
#> f 1.469171e-03 2.715152e-03
#> g 1.557597e-02 3.047562e-02
#> h 8.473544e-03 1.674777e-02
#> i 0.000000e+00 0.000000e+00
#> j 9.971618e-06 1.317383e-05
#> k 0.000000e+00 0.000000e+00
#> l 0.000000e+00 0.000000e+00
#> m 0.000000e+00 0.000000e+00
#> n 3.229804e-04 2.757792e-04
#> o 0.000000e+00 0.000000e+00
#> p 4.138712e-04 3.252362e-04
#> q 2.431671e-02 3.384705e-02
#> r 3.461606e-05 2.769480e-05
#> s 4.165611e-04 4.066050e-04
#> t 0.000000e+00 0.000000e+00
#> u 3.241281e-04 4.479224e-04
#> v 5.043387e-03 6.245426e-03
#> w 4.711796e-03 6.390181e-03
#> x 3.702319e-05 4.225379e-05
#> y 4.388037e-03 5.736888e-03
#> z 0.000000e+00 0.000000e+00

Fuzzy supplementary

fs_var(data = eusilc[,4:23], weight = eusilc$DB090, ID = NULL, dimensions = dimensions, breakdown = NULL, HCR = hcr, alpha = alpha, rho = NULL, type = 'bootstrap', M = NULL, R = 20, verbose = F) %>% t() %>% knitr::kable(digits = 4)
fs_var(data = eusilc[,4:23], weight = eusilc$DB090, ID = NULL, dimensions = dimensions, breakdown = eusilc$db040, HCR = .16, alpha = alpha, rho = NULL, type = 'bootstrap', M = NULL, R = 50, verbose = F) %>% knitr::kable(digits = 4)
FS1 FS2 FS3 FS4 FS5 Overall
a 0.0001 0.0009 0.0270 0.0005 0.0004 0.0034
b 0.0090 0.0008 0.0142 0.0078 0.0070 0.0006
c 0.0002 0.0016 0.0136 0.0045 0.0098 0.0080
d 0.0001 0.0076 0.0088 0.0023 0.0001 0.0018
e 0.0001 0.0017 0.0023 0.0037 0.0015 0.0143
f 0.0001 0.0009 0.0106 0.0007 0.0006 0.0005
g 0.0001 0.0016 0.0183 0.0016 0.0003 0.0028
h 0.0005 0.0011 0.0102 0.0026 0.0007 0.0018
i 0.0017 0.0005 0.0021 0.0019 0.0087 0.0020
j 0.0000 0.0023 0.0236 0.0000 0.0039 0.0005
k 0.0001 0.0003 0.0009 0.0001 0.0016 0.0033
l 0.0001 0.0030 0.0031 0.0021 0.0002 0.0037
m 0.0034 0.0005 0.0092 0.0039 0.0032 0.0022
n 0.0000 0.0051 0.0142 0.0065 0.0003 0.0002
o 0.0000 0.0021 0.0185 0.0002 0.0004 0.0003
p 0.0001 0.0014 0.0122 0.0027 0.0033 0.0029
q 0.0001 0.0038 0.0113 0.0009 0.0029 0.0017
r 0.0001 0.0007 0.0043 0.0505 0.0066 0.0289
s 0.0225 0.0057 0.0062 0.0162 0.0007 0.0073
t 0.0001 0.0022 0.0194 0.0002 0.0000 0.0076
u 0.0015 0.0038 0.0244 0.0006 0.0010 0.0080
v 0.0061 0.0025 0.0158 0.0014 0.0055 0.0090
w 0.0007 0.0035 0.0148 0.0045 0.0009 0.0011
x 0.0006 0.0028 0.0048 0.0008 0.0005 0.0020
y 0.0000 0.0061 0.0104 0.0006 0.0002 0.0035
z 0.0002 0.0121 0.0384 0.0030 0.0033 0.0041

The following uses the Jackknife

fs_var(data = eusilc[,4:23], weight = eusilc$DB090, ID = NULL, dimensions = dimensions, 
       breakdown = eusilc$db040, HCR = .16, alpha = alpha, rho = NULL, type = 'jackknife', 
       stratum = eusilc$stratum, psu = eusilc$psu, verbose = F, f = .01) %>% knitr::kable(digits = 4)
Belhadj, Besma, and Mohamed Salah Matoussi. 2010. “Poverty in Tunisia: A Fuzzy Measurement Approach.” Swiss Journal of Economics and Statistics 146 (2): 431–50.
Besma, Belhadj. 2015. “Employment Measure in Developing Countries via Minimum Wage and Poverty New Fuzzy Approach.” Opsearch 52: 329–39.
Betti, Gianni, Francesca Gagliardi, and Vijay Verma. 2018. “Simplified Jackknife Variance Estimates for Fuzzy Measures of Multidimensional Poverty.” International Statistical Review 86 (1): 68–86.
Betti, Gianni, and Vijay Verma. 2008. “Fuzzy Measures of the Incidence of Relative Poverty and Deprivation: A Multi-Dimensional Perspective.” Statistical Methods and Applications 17: 225–50.
Chakravarty, Satya R. 2019. “An Axiomatic Approach to Multidimensional Poverty Measurement via Fuzzy Sets.” Poverty, Social Exclusion and Stochastic Dominance, 123–41.
Zedini, Asma, and Besma Belhadj. 2015. “A New Approach to Unidimensional Poverty Analysis: Application to the Tunisian Case.” Review of Income and Wealth 61 (3): 465–76.