Learn R Programming

lfl (version 2.2.0)

fsets: S3 class representing a set of fuzzy sets on the fixed universe

Description

The aim of the fsets S3 class is to store several fuzzy sets in the form of numeric matrix where columns represent fuzzy sets, rows are elements from the universe, and therefore a value of i-th row and j-th column is a membership degree of i-th element of the universe to j-th fuzzy set. The fsets object also stores the information about the origin of the fuzzy sets as well as a relation of specificity among them.

Usage

fsets(
  x,
  vars = rep(deparse(substitute(x)), ncol(x)),
  specs = matrix(0, nrow = ncol(x), ncol = ncol(x))
)

vars(f)

vars(f) <- value

specs(f)

specs(f) <- value

Value

fsets() returns an object of S3 class fsets. vars() returns a vector of original variable names of the fsets object. specs

returns the specificity matrix.

Arguments

x

A matrix of membership degrees. Columns of the matrix represent fuzzy sets, colnames are names of the fuzzy sets (and must not be NULL). Rows of the matrix represent elements of the universe.

vars

A character vector that must correspond to the columns of x. It is a vector of names of original variables that the fuzzy sets were created from. In other words, the vars vector should contain the same value for each x's column that corresponds to the same variable. Names of the vars vector are ignored. For instance, an fcut() function can transform a single numeric vector into several different fuzzy sets. To indicate that all of them in fact describe the same original variable, the same name is stored on appropriate positions of the vars vector.

specs

A square numeric matrix containing values from {0, 1}. It is a specificity matrix, for which both rows and columns correspond to x's columns and where specs[i][j] == 1 if and only if i-th fuzzy set (i.e. x[, i]) is more specific (is a subset or equal to) than j-th fuzzy set (i.e. x[, j]).

f

An instance of S3 class fsets.

value

Attribute values to be set to the object.

Author

Michal Burda

Details

The fsets() function is a constructor of an object of type fsets. Each object stores two attributes: vars and specs. The functions vars() and specs()). can be used to access these attributes.

It is assumed that the fuzzy sets are derived from some raw variables, e.g. numeric vectors or factors. vars attribute is a character vector of names of raw variables with size equal to the number of fuzzy sets in fsets object. It is then assumed that two fuzzy sets with the same name in vars() attribute are derived from the same variable.

specs attribute gives a square numeric matrix of size equal to the number of fuzzy sets in fsets. specs[i][j] == 1 if and only if the i-th fuzzy set is more specific than j-th fuzzy set. Specificity of fuzzy sets means the nestedness of fuzzy set: for instance, very small is more specific than small; similarly, extremely big is more specific than very big; on the other hand, very big and extremely small are incomparable. A necessary condition for specificity is subsethood.

See Also

fcut(), lcut(), is.specific()

Examples

Run this code
    # create a matrix of random membership degrees
    m <- matrix(runif(30), ncol=5)
    colnames(m) <- c('a1', 'a2', 'a12', 'b1', 'b2')

    # create vars - first three (a1, a2, a3) and next two (b1, b2)
    # fuzzy sets originate from the same variable
    v <- c('a', 'a', 'a', 'b', 'b')
    names(v) <- colnames(m)

    # create specificity matrix - a1 and a2 are more specific than a12,
    # the rest is incomparable
    s <- matrix(c(0, 0, 1, 0, 0,
                  0, 0, 1, 0, 0,
                  0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0), byrow=TRUE, ncol=5)
    colnames(s) <- colnames(m)
    rownames(s) <- colnames(m)

    # create a valid instance of the fsets class
    o <- fsets(m, v, s)

Run the code above in your browser using DataLab