IFFuzzyStats: Intuitionistic Fuzzy Statistics in R

Intuitionistic fuzzy values

An intuitionistic fuzzy value (IFV) is a pair \((\mu, \nu)\) with \(\mu+\nu \le 1\); hesitation is \(\pi = 1-\mu-\nu\).

a <- ifv(0.6, 0.3)
a
#> <intuitionistic fuzzy vector: 1 value(s)>
#>    mu  nu  pi
#> 1 0.6 0.3 0.1
if_pi(a)
#> [1] 0.1
if_score(a)
#> [1] 0.3

Aggregation

Xu (2007) weighted averaging / geometric operators plus ordered and hybrid variants:

x <- ifv(c(0.6, 0.5, 0.7), c(0.3, 0.2, 0.1))
ifwa(x, c(0.5, 0.3, 0.2))
#> <intuitionistic fuzzy vector: 1 value(s)>
#>          mu        nu        pi
#> 1 0.5962196 0.2132405 0.1905399
ifwg(x, c(0.5, 0.3, 0.2))
#> <intuitionistic fuzzy vector: 1 value(s)>
#>          mu        nu        pi
#> 1 0.5858497 0.2338311 0.1803192
ifowa(x, c(0.5, 0.3, 0.2))
#> <intuitionistic fuzzy vector: 1 value(s)>
#>          mu        nu        pi
#> 1 0.6377798 0.1597138 0.2025064

Entropy, distance, similarity

if_entropy(x, "szmidt")
#> [1] 0.5099206
if_entropy(x, "vlachos")
#> [1] 0.8218341
b <- ifv(c(0.5, 0.4, 0.6), c(0.3, 0.3, 0.2))
if_dist(x, b, "hamming")
#> [1] 0.1
if_dist(x, b, "euclidean")
#> [1] 0.1
if_sim(x, b, "ye_cosine")
#> [1] 0.979702
if_sim(x, b, "dice")
#> [1] 0.9760015

Clustering

set.seed(1)
mu <- runif(30, 0.3, 0.7); nu <- runif(30, 0.05, 0.25)
d <- ifv(mu, nu)
r <- ifcmeans(d, k = 2, nstart = 2, maxit = 20)
table(r$cluster)
#> 
#>  1  2 
#> 15 15
r$centers
#> <intuitionistic fuzzy vector: 2 value(s)>
#>          mu        nu       pi
#> 1 0.6216289 0.1546681 0.223703
#> 2 0.4108270 0.1382600 0.450913

Inference and TOPSIS

Max-min composition and the compositional rule of inference:

R <- ifv(c(0.6, 0.3, 0.8, 0.2), c(0.2, 0.5, 0.1, 0.6))
fact <- ifv(c(0.8, 0.2), c(0.1, 0.7))
if_infer(fact, R, nx = 2, ny = 2)
#> <intuitionistic fuzzy vector: 2 value(s)>
#>    mu  nu  pi
#> 1 0.6 0.2 0.2
#> 2 0.3 0.5 0.2

IF-TOPSIS for a 3-alternative, 2-criterion problem:

m <- ifv(c(0.6, 0.5, 0.7, 0.4, 0.5, 0.6), c(0.2, 0.3, 0.1, 0.4, 0.3, 0.2))
if_topsis(m, nalt = 3, ncrit = 2, w = c(0.6, 0.4))
#>   alt        mu        nu     score    d_plus   d_minus closeness rank
#> 2   2 0.6041476 0.1741101 0.4300375 0.3436445 0.7403574 0.6829853    1
#> 1   1 0.5626552 0.2352158 0.3274394 0.3791129 0.6864153 0.6442019    2
#> 3   3 0.5426949 0.2550849 0.2876100 0.3969189 0.6671991 0.6269973    3