Análisis de Componentes Principales

El análisis de componentes principales nos permite resumir y visualizar la información de un conjunto de datos que contiene observaciones descritos por múltiples variables cuantitativas inter-correlacionadas.

Author
Affiliation

AgriTech Bolivia

Published

December 15, 2020

Introducción

El análisis de componentes principales (PCA) nos permite resumir y visualizar la información en un conjunto de datos que contiene individuos/observaciones descritos por múltiples variables cuantitativas inter-correlacionadas. Cada variable podría considerarse como una dimensión diferente. Si tiene más de 3 variables en sus conjuntos de datos, podría ser muy difícil visualizar un hiperespacio multidimensional.

El análisis de componentes principales se utiliza para extraer la información importante de una tabla de datos multivariados y para expresar esta información como un conjunto de algunas variables nuevas llamadas componentes principales. Estas nuevas variables corresponden a una combinación lineal de las originales. El número de componentes principales es menor o igual al número de variables originales.

La información de un conjunto de datos dado corresponde a la variación total que contiene. El objetivo de PCA es identificar direcciones (o componentes principales) a lo largo de los cuales la variación en los datos es máxima.

En otras palabras, PCA reduce la dimensionalidad de un dato multivariado a dos o tres componentes principales, que se pueden visualizar gráficamente, con una mínima pérdida de información.

En este capítulo, describimos la idea básica de PCA y demostramos cómo calcular y visualizar PCA usando el software R. Además, mostraremos cómo identificar las variables más importantes que explican las variaciones en un conjunto de datos.

En conjunto, el objetivo principal del análisis de componentes principales es:

  • identificar patrones ocultos en un conjunto de datos,
  • reducir la dimensionalidad de los datos eliminando el ruido y la redundancia en los datos,
  • identificar variables correlacionadas

Metodología de análisis

Instale los dos paquetes de la siguiente manera:

install.packages(c("FactoMineR", "factoextra"))

Cargar paquetes en R:

library("FactoMineR")
library("factoextra")
Loading required package: ggplot2
Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa

Cargando datos

Usaremos los conjuntos de datos de demostración decathlon2 del paquete factoextra:

data(decathlon2)
#head(decathlon2)

De esta base de datos seleccionamos variables cuantitativas para el análisis de componentes principales:

#seleccionamos 27 filas y las primeras 10 variables
decathlon2.active <- decathlon2[1:23, 1:10]
head(decathlon2.active[, 1:7], 4)
        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

Código R

Se puede utilizar la función PCA() [paquete FactoMineR]. Un formato simplificado es:

PCA(X, scale.unit = TRUE, ncp = 5, graph = TRUE)
  • X: un marco de datos. Las filas son individuos y las columnas son variables numéricas
  • scale.unit: un valor lógico. Si es TRUE, los datos se escalan a la varianza de la unidad antes del análisis. Esta estandarización a la misma escala evita que algunas variables se conviertan en dominantes solo por sus grandes unidades de medida. Hace que la variable sea comparable.
  • ncp: número de dimensiones mantenidas en los resultados finales.
  • graph: un valor lógico. Si es TRUE, se muestra un gráfico.

El código R a continuación, calcula el análisis de componentes principales de las variables seleccionadas o activas:

library("FactoMineR")
res.pca <- PCA(decathlon2.active, graph = FALSE)

El objeto que se crea usando la función PCA() contiene mucha información que se encuentra en muchas listas y matrices diferentes. Estos valores se describen en la siguiente sección.

Extraiga y visualice valores propios/varianzas:

Los valores propios o varianzas miden la cantidad de variación retenida por cada componente principal. Las varianzas son grandes para los primeros componentes y pequeños para las siguientes. Es decir, las primeras PC corresponden a las direcciones con la cantidad máxima de variación en el conjunto de datos.

# Extraer valores propios/varianzas
get_eig(res.pca)
       eigenvalue variance.percent cumulative.variance.percent
Dim.1   4.1242133        41.242133                    41.24213
Dim.2   1.8385309        18.385309                    59.62744
Dim.3   1.2391403        12.391403                    72.01885
Dim.4   0.8194402         8.194402                    80.21325
Dim.5   0.7015528         7.015528                    87.22878
Dim.6   0.4228828         4.228828                    91.45760
Dim.7   0.3025817         3.025817                    94.48342
Dim.8   0.2744700         2.744700                    97.22812
Dim.9   0.1552169         1.552169                    98.78029
Dim.10  0.1219710         1.219710                   100.00000
# Visualizar valores propios/variaciones
fviz_screeplot(res.pca, addlabels = TRUE, ylim = c(0, 50))

La suma de todos los valores propios da una varianza total de 10.

La proporción de variación explicada por cada valor propio se da en la segunda columna. Por ejemplo, 4,124 dividido por 10 es igual a 0,4124, o aproximadamente el 41,24% de la variación se explica por este primer valor propio. El porcentaje acumulado explicado se obtiene sumando las sucesivas proporciones de variación explicadas para obtener el total acumulado. Por ejemplo, 41,242% más 18,385% es igual a 59,627%, y así sucesivamente. Por lo tanto, aproximadamente el 59,627% de la variación se explica por los dos primeros valores propios juntos.

Los valores propios se pueden utilizar para determinar la cantidad de componentes principales que se deben retener después de la PCA (Kaiser 1961):

  • Un valor propio > 1 indica que los PCs representan más varianza que la contabilizada por una de las variables originales en los datos estandarizados. Esto se usa comúnmente como un punto de corte para el cual se retienen las PCs. Esto es válido solo cuando los datos están estandarizados.
  • También puede limitar el número de componentes a ese número que representa una cierta fracción de la varianza total. Por ejemplo, si está satisfecho con el 70% de la varianza total explicada, utilice el número de componentes para lograrlo.

Desafortunadamente, no existe una forma objetiva bien aceptada de decidir cuántos componentes principales son suficientes. Esto dependerá del campo de aplicación específico y del conjunto de datos específico. En la práctica, tendemos a mirar los primeros componentes principales para encontrar patrones interesantes en los datos.

En nuestro análisis, los tres primeros componentes principales explican el 72% de la variación. Este es un porcentaje aceptablemente grande.

Gráfica círculo de correlación

La correlación entre una variable y un componente principal (PC) se utiliza como coordenadas de la variable en la PC. La representación de las variables difiere del gráfico de las observaciones: las observaciones están representadas por sus proyecciones, pero las variables están representadas por sus correlaciones (Abdi y Williams 2010).

Es posible controlar los colores de las variables usando sus contribuciones (“contrib”) a los ejes principales:

# Control variable colors using their contributions
fviz_pca_var(res.pca, col.var="contrib",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel = TRUE # Avoid text overlapping
             )

La gráfica anterior también se conoce como gráficas de correlación variable. Muestra las relaciones entre todas las variables. Se puede interpretar de la siguiente manera:

  • Las variables correlacionadas positivamente se agrupan.
  • Las variables correlacionadas negativamente se colocan en lados opuestos del origen de la gráfica (cuadrantes opuestos).
  • La distancia entre las variables y el origen mide la calidad de las variables en el mapa de factores. Las variables que están lejos del origen están bien representadas en el mapa de factores.

Contribucion de las variables a los ejes principales:

# Contributions of variables to PC1
fviz_contrib(res.pca, choice = "var", axes = 1, top = 10)

# Contributions of variables to PC2
fviz_contrib(res.pca, choice = "var", axes = 2, top = 10)

La línea discontinua roja en el gráfico anterior indica la contribución promedio esperada. Si la contribución de las variables fuera uniforme, el valor esperado sería 1/longitud(variables) = 1/10 = 10%. Para un componente dado, una variable con una contribución mayor que este límite podría considerarse importante para contribuir al componente.

Se puede observar que las variables X100m, Long.jump y Pole.vault contribuyen más a las dimensiones 1 y 2.

Biplot

Para hacer un biplot simple de individuos y variables, escriba esto:

# Biplot of individuals and variables
fviz_pca_biplot(res.pca, repel = TRUE)

En biplot, debe centrarse principalmente en la dirección de las variables pero no en sus posiciones absolutas en la gráfica.

En términos generales, un biplot se puede interpretar de la siguiente manera:

  • un individuo que está en el mismo lado de una variable dada tiene un valor alto para esta variable;
  • un individuo que está en el lado opuesto de una variable dada tiene un valor bajo para esta variable.

Nota: Este post fue extraido del libro “Multivariate Analisis II”

Referencias

Kassambara A. 2017. Multivariate Analysis: Practical Guide to Principal Component Methods in R.