FuzzyPovertyR

library(FuzzyPovertyR)
library(kableExtra)

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 regarded 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 & 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} \]

\[ \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.

Example using fm=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,20), alpha = NULL, fm = "verma", verbose = FALSE)
verma$fm
#> [1] "verma"
class(verma)
#> [1] "FuzzyMonetary"
summary(verma)
#> Fuzzy monetary results: 
#> 
#>  Summary of verma membership function: 
#> 
#>  Quantiles: 
#> 
#>  0%   20%   40%   60%   80% 100%
#>   0 0.004 0.036 0.194 0.528    1
#> 
#>  Estimate(s): 
#> 
#> [1] 0.246
#> 
#>  Parameter(s): 
#> 
#> alpha 
#> 3.787
plot(verma)

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, fm = "verma1999", 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.9999952
#> 3 372 12.903226  304.7067 0.9999924
#> 4 490 17.857143 1177.4120 0.9999774
#> 5 245 20.000000  853.0255 0.9999653
#> 6 130 42.424242 1141.3410 0.9999308
verma.break = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, ID = NULL, HCR = hcr, interval = c(1,10), alpha = NULL, breakdown = eusilc$db040)
summary(verma.break)
#> Fuzzy monetary results: 
#> 
#>  Summary of verma membership function: 
#> 
#>  Quantiles: 
#> 
#>  0%   20%   40%   60%   80% 100%
#>   0 0.004 0.036 0.194 0.528    1
#> 
#>  Estimate(s): 
#> 
#>     a     b     c     d     e     f     g     h     i     j     k     l     m 
#> 0.189 0.165 0.166 0.268 0.217 0.178 0.363 0.294 0.186 0.155 0.157 0.272 0.327 
#>     n     o     p     q     r     s     t     u     v     w     x     y     z 
#> 0.247 0.237 0.255 0.356 0.163 0.375 0.076 0.509 0.242 0.206 0.271 0.313 0.213 
#> 
#>  Parameter(s): 
#> 
#> alpha 
#> 3.787
plot(verma.break)

verma.break$estimate
#>          a          b          c          d          e          f          g 
#> 0.18866339 0.16538025 0.16562162 0.26821706 0.21695323 0.17829490 0.36323070 
#>          h          i          j          k          l          m          n 
#> 0.29418642 0.18600937 0.15484057 0.15722022 0.27162839 0.32717227 0.24665062 
#>          o          p          q          r          s          t          u 
#> 0.23685247 0.25459850 0.35638295 0.16349880 0.37543084 0.07613034 0.50897058 
#>          v          w          x          y          z 
#> 0.24174548 0.20595260 0.27131691 0.31315140 0.21313753
alpha = verma$alpha
alpha
#> NULL

Example using fm=belhadj2015

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 = 20000; z2 = 70000; b = 2
belhadj = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "belhadj2015", z1 = z1, z2 = z2, b = b) 
summary(belhadj)
#> Fuzzy monetary results: 
#> 
#>  Summary of belhadj2015 membership function: 
#> 
#>  Quantiles: 
#> 
#>  0%   20% 40% 60% 80% 100%
#>   0 0.991   1   1   1    1
#> 
#>  Estimate(s): 
#> 
#> [1] 0.939
#> 
#>  Parameter(s): 
#> 
#>       z1       z2        z        b 
#> 20000.00 70000.00 47547.17     2.00
plot(belhadj)

Example using fm=chakravarty

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

z = 60000
chakravarty = fm_construct(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "chakravarty", z = z)
summary(chakravarty)
#> Fuzzy monetary results: 
#> 
#>  Summary of chakravarty membership function: 
#> 
#>  Quantiles: 
#> 
#>  0%   20%   40%  60%   80% 100%
#>   0 0.622 0.768 0.84 0.903    1
#> 
#>  Estimate(s): 
#> 
#> [1] 0.761
#> 
#>  Parameter(s): 
#> 
#>     z 
#> 60000
plot(chakravarty)

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, chakravarty.break$estimate), col.names = c("Verma", "Chakravarty"), digits = 4)
Verma Chakravarty
a 0.1887 0.7041
b 0.1654 0.7340
c 0.1656 0.6114
d 0.2682 0.7740
e 0.2170 0.7886
f 0.1783 0.6871
g 0.3632 0.8167
h 0.2942 0.8128
i 0.1860 0.7439
j 0.1548 0.7600
k 0.1572 0.7827
l 0.2716 0.8143
m 0.3272 0.7918
n 0.2467 0.7797
o 0.2369 0.7523
p 0.2546 0.7596
q 0.3564 0.8127
r 0.1635 0.7804
s 0.3754 0.8489
t 0.0761 0.7434
u 0.5090 0.8221
v 0.2417 0.7170
w 0.2060 0.6673
x 0.2713 0.8170
y 0.3132 0.7286
z 0.2131 0.7966

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); class(step2)
#> [1] "FuzzySupplementary"
summary(step2$step2)
#>        ID            HS040           HS050           HS060      
#>  Min.   :  1.0   Min.   :0.000   Min.   :0.000   Min.   :0.000  
#>  1st Qu.:125.8   1st Qu.:0.000   1st Qu.:1.000   1st Qu.:0.000  
#>  Median :250.5   Median :1.000   Median :1.000   Median :1.000  
#>  Mean   :250.5   Mean   :0.608   Mean   :0.976   Mean   :0.538  
#>  3rd Qu.:375.2   3rd Qu.:1.000   3rd Qu.:1.000   3rd Qu.:1.000  
#>  Max.   :500.0   Max.   :1.000   Max.   :1.000   Max.   :1.000  
#>      HS070            HS080            HS090            HS100       
#>  Min.   :0.0000   Min.   :0.0000   Min.   :0.0000   Min.   :0.0000  
#>  1st Qu.:1.0000   1st Qu.:1.0000   1st Qu.:0.0000   1st Qu.:1.0000  
#>  Median :1.0000   Median :1.0000   Median :1.0000   Median :1.0000  
#>  Mean   :0.9929   Mean   :0.9874   Mean   :0.7279   Mean   :0.9758  
#>  3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:1.0000  
#>  Max.   :1.0000   Max.   :1.0000   Max.   :1.0000   Max.   :1.0000  
#>      HS110            HS120            HS160          HS170      
#>  Min.   :0.0000   Min.   :0.0000   Min.   :0.00   Min.   :0.000  
#>  1st Qu.:1.0000   1st Qu.:0.1201   1st Qu.:0.00   1st Qu.:0.000  
#>  Median :1.0000   Median :0.3791   Median :0.00   Median :0.000  
#>  Mean   :0.8274   Mean   :0.4420   Mean   :0.05   Mean   :0.122  
#>  3rd Qu.:1.0000   3rd Qu.:0.7960   3rd Qu.:0.00   3rd Qu.:0.000  
#>  Max.   :1.0000   Max.   :1.0000   Max.   :1.00   Max.   :1.000  
#>      HS180           HS190           HH010             HH020       
#>  Min.   :0.000   Min.   :0.000   Min.   :0.00000   Min.   :0.0000  
#>  1st Qu.:0.000   1st Qu.:0.000   1st Qu.:0.08545   1st Qu.:0.6244  
#>  Median :0.000   Median :0.000   Median :0.08545   Median :1.0000  
#>  Mean   :0.058   Mean   :0.086   Mean   :0.45947   Mean   :0.8080  
#>  3rd Qu.:0.000   3rd Qu.:0.000   3rd Qu.:1.00000   3rd Qu.:1.0000  
#>  Max.   :1.000   Max.   :1.000   Max.   :1.00000   Max.   :1.0000  
#>      HH040           HH050           HH081            HH091     
#>  Min.   :0.000   Min.   :0.000   Min.   :0.0000   Min.   :0.00  
#>  1st Qu.:0.000   1st Qu.:1.000   1st Qu.:1.0000   1st Qu.:1.00  
#>  Median :0.000   Median :1.000   Median :1.0000   Median :1.00  
#>  Mean   :0.128   Mean   :0.954   Mean   :0.9865   Mean   :0.99  
#>  3rd Qu.:0.000   3rd Qu.:1.000   3rd Qu.:1.0000   3rd Qu.:1.00  
#>  Max.   :1.000   Max.   :1.000   Max.   :1.0000   Max.   :1.00  
#>      HX040       
#>  Min.   :0.0000  
#>  1st Qu.:0.1537  
#>  Median :0.5762  
#>  Mean   :0.5511  
#>  3rd Qu.:1.0000  
#>  Max.   :1.0000
# step2.1 = fs_transform(step1, weight = eusilc$DB090, ID = eusilc$ID, depr.score = "d")

which outputs

knitr::kable(head(step2$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 undertake 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); class(steps4_5)
#> [1] "FuzzySupplementary"
summary(steps4_5)
#> # A tibble: 20 × 5
#>    Dimension Item     w_a   w_b      w
#>        <dbl> <chr>  <dbl> <dbl>  <dbl>
#>  1         1 HS040 0.804  0.483 0.388 
#>  2         1 HS050 0.157  0.688 0.108 
#>  3         1 HS060 0.928  0.508 0.471 
#>  4         1 HS070 0.0807 0.504 0.0407
#>  5         2 HS080 0.111  0.611 0.0677
#>  6         2 HS090 0.597  0.586 0.350 
#>  7         2 HS100 0.157  0.478 0.0751
#>  8         2 HS110 0.419  0.578 0.242 
#>  9         2 HS120 0.759  0.883 0.670 
#> 10         3 HS160 4.36   0.807 3.52  
#> 11         3 HS170 2.69   0.630 1.69  
#> 12         3 HS180 4.03   0.686 2.77  
#> 13         3 HS190 3.26   1.32  4.29  
#> 14         4 HH010 0.986  0.929 0.916 
#> 15         4 HH020 0.427  0.900 0.384 
#> 16         4 HH040 2.61   0.933 2.44  
#> 17         4 HH050 0.220  0.980 0.215 
#> 18         5 HH081 0.105  0.553 0.0583
#> 19         5 HH091 0.101  0.590 0.0593
#> 20         5 HX040 0.624  0.903 0.563
plot(steps4_5)

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$steps4_5), digits = 4, caption = "Results from Steps 4 and 5.")
Results from Steps 4 and 5.
ID Item s Dimension 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 = hcr, interval = c(1,10))
#> trying with alpha:  1  Expected Value:  0.5559 
#> trying with alpha:  10  Expected Value:  0.0926 
#> trying with alpha:  7.0204  Expected Value:  0.1285 
#> trying with alpha:  4.0102  Expected Value:  0.2098 
#> trying with alpha:  2.951  Expected Value:  0.2691 
#> trying with alpha:  3.364  Expected Value:  0.2424 
#> trying with alpha:  3.3089  Expected Value:  0.2457 
#> trying with alpha:  3.3038  Expected Value:  0.246 
#> trying with alpha:  3.3039  Expected Value:  0.246 
#> trying with alpha:  3.3038  Expected Value:  0.246 
#> 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
summary(FS)
#> Fuzzy supplementary results: 
#> 
#>  Summary of the membership functions: 
#> 
#>  Quantiles: 
#> 
#>         0%    25%    50%    75% 100%
#> FS1      0 0.0000 0.1028 0.3146    1
#> FS2      0 0.0234 0.1761 0.4886    1
#> FS3      0 1.0000 1.0000 1.0000    1
#> FS4      0 0.0049 0.1082 0.1082    1
#> FS5      0 0.0000 0.0113 0.3381    1
#> Overall  0 0.0074 0.0975 0.3643    1
#> 
#>  Estimate(s): 
#> 
#>     FS1     FS2     FS3     FS4     FS5 Overall 
#>   0.161   0.224   0.829   0.200   0.191   0.246 
#> 
#>  Parameter(s): 
#> 
#>  Alpha: 
#> 
#> [1] 3.304

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.16017778 0.15721420 0.7504151 0.11843430 0.13690382 0.17803697
#> b 0.17203766 0.13353783 0.8603701 0.18226841 0.35306548 0.16150876
#> c 0.17790861 0.20949808 0.8747891 0.23864519 0.22568769 0.30225670
#> d 0.18430484 0.38429991 0.8634134 0.17047030 0.06218540 0.24525107
#> e 0.13157099 0.21602939 0.9432241 0.35550492 0.30772389 0.45379840
#> f 0.11635064 0.25468798 0.7003120 0.18457563 0.15552302 0.18651992
#> g 0.19789906 0.19517219 0.7868058 0.16063463 0.08637581 0.27243247
#> h 0.10378979 0.19398696 0.8526735 0.21615485 0.22137989 0.18955852
#> i 0.19944239 0.10733043 0.9561498 0.16923227 0.29106818 0.21228732
#> j 0.10950019 0.22043135 0.8774224 0.05680170 0.18878432 0.19766477
#> k 0.20243807 0.07183648 0.9791507 0.09036923 0.27431162 0.32986760
#> l 0.18773841 0.23105579 0.9185245 0.15254579 0.12587426 0.16756316
#> m 0.19459905 0.08661289 0.8812583 0.19715665 0.19712955 0.16909045
#> n 0.08403138 0.23751028 0.8101947 0.24143510 0.05576150 0.08021327
#> o 0.10717430 0.15153461 0.6907420 0.07810733 0.12316342 0.09665732
#> p 0.12462294 0.26074356 0.7678514 0.28953421 0.29440486 0.21144141
#> q 0.10731824 0.28134009 0.8083268 0.16137948 0.26594294 0.22523560
#> r 0.13292525 0.13075056 0.9532498 0.36621517 0.41196933 0.38421113
#> s 0.26416295 0.28100851 0.9387913 0.26507953 0.21010476 0.41753517
#> t 0.16740211 0.41950301 0.8725724 0.11691019 0.04229702 0.35450250
#> u 0.22746666 0.22160734 0.6666813 0.11469800 0.21659332 0.22168511
#> v 0.17997018 0.20148115 0.7284268 0.18935129 0.22035156 0.24724376
#> w 0.19114979 0.24834051 0.7252039 0.37794904 0.13056837 0.24049684
#> x 0.15863892 0.23342891 0.8680189 0.15527000 0.14885089 0.24134930
#> y 0.11294887 0.29472989 0.8436033 0.14557032 0.09870329 0.25374784
#> z 0.21039040 0.30499191 0.7309410 0.25553623 0.20458509 0.44289583
plot(FS)

The output of the fs_construct function is a list containing:

FS$estimate
#>          FS1        FS2       FS3        FS4        FS5    Overall
#> a 0.16017778 0.15721420 0.7504151 0.11843430 0.13690382 0.17803697
#> b 0.17203766 0.13353783 0.8603701 0.18226841 0.35306548 0.16150876
#> c 0.17790861 0.20949808 0.8747891 0.23864519 0.22568769 0.30225670
#> d 0.18430484 0.38429991 0.8634134 0.17047030 0.06218540 0.24525107
#> e 0.13157099 0.21602939 0.9432241 0.35550492 0.30772389 0.45379840
#> f 0.11635064 0.25468798 0.7003120 0.18457563 0.15552302 0.18651992
#> g 0.19789906 0.19517219 0.7868058 0.16063463 0.08637581 0.27243247
#> h 0.10378979 0.19398696 0.8526735 0.21615485 0.22137989 0.18955852
#> i 0.19944239 0.10733043 0.9561498 0.16923227 0.29106818 0.21228732
#> j 0.10950019 0.22043135 0.8774224 0.05680170 0.18878432 0.19766477
#> k 0.20243807 0.07183648 0.9791507 0.09036923 0.27431162 0.32986760
#> l 0.18773841 0.23105579 0.9185245 0.15254579 0.12587426 0.16756316
#> m 0.19459905 0.08661289 0.8812583 0.19715665 0.19712955 0.16909045
#> n 0.08403138 0.23751028 0.8101947 0.24143510 0.05576150 0.08021327
#> o 0.10717430 0.15153461 0.6907420 0.07810733 0.12316342 0.09665732
#> p 0.12462294 0.26074356 0.7678514 0.28953421 0.29440486 0.21144141
#> q 0.10731824 0.28134009 0.8083268 0.16137948 0.26594294 0.22523560
#> r 0.13292525 0.13075056 0.9532498 0.36621517 0.41196933 0.38421113
#> s 0.26416295 0.28100851 0.9387913 0.26507953 0.21010476 0.41753517
#> t 0.16740211 0.41950301 0.8725724 0.11691019 0.04229702 0.35450250
#> u 0.22746666 0.22160734 0.6666813 0.11469800 0.21659332 0.22168511
#> v 0.17997018 0.20148115 0.7284268 0.18935129 0.22035156 0.24724376
#> w 0.19114979 0.24834051 0.7252039 0.37794904 0.13056837 0.24049684
#> x 0.15863892 0.23342891 0.8680189 0.15527000 0.14885089 0.24134930
#> y 0.11294887 0.29472989 0.8436033 0.14557032 0.09870329 0.25374784
#> z 0.21039040 0.30499191 0.7309410 0.25553623 0.20458509 0.44289583

Again, it is possible to obtain results for sub-domains by specifying the breakdown argument

FS1 FS2 FS3 FS4 FS5 Overall
a 0.1602 0.1572 0.7504 0.1184 0.1369 0.1780
b 0.1720 0.1335 0.8604 0.1823 0.3531 0.1615
c 0.1779 0.2095 0.8748 0.2386 0.2257 0.3023
d 0.1843 0.3843 0.8634 0.1705 0.0622 0.2453
e 0.1316 0.2160 0.9432 0.3555 0.3077 0.4538
f 0.1164 0.2547 0.7003 0.1846 0.1555 0.1865
g 0.1979 0.1952 0.7868 0.1606 0.0864 0.2724
h 0.1038 0.1940 0.8527 0.2162 0.2214 0.1896
i 0.1994 0.1073 0.9561 0.1692 0.2911 0.2123
j 0.1095 0.2204 0.8774 0.0568 0.1888 0.1977
k 0.2024 0.0718 0.9792 0.0904 0.2743 0.3299
l 0.1877 0.2311 0.9185 0.1525 0.1259 0.1676
m 0.1946 0.0866 0.8813 0.1972 0.1971 0.1691
n 0.0840 0.2375 0.8102 0.2414 0.0558 0.0802
o 0.1072 0.1515 0.6907 0.0781 0.1232 0.0967
p 0.1246 0.2607 0.7679 0.2895 0.2944 0.2114
q 0.1073 0.2813 0.8083 0.1614 0.2659 0.2252
r 0.1329 0.1308 0.9532 0.3662 0.4120 0.3842
s 0.2642 0.2810 0.9388 0.2651 0.2101 0.4175
t 0.1674 0.4195 0.8726 0.1169 0.0423 0.3545
u 0.2275 0.2216 0.6667 0.1147 0.2166 0.2217
v 0.1800 0.2015 0.7284 0.1894 0.2204 0.2472
w 0.1911 0.2483 0.7252 0.3779 0.1306 0.2405
x 0.1586 0.2334 0.8680 0.1553 0.1489 0.2413
y 0.1129 0.2947 0.8436 0.1456 0.0987 0.2537
z 0.2104 0.3050 0.7309 0.2555 0.2046 0.4429

Variance Estimation

The variance of each Fuzzy Monetary measure can be estimated either via Bootstrap 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)).

Example using fm=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
boot.var = fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "verma",  type = "bootstrap", HCR = .12, alpha = alpha, verbose = F, R = 10)

# plot(boot.var)

fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "verma", type = "jackknife", HCR = .12, alpha = 9, stratum = eusilc$stratum, psu = eusilc$psu, verbose = F)
#> $variance
#> [1] 5.324184e-06
#> 
#> $type
#> [1] "jackknife"
#> 
#> attr(,"class")
#> [1] "FuzzyMonetary"

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:

#> Warning in cbind(Bootstrap = fm_var(predicate = eusilc$eq_income, weight =
#> eusilc$DB090, : number of rows of result is not a multiple of vector length
#> (arg 2)

Table: Variance estimates for sub-domains

Bootstrap = fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "verma", breakdown = eusilc$db040, type = "bootstrap", HCR = hcr, alpha = alpha, verbose = FALSE)

plot(Bootstrap)


Bootstrap = fm_var(predicate = eusilc$eq_income, weight = eusilc$DB090, fm = "verma", breakdown = eusilc$db040, type = "jackknife", HCR = hcr, alpha = alpha, stratum = eusilc$stratum, psu = eusilc$psu, verbose = F)

Fuzzy supplementary

variance = fs_var(data = eusilc[,4:23], weight = eusilc$DB090, ID = NULL, dimensions = dimensions, breakdown = NULL, HCR = 0.12, alpha = 2, rho = NULL, type = 'bootstrap', M = NULL, R = 2, verbose = F)
summary(variance)
plot(variance)
Bootstrap = fs_var(data = eusilc[,4:23], weight = eusilc$DB090, ID = NULL, 
                  dimensions = dimensions, breakdown = eusilc$db040, HCR = .12,
                   alpha = 2, rho = NULL, type = 'bootstrap', M = NULL, R = 100, verbose = F) 
plot(Bootstrap)

The following uses the Jackknife

fs_var(data = eusilc[,4:23], weight = eusilc$DB090, ID = NULL, dimensions = dimensions, 
       stratum = eusilc$stratum, psu = eusilc$psu, verbose = F, f = .01) %>% summary()
       breakdown = eusilc$db040, HCR = .12, alpha = 2, rho = NULL, type = 'jackknife', 
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.