TAREA6_REPO_PCA_MDS

Cristhian Ernesto Romero Pulla

C6T1 - Documentos RMD

26-06-2025

Tema

Aplicaciones livianas RMD y Shiny

Instrucciones

Objetivo: Realizar un documento RMD para visualizar reducción de componentes y conglomerado MDS.

Recursos: Para el presente trabajo necesitamos descargar la base vinos que reside en el siguiente enlace:
https://www.jaredlander.com/data/wine.csv

Siga las indicaciones del presente archivo .Rmd, en el encontrará los detalles de lo que se espera recibir por parte del estudiante. Cuando complete el documento, renderice el archivo.

Finalmente, publique el documento en el repositorio de RPubs.

Parte 1 PCA de wine

Los archivos RMarkdown permiten integrar código, visualizaciones y análisis en un solo documento reproducible. Facilitan la transparencia metodológica y la documentación clara de cada paso, lo cual es crucial para investigaciones académicas y análisis complejos en el ámbito de la ciencia de datos.

## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.2     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
## 
## Cargando paquete requerido: viridisLite

Proceda a cargar los datos de wine.csv _El URL es https://www.jaredlander.com/data/wine.csv_

##   Cultivar Alcohol Malic.acid  Ash Alcalinity.of.ash Magnesium Total.phenols
## 1        1   14.23       1.71 2.43              15.6       127          2.80
## 2        1   13.20       1.78 2.14              11.2       100          2.65
## 3        1   13.16       2.36 2.67              18.6       101          2.80
## 4        1   14.37       1.95 2.50              16.8       113          3.85
## 5        1   13.24       2.59 2.87              21.0       118          2.80
##   Flavanoids Nonflavanoid.phenols Proanthocyanins Color.intensity  Hue
## 1       3.06                 0.28            2.29            5.64 1.04
## 2       2.76                 0.26            1.28            4.38 1.05
## 3       3.24                 0.30            2.81            5.68 1.03
## 4       3.49                 0.24            2.18            7.80 0.86
## 5       2.69                 0.39            1.82            4.32 1.04
##   OD280.OD315.of.diluted.wines Proline
## 1                         3.92    1065
## 2                         3.40    1050
## 3                         3.17    1185
## 4                         3.45    1480
## 5                         2.93     735

El dataset wine.csv contiene datos químicos de muestras de vino provenientes de tres diferentes cultivares (variedades de uva). Está compuesto por 14 variables:

  • Una variable categórica llamada Type o Cultivar, que representa la clase del vino (1, 2 o 3).
  • Trece variables numéricas que describen propiedades físico-químicas como el contenido de alcohol, ácido málico, cenizas, intensidad de color, flavonoides, entre otros.

La única variable no numérica o categórica en el conjunto de datos es Type, la cual se utilizará para fines de clasificación y visualización, pero no se incluirá en los cálculos de PCA o MDS, ya que estos requieren variables numéricas.

## 'data.frame':    178 obs. of  14 variables:
##  $ Cultivar                    : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Alcohol                     : num  14.2 13.2 13.2 14.4 13.2 ...
##  $ Malic.acid                  : num  1.71 1.78 2.36 1.95 2.59 1.76 1.87 2.15 1.64 1.35 ...
##  $ Ash                         : num  2.43 2.14 2.67 2.5 2.87 2.45 2.45 2.61 2.17 2.27 ...
##  $ Alcalinity.of.ash           : num  15.6 11.2 18.6 16.8 21 15.2 14.6 17.6 14 16 ...
##  $ Magnesium                   : int  127 100 101 113 118 112 96 121 97 98 ...
##  $ Total.phenols               : num  2.8 2.65 2.8 3.85 2.8 3.27 2.5 2.6 2.8 2.98 ...
##  $ Flavanoids                  : num  3.06 2.76 3.24 3.49 2.69 3.39 2.52 2.51 2.98 3.15 ...
##  $ Nonflavanoid.phenols        : num  0.28 0.26 0.3 0.24 0.39 0.34 0.3 0.31 0.29 0.22 ...
##  $ Proanthocyanins             : num  2.29 1.28 2.81 2.18 1.82 1.97 1.98 1.25 1.98 1.85 ...
##  $ Color.intensity             : num  5.64 4.38 5.68 7.8 4.32 6.75 5.25 5.05 5.2 7.22 ...
##  $ Hue                         : num  1.04 1.05 1.03 0.86 1.04 1.05 1.02 1.06 1.08 1.01 ...
##  $ OD280.OD315.of.diluted.wines: num  3.92 3.4 3.17 3.45 2.93 2.85 3.58 3.58 2.85 3.55 ...
##  $ Proline                     : int  1065 1050 1185 1480 735 1450 1290 1295 1045 1045 ...
# Quitamos la variable categórica 'Type' para dejar solo las numéricas
wine_numeric <- wine[, -1]

# Ejecutamos el PCA
pca_result <- PCA(wine_numeric, graph = FALSE)

Aplicación de PCA

Indique que beneficios obtenemos de PCA

El Análisis de Componentes Principales (PCA) permite reducir la dimensionalidad del dataset transformando las variables originales en un conjunto más pequeño de variables no correlacionadas llamadas componentes principales. Esto facilita la visualización y el análisis de grandes cantidades de datos, conservando la mayor parte de la información original.

Antes de aplicar PCA, es fundamental revisar si existen valores cero o negativos, ya que pueden afectar la interpretación de algunos componentes y distorsionar el escalamiento. Las variables numéricas deben ser normalizadas para asegurar que todas contribuyan equitativamente al análisis.

##                      Alcohol                   Malic.acid 
##                            0                            0 
##                          Ash            Alcalinity.of.ash 
##                            0                            0 
##                    Magnesium                Total.phenols 
##                            0                            0 
##                   Flavanoids         Nonflavanoid.phenols 
##                            0                            0 
##              Proanthocyanins              Color.intensity 
##                            0                            0 
##                          Hue OD280.OD315.of.diluted.wines 
##                            0                            0 
##                      Proline 
##                            0

Se ha realizado una inspección para detectar variables con valores 0 o negativos. Las variables que no presentan estos valores fueron seleccionadas y normalizadas utilizando scale(), garantizando así un tratamiento adecuado para la aplicación de PCA. Las columnas eliminadas del procedimiento no fueron descartadas del dataset original.

Indique en este lugar cual es el propósito de la función prcomp

La función prcomp() permite realizar el Análisis de Componentes Principales (PCA) utilizando la descomposición en valores singulares (SVD). Su objetivo es reducir la dimensionalidad del conjunto de datos, generando nuevas variables llamadas componentes principales que son combinaciones lineales de las variables originales, manteniendo la mayor cantidad posible de varianza (información).

Aplicando PRCOMP

La función prcomp() se utiliza para aplicar el Análisis de Componentes Principales (PCA) a un conjunto de datos. Esta función calcula los valores propios (eigenvalores) que representan la varianza explicada por cada componente, así como los vectores propios (eigenvectores) que indican la dirección de cada componente principal en el espacio original. Además, genera los scores, que son las coordenadas de cada observación proyectadas sobre los nuevos ejes principales.

##  [1] 4.7058503 2.4969737 1.4460720 0.9189739 0.8532282 0.6416570 0.5510283
##  [8] 0.3484974 0.2888799 0.2509025 0.2257886 0.1687702 0.1033779
##                                       PC1          PC2         PC3         PC4
## Alcohol                      -0.144329395 -0.483651548 -0.20738262 -0.01785630
## Malic.acid                    0.245187580 -0.224930935  0.08901289  0.53689028
## Ash                           0.002051061 -0.316068814  0.62622390 -0.21417556
## Alcalinity.of.ash             0.239320405  0.010590502  0.61208035  0.06085941
## Magnesium                    -0.141992042 -0.299634003  0.13075693 -0.35179658
## Total.phenols                -0.394660845 -0.065039512  0.14617896  0.19806835
## Flavanoids                   -0.422934297  0.003359812  0.15068190  0.15229479
## Nonflavanoid.phenols          0.298533103 -0.028779488  0.17036816 -0.20330102
## Proanthocyanins              -0.313429488 -0.039301722  0.14945431  0.39905653
## Color.intensity               0.088616705 -0.529995672 -0.13730621  0.06592568
## Hue                          -0.296714564  0.279235148  0.08522192 -0.42777141
## OD280.OD315.of.diluted.wines -0.376167411  0.164496193  0.16600459  0.18412074
## Proline                      -0.286752227 -0.364902832 -0.12674592 -0.23207086
##                                      PC5         PC6         PC7         PC8
## Alcohol                       0.26566365 -0.21353865 -0.05639636 -0.39613926
## Malic.acid                   -0.03521363 -0.53681385  0.42052391 -0.06582674
## Ash                           0.14302547 -0.15447466 -0.14917061  0.17026002
## Alcalinity.of.ash            -0.06610294  0.10082451 -0.28696914 -0.42797018
## Magnesium                    -0.72704851 -0.03814394  0.32288330  0.15636143
## Total.phenols                 0.14931841  0.08412230 -0.02792498  0.40593409
## Flavanoids                    0.10902584  0.01892002 -0.06068521  0.18724536
## Nonflavanoid.phenols          0.50070298  0.25859401  0.59544729  0.23328465
## Proanthocyanins              -0.13685982  0.53379539  0.37213935 -0.36822675
## Color.intensity               0.07643678  0.41864414 -0.22771214  0.03379692
## Hue                           0.17361452 -0.10598274  0.23207564 -0.43662362
## OD280.OD315.of.diluted.wines  0.10116099 -0.26585107 -0.04476370  0.07810789
## Proline                       0.15786880 -0.11972557  0.07680450 -0.12002267
##                                      PC9        PC10        PC11        PC12
## Alcohol                      -0.50861912 -0.21160473  0.22591696  0.26628645
## Malic.acid                    0.07528304  0.30907994 -0.07648554 -0.12169604
## Ash                           0.30769445  0.02712539  0.49869142  0.04962237
## Alcalinity.of.ash            -0.20044931 -0.05279942 -0.47931378  0.05574287
## Magnesium                    -0.27140257 -0.06787022 -0.07128891 -0.06222011
## Total.phenols                -0.28603452  0.32013135 -0.30434119  0.30388245
## Flavanoids                   -0.04957849  0.16315051  0.02569409  0.04289883
## Nonflavanoid.phenols         -0.19550132 -0.21553507 -0.11689586 -0.04235219
## Proanthocyanins               0.20914487 -0.13418390  0.23736257  0.09555303
## Color.intensity              -0.05621752  0.29077518 -0.03183880 -0.60422163
## Hue                          -0.08582839  0.52239889  0.04821201 -0.25921400
## OD280.OD315.of.diluted.wines -0.13722690 -0.52370587 -0.04642330 -0.60095872
## Proline                       0.57578611 -0.16211600 -0.53926983  0.07940162
##                                     PC13
## Alcohol                      -0.01496997
## Malic.acid                   -0.02596375
## Ash                           0.14121803
## Alcalinity.of.ash            -0.09168285
## Magnesium                    -0.05677422
## Total.phenols                 0.46390791
## Flavanoids                   -0.83225706
## Nonflavanoid.phenols         -0.11403985
## Proanthocyanins               0.11691707
## Color.intensity               0.01199280
## Hue                           0.08988884
## OD280.OD315.of.diluted.wines  0.15671813
## Proline                      -0.01444734
##            PC1        PC2        PC3        PC4        PC5        PC6
## [1,] -3.307421 -1.4394023 -0.1652728 -0.2150246 -0.6910933 -0.2232504
## [2,] -2.203250  0.3324551 -2.0207571 -0.2905387  0.2569299 -0.9245123
## [3,] -2.509661 -1.0282507  0.9800541  0.7228632  0.2503270  0.5477310
## [4,] -3.746497 -2.7486184 -0.1756962  0.5663856  0.3109644  0.1141091
## [5,] -1.006070 -0.8673840  2.0209873 -0.4086131 -0.2976180 -0.4053761
## [6,] -3.041674 -2.1164309 -0.6276254 -0.5141870  0.6302409  0.1230834
##              PC7         PC8         PC9        PC10       PC11          PC12
## [1,]  0.59474883  0.06495586 -0.63963836 -1.01808396  0.4502932 -0.5392891439
## [2,]  0.05362434  1.02153432  0.30797798 -0.15925214  0.1422560 -0.3871456499
## [3,]  0.42301218 -0.34324787  1.17452129 -0.11304198  0.2858665 -0.0005819316
## [4,] -0.38225899  0.64178311 -0.05239662 -0.23873915 -0.7574476  0.2413387757
## [5,]  0.44282531  0.41552831 -0.32589984  0.07814604  0.5244656  0.2160546934
## [6,]  0.40052393  0.39378261  0.15171810  0.10170891 -0.4044444  0.3783653606
##              PC13
## [1,]  0.066052305
## [2,] -0.003626273
## [3,] -0.021655423
## [4,]  0.368444194
## [5,]  0.079140320
## [6,] -0.144747017

Obteniendo los valores eigen y extraiga los valores y vectores y scores.

knitr::kable(head(scores), caption = "Coordenadas de las primeras observaciones en el espacio PCA")
Coordenadas de las primeras observaciones en el espacio PCA
PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12 PC13
-3.307421 -1.4394023 -0.1652728 -0.2150246 -0.6910933 -0.2232504 0.5947488 0.0649559 -0.6396384 -1.0180840 0.4502932 -0.5392891 0.0660523
-2.203250 0.3324551 -2.0207571 -0.2905387 0.2569299 -0.9245123 0.0536243 1.0215343 0.3079780 -0.1592521 0.1422560 -0.3871456 -0.0036263
-2.509661 -1.0282507 0.9800541 0.7228632 0.2503270 0.5477310 0.4230122 -0.3432479 1.1745213 -0.1130420 0.2858665 -0.0005819 -0.0216554
-3.746497 -2.7486184 -0.1756962 0.5663856 0.3109644 0.1141091 -0.3822590 0.6417831 -0.0523966 -0.2387392 -0.7574476 0.2413388 0.3684442
-1.006071 -0.8673840 2.0209873 -0.4086131 -0.2976180 -0.4053761 0.4428253 0.4155283 -0.3258998 0.0781460 0.5244656 0.2160547 0.0791403
-3.041674 -2.1164309 -0.6276254 -0.5141870 0.6302409 0.1230834 0.4005239 0.3937826 0.1517181 0.1017089 -0.4044444 0.3783654 -0.1447470

Indique aquí cuál es el concepto que se utiliza para la selección de componentes principales

La selección de los componentes principales se basa en el porcentaje de varianza explicada por cada componente. Generalmente, se utiliza el criterio de la varianza acumulada, seleccionando el número mínimo de componentes que permiten explicar al menos un 80% de la varianza total del conjunto de datos. Esto permite simplificar la información sin perder representatividad.

Este bloque genera el scree plot (gráfico de codo), que muestra la varianza individual y acumulada de cada componente:

El gráfico de codo (scree plot) permite identificar cuántos componentes son necesarios para capturar la mayor parte de la varianza. En este caso, se observa que los primeros componentes explican un alto porcentaje, por lo que se podría considerar utilizar los dos o tres primeros para el análisis y visualización.

Realize un análisis de la visualización anterior, que indica

Análisis del scree plot

El gráfico de codo (scree plot) muestra la proporción de varianza explicada por cada componente principal. Se observa que:

  • El primer componente (PC1) explica el 36.2% de la varianza.

  • El segundo componente (PC2) aporta un 19.2% adicional.

  • El tercer componente (PC3) agrega 11.1% más.

  • La suma acumulada de estos tres componentes es aproximadamente 66.5%, lo cual indica que una buena parte de la información original del dataset se concentra en los primeros tres componentes.

A partir del cuarto componente en adelante, la ganancia de varianza explicada disminuye considerablemente, lo cual se visualiza claramente con el “codo” del gráfico. Esto sugiere que, desde el punto de vista del análisis de componentes principales (PCA), retener únicamente las tres primeras dimensiones sería una decisión razonable para reducir la dimensionalidad del conjunto de datos sin perder demasiada información relevante.

Relación entre las variables originales y las Componentes Principales

Este gráfico nos permite visualizar cómo se relacionan las variables originales con las componentes principales seleccionadas. Se utiliza un biplot para mostrar las direcciones de mayor variabilidad (vectores) en el espacio de los primeros componentes principales. Esta visualización permite interpretar qué variables tienen mayor influencia en cada componente y cómo se correlacionan entre ellas.

Realice un análisis de la visualización anterior, que indica

La gráfica muestra el biplot de variables resultante del Análisis de Componentes Principales (ACP), específicamente para las dos primeras componentes (Dim1 y Dim2), que explican conjuntamente el 55.4 % de la varianza total del conjunto de datos (36.2 % + 19.2 %).

  • Las variables más importantes en la Dimensión 1 (Dim1) son: Flavanoids, Total.phenols, OD280.OD315.of.diluted.wines, y Color.intensity, ya que sus vectores apuntan claramente en esa dirección y tienen mayor longitud.

  • En la Dimensión 2 (Dim2) destacan: Hue, Proline, y Alcohol.

  • La dirección y longitud de las flechas indican el grado de correlación con las componentes principales:

    • Flechas largas indican una fuerte correlación con alguna componente.

    • Flechas cortas indican menor aportación.

    • Flechas cercanas a una línea indican asociación con esa componente.

  • La contribución al PCA se refleja también en el color:

    • Naranja/rojo: mayor contribución.

    • Azul: menor contribución.

  • Algunas variables tienen una correlación positiva entre sí (por ejemplo, Flavanoids y Total.phenols), ya que sus vectores apuntan en una dirección similar. Otras como Malic.acid y Hue se orientan en direcciones opuestas, indicando correlación negativa.

Indique cual es el concepto de la calidad de la representación cos2 El valor cos² mide la calidad de la representación de cada observación en el plano de las componentes principales. Cuanto más cercano esté el valor de cos² a 1, mejor está representada la observación en ese plano.

  • Un valor alto (cercano a 1) indica que la observación está bien proyectada.

  • Un valor bajo (cercano a 0) indica que la observación no se representa bien en ese plano y está influenciada por otras dimensiones.

Realice un an?lisis de la visualizaci?n anterior, que indica

La gráfica representa las observaciones (muestras de vino) proyectadas en el plano formado por las dos primeras componentes principales (Dim1 y Dim2), que explican en conjunto el 55.4% de la variabilidad total (Dim1: 36.2%, Dim2: 19.2%).

Los puntos están coloreados de acuerdo con el valor de cos², que indica qué tan bien se representa cada observación en este plano bidimensional:

  • Valores altos de cos² (cerca de 1, en amarillo): indican que la observación está bien representada por las dos primeras componentes. Estas observaciones son clave para interpretar la estructura de los datos.

  • Valores bajos de cos² (cerca de 0, en púrpura): significan que la observación no está bien proyectada en este plano, y su interpretación requiere observar dimensiones adicionales (como Dim3 o Dim4).

Se puede observar que las observaciones en los extremos del gráfico tienden a tener mayor calidad de representación (colores más amarillos), mientras que las cercanas al centro están peor representadas (colores oscuros).

Parte 2 MDS de wine

En sus propias palabras indique cuales son los beneficios de hacer un an?lisis de conglomerados, en que nos ayuda en la visualizaci?n de los datos

El análisis de conglomerados (también llamado clustering) permite agrupar observaciones similares dentro de un conjunto de datos, basándose en sus características comunes. Entre los principales beneficios están:

  • Simplifica la complejidad de los datos: Reduce grandes volúmenes de datos a grupos representativos o patrones clave.

  • Identifica perfiles o segmentos dentro de los datos (por ejemplo, tipos de vinos con características químicas similares).

  • Mejora la visualización: Al combinarse con técnicas como el PCA o el MDS, permite visualizar de forma clara la estructura oculta de los datos.

  • Apoya la toma de decisiones: Facilita interpretaciones que pueden influir en estrategias de negocio, investigaciones científicas o modelos predictivos.

En el contexto del dataset de wine, el análisis de conglomerados nos ayuda a descubrir grupos de vinos con perfiles químicos similares, los cuales podrían corresponder a los diferentes cultivares. Al graficarlos en un espacio reducido como el que ofrece el MDS, estos grupos se hacen más evidentes visualmente.

Este bloque de código:

✅ Carga tidyverse y ggplot2 para la manipulación y gráficos
✅ Usa cluster para el cálculo de distancias y MDS clásico (cmdscale)
✅ Usa factoextra para visualizar los resultados del MDS y los grupos encontrados con clustering

Indique aqu? que es la matriz de distancias, que algoritmos de distancias existen La matriz de distancias es una tabla cuadrada que contiene las distancias entre cada par de observaciones de un conjunto de datos. Sirve como base para técnicas como el Análisis de Escalamiento Multidimensional (MDS) y el análisis de conglomerados, ya que permite representar las relaciones de similitud o disimilitud entre los datos.

Algoritmos de distancia más comunes * 1. Euclidiana (por defecto): Distancia geométrica directa entre dos puntos.

  • 2. Manhattan (city block): Suma de distancias absolutas entre coordenadas.

  • 3. Chebyshev: Máxima diferencia entre dimensiones.

  • 4. Minkowski: Generaliza la distancia Euclidiana y Manhattan.

  • 5. Canberra, Mahalanobis, entre otras (dependiendo del paquete y contexto).

## [1] 178 178
##           1         2        3        4        5
## 1   0.00000  31.26501 122.8312 415.2454 330.1745
## 2  31.26501   0.00000 135.2247 430.2516 315.6688
## 3 122.83115 135.22469   0.0000 295.2627 450.3311
## 4 415.24540 430.25156 295.2627   0.0000 745.0394
## 5 330.17450 315.66880 450.3311 745.0394   0.0000

Esto crea la matriz de distancias y muestra una porción de la misma.

Indique aquí que hace la función cmdscale La función cmdscale en R realiza Escalamiento Multidimensional Clásico (MDS). Este método toma una matriz de distancias y representa los objetos (observaciones) en un espacio de menor dimensión, generalmente 2D, preservando al máximo las distancias originales. Su objetivo principal es facilitar la visualización de relaciones o patrones en datos complejos.

##         Dim1       Dim2 Cultivar
## 1 -318.56298 21.4921307        1
## 2 -303.09742 -5.3647177        1
## 3 -438.06113 -6.5373094        1
## 4 -733.24014  0.1927290        1
## 5   11.57143 18.4899946        1
## 6 -703.23119 -0.3321587        1
ggplot(mds_df, aes(x = Dim1, y = Dim2, color = Cultivar)) +
  geom_point(size = 3, alpha = 0.8) +
  labs(
    title = "Escalamiento Multidimensional Clásico (MDS)",
    x = "Dimensión 1",
    y = "Dimensión 2",
    color = "Cultivar"
  ) +
  theme_minimal()

Cree el diagrama de los componentes principales del MDS

indique como nos ayudan los widgets de Shiny para ingresar argumentos

Los widgets de Shiny permiten a los usuarios ingresar valores o parámetros de forma interactiva en una aplicación web sin necesidad de modificar el código directamente. Estos componentes de interfaz gráfica (como sliderInput, numericInput, selectInput, etc.) facilitan la personalización y exploración de análisis estadísticos, como ingresar la cantidad de clusters deseados, seleccionar variables, cambiar métodos, entre otros.

En este contexto, los widgets ayudan a modificar dinámicamente los argumentos de funciones o algoritmos como el de k-means, mejorando la experiencia del usuario y permitiendo un análisis más flexible y visual.

Obtenga el diagrama de conglomerados de acuerdo al widget anterior

Emita un comentario final sobre el trabajo

Realizar este trabajo me permitió comprender de forma práctica el funcionamiento del Escalamiento Multidimensional Clásico (MDS) y su utilidad para representar datos complejos en espacios de menor dimensión. A partir del conjunto de datos de vinos, pude visualizar cómo se agrupan las observaciones según sus características químicas, lo cual fue muy enriquecedor desde el punto de vista del análisis exploratorio.

Además, la incorporación de un widget con Shiny para seleccionar la cantidad de clusters añadió un componente interactivo que me ayudó a experimentar de forma dinámica con diferentes agrupamientos y ver cómo estos se reflejan en el espacio reducido por MDS. Considero que esta herramienta aporta mucho valor, ya que facilita la toma de decisiones visuales sobre la cantidad de grupos más adecuados.

En lo personal, este ejercicio no solo fortaleció mis conocimientos sobre técnicas multivariadas y visualización con R, sino que también despertó mi interés en explorar más sobre interfaces interactivas con Shiny, debido a su gran potencial en el análisis de datos aplicado.