| 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 |
Assigns each observation to the cluster with the highest membership value.
cluster_assignment(object)cluster_assignment(object)
object |
An object of class "fcmTFN". |
A factor indicating cluster labels.
Performs fuzzy clustering on ordinal Likert-type data represented as triangular fuzzy numbers (TFNs).
fcmTFN( data, type = "symmetric", option = "B", dictionary = NULL, k_values = 2:6, m = 2, epsilon = 1e-06, max_iter = 1000, verbose = TRUE )fcmTFN( data, type = "symmetric", option = "B", dictionary = NULL, k_values = 2:6, m = 2, epsilon = 1e-06, max_iter = 1000, verbose = TRUE )
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. |
The function automatically determines the optimal number of clusters based on the Xie-Beni validity index.
An object of class '"fcmTFN"' and '"fcm"'.
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>
Returns the fuzzy membership matrix obtained from the Fuzzy C-Means clustering process.
membership(object)membership(object)
object |
An object of class "fcmTFN". |
A matrix where rows represent observations and columns represent clusters.
Plots the triangular fuzzy numbers defining the Likert-scale dictionary.
plot_dictionary(object)plot_dictionary(object)
object |
An object of class "fcmTFN". |
A plot showing triangular membership functions.
Visualizes cluster prototypes as interval plots using triangular fuzzy numbers (l, c, r).
plot_prototypes( object, cluster = 1, use_var_names = FALSE, var_names = NULL, ... )plot_prototypes( object, cluster = 1, use_var_names = FALSE, var_names = NULL, ... )
object |
An object of class "fcmTFN". |
cluster |
Integer cluster to plot. |
use_var_names |
Logical. |
var_names |
Optional variable names. |
... |
Additional graphical parameters. |
Invisibly returns NULL.
Plots the Xie-Beni validity index across candidate numbers of clusters.
plot_xb(object, mark_optimal = TRUE, type = "b", ...)plot_xb(object, mark_optimal = TRUE, type = "b", ...)
object |
An object of class "fcmTFN". |
mark_optimal |
Logical. Whether to highlight the optimal k. |
type |
Plot type (default = "b"). |
... |
Additional graphical parameters. |
Invisibly returns NULL.
Displays a concise summary of a fitted fuzzy C-means model using triangular fuzzy numbers.
print_fcmTFN(x, ...)print_fcmTFN(x, ...)
x |
An object of class "fcmTFN". |
... |
Additional arguments (not used). |
The input object (invisibly).
Returns cluster prototypes as a readable matrix containing l, c, r values for each variable.
prototype_matrix(object, use_var_names = FALSE, var_names = NULL)prototype_matrix(object, use_var_names = FALSE, var_names = NULL)
object |
An object of class "fcmTFN". |
use_var_names |
Logical. |
var_names |
Optional variable names. |
A data.frame containing prototype values.
A synthetic dataset representing ordinal Likert-type responses measured on a 0–10 scale.
sim_likert_0_10sim_likert_0_10
A data.frame with 500 observations and 10 variables:
Overall life satisfaction
Self-reported happiness
Anxiety level
Depression level
Self-rated health
Income satisfaction
Job satisfaction
Social relationships quality
Trust in others
Future expectations
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.
Simulated data
A simulated Likert-type dataset with three well-separated clusters. Designed for testing fuzzy clustering of ordinal data.
sim_likert7sim_likert7
A data.frame with 300 rows and 12 variables:
Likert response (1–7)
Likert response (1–7)
Likert response (1–7)
Likert response (1–7)
Likert response (1–7)
Likert response (1–7)
Likert response (1–7)
Likert response (1–7)
Likert response (1–7)
Likert response (1–7)
Likert response (1–7)
Likert response (1–7)
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 ( 2)
• Moderate agreement ( 4)
• High agreement ( 6)
Each cluster contains 100 observations.
Simulated data generated for package examples.
Displays a summary of the Fuzzy C-Means clustering results for triangular fuzzy numbers.
## S3 method for class 'fcmTFN' summary(object, ...)## S3 method for class 'fcmTFN' summary(object, ...)
object |
An object of class "fcmTFN". |
... |
Additional arguments (not used). |
Prints a formatted summary of the clustering result.