Aplicaciones livianas RMD y Shiny
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.
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:
Type o
Cultivar, que representa la clase del vino (1, 2 o 3).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 ...
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).
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.
| 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.
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).
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.