3.1 Introduction

#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.

3.2 Basics

#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

3.4 Visualization and Interpretation

#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