#El Principal Component Analysis (PCA) es una técnica utilizada para resumir y visualizar información en conjuntos de datos con múltiples variables interrelacionadas. Permite reducir los datos a través de la creación de componentes principales que capturan la mayor variación en los datos. Con PCA, es posible representar grÔficamente conjuntos de datos multivariados en dos o tres dimensiones, facilitando su interpretación, explicamos tambien cómo calcularlo y visualizarlo, y se muestra cómo identificar las variables mÔs importantes que explican las variaciones en los datos.
#Esta explicación nos limitaremos a los conceptos bĆ”sicos y utilizaremos una representación grĆ”fica simple de los datos. En la GrĆ”fica A, los datos se representan en un sistema de coordenadas XY. La reducción de la dimensionalidad se logra identificando las direcciones principales, conocidas como componentes principales, en las que los datos varĆan.
#PCA asume que las direcciones con las mayores variaciones son las mĆ”s āimportantesā o principales. En la figura, el eje PC1 representa la primera dirección principal a lo largo de la cual las muestras muestran la mayor variación. El eje PC2 es la segunda dirección mĆ”s importante y es ortogonal al eje PC1.
#La dimensionalidad de nuestros datos bidimensionales se puede reducir a una sola dimensión proyectando cada muestra en el primer componente principal (GrÔfico B), Esto nos permite simplificar la representación de los datos sin perder una cantidad significativa de información.
# Instalar paquetes
# install.packages(c("FactoMineR", "factoextra"))
# Cargar las bibliotecas necesarias
library(FactoMineR)
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
# Cargar los datos del decatlón
data(decathlon2)
head(decathlon2)
## X100m Long.jump Shot.put High.jump X400m X110m.hurdle Discus
## SEBRLE 11.04 7.58 14.83 2.07 49.81 14.69 43.75
## CLAY 10.76 7.40 14.26 1.86 49.37 14.05 50.72
## BERNARD 11.02 7.23 14.25 1.92 48.93 14.99 40.87
## YURKOV 11.34 7.09 15.19 2.10 50.42 15.31 46.26
## ZSIVOCZKY 11.13 7.30 13.48 2.01 48.62 14.17 45.67
## McMULLEN 10.83 7.31 13.76 2.13 49.91 14.38 44.41
## Pole.vault Javeline X1500m Rank Points Competition
## SEBRLE 5.02 63.19 291.7 1 8217 Decastar
## CLAY 4.92 60.15 301.5 2 8122 Decastar
## BERNARD 5.32 62.77 280.1 4 8067 Decastar
## YURKOV 4.72 63.44 276.4 5 8036 Decastar
## ZSIVOCZKY 4.42 55.37 268.0 7 8004 Decastar
## McMULLEN 4.42 56.37 285.1 8 7995 Decastar
#Usaremos el paquete factoextra para ayudar en la interpretación de PCA, Independientemente de la función que se decida utilizar podemos extraer y visualizar fÔcilmente los resultados de PCA usando las funciones del paquete factoextra.
# Seleccionar solo las columnas relevantes para el PCA
decathlon2_data <- decathlon2[, 1:10]
# Realizar el PCA
pca_result <- PCA(decathlon2_data, graph = FALSE)
# Visualizar eigenvalues (varianza explicada por cada componente principal)
fviz_eig(pca_result, addlabels = TRUE, ylim = c(0, 50))
# Graficar los individuos (atletas) en el espacio de las dos primeras componentes principales
fviz_pca_ind(pca_result,
col.ind = "cos2", # Color por calidad de representación
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE) # Evitar solapamiento de etiquetas
# Graficar las variables en el espacio de las dos primeras componentes principales
fviz_pca_var(pca_result,
col.var = "contrib", # Color por contribución a las componentes principales
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE) # Evitar solapamiento de etiquetas
# Graficar individuos y variables juntos
fviz_pca_biplot(pca_result,
repel = TRUE, # Evitar solapamiento de etiquetas
col.var = "#2E9FDF", # Color de las variables
col.ind = "#696969") # Color de los individuos