On statistical measures

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(FuzzySTs)

Fuzzy.sample.mean(): Calculates the fuzzy sample mean

FuzzySTs::Fuzzy.sample.mean() calculates the fuzzy sample mean of a given fuzzy variable. If the variable is encoded by trapezoidal fuzzy numbers written by their quadruple, this function can return a fuzzy number of the same form. The function can return as well a fuzzy number given by its numerical $\alpha$-cuts.

Practically, if the parameter alphacuts="TRUE", the function returns a matrix composed by 2 vectors representing the numerical left and right $\alpha$-cuts. For this output, the function FuzzySTs::is.alphacuts() returns a value TRUE. If the parameter alphacuts="FALSE", FuzzySTs::Fuzzy.sample.mean() returns a trapezoidal fuzzy number given by the quadruple (p,q,r,s).

# Simple example
mat <- matrix(c(1,2,2,3,3,4,4,5), ncol =4)
Fuzzy.sample.mean(mat) 
is.alphacuts(mat)

Weighted.fuzzy.mean(): Calculates the weighted fuzzy sample mean

FuzzySTs::Weighted.fuzzy.mean() calculates the weighted fuzzy sample mean of a given fuzzy variable. If the variable is encoded by trapezoidal fuzzy numbers written by their quadruple, this function can return a fuzzy number of the same form. The function can return as well a fuzzy number given by its numerical $\alpha$-cuts.

Practically, if the parameter alphacuts="TRUE", the function returns a matrix composed by 2 vectors representing the numerical left and right $\alpha$-cuts. For this output, the function FuzzySTs::is.alphacuts() returns a value TRUE. If the parameter alphacuts="FALSE", FuzzySTs::Fuzzy.sample.mean() returns a trapezoidal fuzzy number given by the quadruple (p,q,r,s).

# Simple example
mat <- matrix(c(1,2,2,3,3,4,4,5), ncol =4)
w <- c(1,3)
Weighted.fuzzy.mean(mat, w) 

Moment(): Calculates a central sample moment of a random fuzzy variable

FuzzySTs::Moment() calculates the $k$-th classical central sample moment of a random fuzzy variable by the Féron - Puri and Ralescu approach. This moment can be calculated using a distance chosen from the family of distances shown for the function FuzzySTs::distance(). By the function FuzzySTs::Moment(), one can easily compute the skewness and the kurtosis measures of the considered random fuzzy variable.

# Simple example
mat <- matrix(c(1,2,2,3,3,4,4,5), ncol =4)
Moment(mat, k=4, dist.type = "GSGD")

Skewness(): Calculates the skewness of a random fuzzy variable

FuzzySTs::Skewness() calculates the skewness of a random fuzzy variable based on the expression of the classical central sample moments. The calculations are made using the function FuzzySTs::Moment(). For a random fuzzy variable $\tilde{X}$, the skewness is given by the following ratio: \begin{equation} \text{Skewness} (\tilde{X}) = \frac{\nu_3(\tilde X)}{(\nu_2(\tilde X))^{3/2}}, \end{equation} \noindent where $\nu_3(\tilde X)$ is the third central sample moment of the variable $\tilde{X}$, and $\nu_2(\tilde X)$ is its second central sample moment.

# Simple example
mat <- matrix(c(1,2,0.25,1.8,2,2.6,0.5,3,3,2.6,3.8,4,4,4.2,3.9,5), ncol =4)
Skewness(mat, dist.type = "GSGD") 

Kurtosis(): Calculates the excess of kurtosis of a random fuzzy variable

FuzzySTs::Kurtosis() calculates the excess of kurtosis of a random fuzzy variable based on the expression of the classical central sample moments. The calculations are made using the function FuzzySTs::Moment(). For a random fuzzy variable $\tilde{X}$, the excess of kurtosis is given by the following ratio: \begin{equation} \text{Kurtosis} (\tilde{X}) = \frac{\nu_4(\tilde X)}{(\nu_2(\tilde X))^{2}} - 3, \end{equation} \noindent where $\nu_4(\tilde X)$ is the fourth central sample moment of the variable $\tilde{X}$, and $\nu_2(\tilde X)$ is its second central sample moment.

# Simple example
mat <- matrix(c(1,2,0.25,1.8,2,2.6,0.5,3,3,2.6,3.8,4,4,4.2,3.9,5), ncol =4)
Kurtosis(mat, dist.type = "GSGD") 

Fuzzy.variance(): Calculates the variance of a fuzzy variable

FuzzySTs::Fuzzy.variance() calculates the variance of a fuzzy variable. By this function, one could compute the following types of variances:

Using almost all of these approximations, a computational complexity induced by the approximation operation is expected to occur. It is related to the ordering of the obtained non-positive elements of the quadruples defining the fuzzy numbers. This fact violates the principles of the direction of the left and right $\alpha$-cuts of a LR fuzzy number. Therefore, we proposed to solve the problem using the shifting technique, also known as the translation technique.

To sum up, in terms of outcome, if the parameter method = "distance", the function FuzzySTs::Fuzzy.variance() returns a numerical value. If else, it returns the numerical $\alpha$-cuts of the estimated fuzzy variance by one of the approximation methods chosen.

# Example 1
data <- matrix(c(1,2,3,2,2,1,1,3,1,2),ncol=1)
MF111 <- TrapezoidalFuzzyNumber(0,1,1,2) 
MF112 <- TrapezoidalFuzzyNumber(1,2,2,3) 
MF113 <- TrapezoidalFuzzyNumber(2,3,3,3) 
PA11 <- c(1,2,3) 

# Fuzzification using FUZZ giving a matrix of the quadruples p,q,r,s

data.fuzzified <- FUZZ(data,mi=1,si=1,PA=PA11)
Fuzzy.variance(data.fuzzified, method = "approximation5", plot=TRUE)
head(Fuzzy.variance(data.fuzzified, method = "exact", plot=TRUE))
Fuzzy.variance(data.fuzzified, method = "distance")
# Example 2 - Fuzzification using GFUZZ giving a numerical matrix of left and right alpha-cuts

data.fuzzified2 <- GFUZZ(data,mi=1,si=1,PA=PA11) 
head(Fuzzy.variance(data.fuzzified2, method = "exact", plot=TRUE))
Fuzzy.variance(data.fuzzified2, method = "distance")


Try the FuzzySTs package in your browser

Any scripts or data that you put into this service are public.

FuzzySTs documentation built on Nov. 23, 2020, 5:11 p.m.