Package 'fcmfd'

Title: Fuzzy C-Means for Fuzzy Data
Description: Implements a fuzzy clustering approach for ordinal Likert-type data using triangular fuzzy numbers (TFNs). The package extends the classical fuzzy C-means algorithm to better handle uncertainty in ordinal scales and includes automatic selection of the number of clusters using the Xie-Beni validity index. References: Coppi, R., D'Urso, P., and Giordani, P. (2012), "Fuzzy and possibilistic clustering for fuzzy data", <doi:10.1016/j.csda.2010.09.013>. Xie, X. L. and Beni, G. (1991), "A validity measure for fuzzy clustering", <doi:10.1109/34.85677>.
Authors: José Ortigas [aut, cre]
Maintainer: José Ortigas <[email protected]>
License: MIT + file LICENSE
Version: 0.1.1
Built: 2026-05-23 15:06:36 UTC
Source: https://github.com/cran/fcmfd

Help Index


Hard Cluster Assignment

Description

Assigns each observation to the cluster with the highest membership value.

Usage

cluster_assignment(object)

Arguments

object

An object of class "fcmTFN".

Value

A factor indicating cluster labels.


Fuzzy C-Means Clustering for Triangular Fuzzy Numbers

Description

Performs fuzzy clustering on ordinal Likert-type data represented as triangular fuzzy numbers (TFNs).

Usage

fcmTFN(
  data,
  type = "symmetric",
  option = "B",
  dictionary = NULL,
  k_values = 2:6,
  m = 2,
  epsilon = 1e-06,
  max_iter = 1000,
  verbose = TRUE
)

Arguments

data

A data.frame or matrix containing ordinal Likert-type responses. Rows represent observations (respondents) and columns represent variables (items or dimensions). All values must be integers within the range defined by the selected scale option.

type

A character string specifying the type of fuzzy dictionary to use. Must be one of "symmetric" for predefined symmetric triangular fuzzy numbers, or "asymmetric" for a user-defined custom dictionary. Defaults to "symmetric".

option

A character string indicating the Likert scale option. Must be one of "A" (5-point scale, 1–5), "B" (7-point scale, 1–7), "C" (10-point scale, 1–10), or "D" (11-point scale, 0–10). Defaults to "B".

dictionary

An optional numeric matrix with 3 columns (l, c, r) representing the lower bound, modal value, and upper bound of each triangular fuzzy number. Required when type = "asymmetric"; ignored when type = "symmetric". Defaults to NULL.

k_values

A numeric vector specifying the candidate numbers of clusters to evaluate. The algorithm runs independently for each value of k. Defaults to 2:6.

m

Fuzzifier parameter (m > 1) specifying the fuzzifier parameter, which controls the degree of membership overlap between clusters. Higher values produce softer partitions. Defaults to 2.

epsilon

A positive numeric value specifying the convergence tolerance. The algorithm stops when the change in the objective function between iterations falls below this threshold. Defaults to 1e-06.

max_iter

A positive integer specifying the maximum number of iterations allowed per run. If convergence is not reached within this limit, a warning is issued. Defaults to 1000.

verbose

A logical value. If TRUE, progress messages are printed to the console during execution, including iteration count and convergence status for each value of k. Defaults to TRUE.

Details

The function automatically determines the optimal number of clusters based on the Xie-Beni validity index.

Value

An object of class '"fcmTFN"' and '"fcm"'.

References

Coppi, R., D'Urso, P., & Giordani, P. (2012). Fuzzy and possibilistic clustering for fuzzy data. <doi:10.1016/j.csda.2010.09.013>

Xie, X. L., & Beni, G. (1991). A validity measure for fuzzy clustering. <doi:10.1109/34.85677>


Extract Membership Matrix

Description

Returns the fuzzy membership matrix obtained from the Fuzzy C-Means clustering process.

Usage

membership(object)

Arguments

object

An object of class "fcmTFN".

Value

A matrix where rows represent observations and columns represent clusters.


Plot Fuzzy Dictionary

Description

Plots the triangular fuzzy numbers defining the Likert-scale dictionary.

Usage

plot_dictionary(object)

Arguments

object

An object of class "fcmTFN".

Value

A plot showing triangular membership functions.


Plot Cluster Prototypes

Description

Visualizes cluster prototypes as interval plots using triangular fuzzy numbers (l, c, r).

Usage

plot_prototypes(
  object,
  cluster = 1,
  use_var_names = FALSE,
  var_names = NULL,
  ...
)

Arguments

object

An object of class "fcmTFN".

cluster

Integer cluster to plot.

use_var_names

Logical.

var_names

Optional variable names.

...

Additional graphical parameters.

Value

Invisibly returns NULL.


Plot Xie-Beni Index

Description

Plots the Xie-Beni validity index across candidate numbers of clusters.

Usage

plot_xb(object, mark_optimal = TRUE, type = "b", ...)

Arguments

object

An object of class "fcmTFN".

mark_optimal

Logical. Whether to highlight the optimal k.

type

Plot type (default = "b").

...

Additional graphical parameters.

Value

Invisibly returns NULL.


Prototype Matrix Extraction

Description

Returns cluster prototypes as a readable matrix containing l, c, r values for each variable.

Usage

prototype_matrix(object, use_var_names = FALSE, var_names = NULL)

Arguments

object

An object of class "fcmTFN".

use_var_names

Logical.

var_names

Optional variable names.

Value

A data.frame containing prototype values.


Simulated Likert Data (0–10 Scale)

Description

A synthetic dataset representing ordinal Likert-type responses measured on a 0–10 scale.

Usage

sim_likert_0_10

Format

A data.frame with 500 observations and 10 variables:

life_satisfaction

Overall life satisfaction

happiness

Self-reported happiness

anxiety

Anxiety level

depression

Depression level

health

Self-rated health

income_satisfaction

Income satisfaction

job_satisfaction

Job satisfaction

social_relationships

Social relationships quality

trust_in_others

Trust in others

future_expectations

Future expectations

Details

The dataset is designed with an underlying cluster structure (low, medium, high profiles) to support clustering validation.

The dataset contains three latent groups representing different levels of well-being.

Source

Simulated data


Simulated Likert 1–7 Survey Dataset

Description

A simulated Likert-type dataset with three well-separated clusters. Designed for testing fuzzy clustering of ordinal data.

Usage

sim_likert7

Format

A data.frame with 300 rows and 12 variables:

Q1

Likert response (1–7)

Q2

Likert response (1–7)

Q3

Likert response (1–7)

Q4

Likert response (1–7)

Q5

Likert response (1–7)

Q6

Likert response (1–7)

Q7

Likert response (1–7)

Q8

Likert response (1–7)

Q9

Likert response (1–7)

Q10

Likert response (1–7)

Q11

Likert response (1–7)

Q12

Likert response (1–7)

Details

The dataset contains responses measured on a 1–7 Likert scale across 12 variables.

The dataset was generated using three latent profiles centered approximately at:

• Low agreement (\approx 2) • Moderate agreement (\approx 4) • High agreement (\approx 6)

Each cluster contains 100 observations.

Source

Simulated data generated for package examples.


Summary for fcmTFN Objects

Description

Displays a summary of the Fuzzy C-Means clustering results for triangular fuzzy numbers.

Usage

## S3 method for class 'fcmTFN'
summary(object, ...)

Arguments

object

An object of class "fcmTFN".

...

Additional arguments (not used).

Value

Prints a formatted summary of the clustering result.