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
The package lets the user choose among different membership functions
trough the argument fm
of the fm_construct
function. The membership function available are
fm="verma"
(see Betti and Verma
(2008))\[ \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\).
fm="ZBM"
(see Zedini and Belhadj
(2015) and Belhadj and Matoussi
(2010))\[ \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} \]
fm="belhadj"
(see Besma
(2015))
\[ \mu_Q(x_i) = \begin{cases} 1 & y_i < z_1\\ \mu^1 = 1-\frac{1}{2}\left(\frac{y_i-z_1}{z_1}\right)^b & z_1 \le y_i < z^{*}\\ \mu^2 = 1-\frac{1}{2}\left(\frac{z_2 - y_i}{z_2}\right)^b & z^{*} \le y_i < z_2\\ 0 & y_i \ge z_2 \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} \]
fm="chakravarty"
(see Chakravarty (2019))\[ \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.
The computation of a fuzzy poverty index that uses the
fm="verma"
argument goes trough the following steps:
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.
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
data.frame
of individuals’ membership functions
sorted in descending order (i.e. from most poor to least poor)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
breakdown=NULL
). However, one can obtain estimates for
sub-domains using the breakdown
argument as followsverma.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
The alpha
parameter.
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
estimates
for each poverty set discovered using the
function e.divide
of the ecp
package.# 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 |
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)
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 |
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.
The steps below show how to obtain a Fuzzy Supplementary (FS) poverty measure.
Step 1 - Identification
Step 2 - Transformation
Step 3 - Factor analysis to identify dimensions of poverty
Step 4 - Calculation of weights
Step 5 - Calculation of scores in dimensions
Step 6 - Calculation of the \(\alpha\) parameter
Step 7 - Construction of the FS measure for each dimension
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
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
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 |
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.
These steps computes the weights needed to aggregate transformed items values (see Step 2) into one value per dimension per unit.
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).
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 |
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.)
# 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:
membership
a list
containing the FS
measures for each statistical unit in the sample. Results for each
dimension can be obtained byestimate
the average of the membership function for
each dimensionFS$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
alpha
the parameter \(\alpha\) estimated from data.Again it is possible to obtain results for sub-domains by specifying
the breakdown
argument
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 |
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)).
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:
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 |
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)
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 |
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 |
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
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)