Análisis de componentes principales en R: ejemplo paso a paso

El análisis de componentes principales, a menudo abreviado PCA, es una técnica de aprendizaje automático no supervisada que busca encontrar componentes principales (combinaciones lineales de los predictores originales) que explican una gran parte de la variación en un conjunto de datos.

El objetivo de PCA es explicar la mayor parte de la variabilidad en un conjunto de datos con menos variables que el conjunto de datos original.

Para un conjunto de datos dado con p variables, podríamos examinar los diagramas de dispersión de cada combinación de variables por pares, pero la gran cantidad de diagramas de dispersión puede volverse grande muy rápidamente.

Para p predictores, hay p (p-1) / 2 diagramas de dispersión.

Entonces, para un conjunto de datos con p = 15 predictores, ¡habría 105 diagramas de dispersión diferentes!

Afortunadamente, PCA ofrece una forma de encontrar una representación de baja dimensión de un conjunto de datos que captura la mayor cantidad posible de variación en los datos.

Si podemos capturar la mayor parte de la variación en solo dos dimensiones, podríamos proyectar todas las observaciones del conjunto de datos original en un diagrama de dispersión simple.

La forma en que encontramos los componentes principales es la siguiente:

Dado un conjunto de datos con p predictores: X 1 , X 2 ,…, X p ,, calcule Z 1 ,…, Z M para que sean las M combinaciones lineales de los p predictores originales donde:

  • Z m = ΣΦ jm X j para algunas constantes Φ 1m , Φ 2m , Φ pm , m = 1,…, M.
  • Z 1 es la combinación lineal de los predictores que captura la mayor varianza posible.
  • Z 2 es la siguiente combinación lineal de los predictores que captura la mayor varianza mientras es ortogonal (es decir, no correlacionada) con Z 1 .
  • Z 3 es entonces la siguiente combinación lineal de los predictores que captura la mayor varianza mientras es ortogonal a Z 2 .
  • Y así.

En la práctica, utilizamos los siguientes pasos para calcular las combinaciones lineales de los predictores originales:

1. Escale cada una de las variables para tener una media de 0 y una desviación estándar de 1.

2. Calcule la matriz de covarianza para las variables escaladas.

3. Calcule los valores propios de la matriz de covarianza.

Usando álgebra lineal, se puede demostrar que el vector propio que corresponde al valor propio más grande es el primer componente principal. En otras palabras, esta combinación particular de predictores explica la mayor variación en los datos.

El vector propio correspondiente al segundo valor propio más grande es el segundo componente principal, y así sucesivamente.

Este tutorial proporciona un ejemplo paso a paso de cómo realizar este proceso en R.

Paso 1: cargue los datos

Primero cargaremos el paquete tidyverse , que contiene varias funciones útiles para visualizar y manipular datos:

biblioteca (tidyverse)

Para este ejemplo, usaremos el conjunto de datos USArrests integrado en R, que contiene el número de arrestos por cada 100,000 residentes en cada estado de EE. UU. En 1973 por asesinato , asalto y violación .

También incluye el porcentaje de la población en cada estado que vive en áreas urbanas, UrbanPop .

El siguiente código muestra cómo cargar y ver las primeras filas del conjunto de datos:

#load data 
data ("USArrests")

#ver las primeras seis filas de datos
cabeza (USArrests)

           Asesinato Asalto UrbanPop Violación
Alabama 13,2 236 58 21,2
Alaska 10,0 263 48 44,5
Arizona 8.1 294 80 31.0
Arkansas 8,8 190 50 19,5
California 9,0 276 91 40,6
Colorado 7,9 204 78 38,7

Paso 2: Calcule los componentes principales

Después de cargar los datos, podemos usar la función incorporada de R prcomp () para calcular los componentes principales del conjunto de datos.

Asegúrese de especificar scale = TRUE para que cada una de las variables en el conjunto de datos se escale para tener una media de 0 y una desviación estándar de 1 antes de calcular los componentes principales.

También tenga en cuenta que los vectores propios en R apuntan en la dirección negativa de forma predeterminada, por lo que multiplicaremos por -1 para invertir los signos.

#calcular los resultados de los componentes principales
 <- prcomp (USArrests, scale = TRUE )

# invertir los signos
 resultados $ rotación <- -1 * resultados $ rotación

#muestra los resultados de los componentes principales
 $ rotación

               PC1 PC2 PC3 PC4
Asesinato 0.5358995 -0.4181809 0.3412327 -0.64922780
Asalto 0.5831836 -0.1879856 0.2681484 0.74340748
UrbanPop 0.2781909 0.8728062 0.3780158 -0.13387773
Violación 0.5434321 0.1673186 -0.8177779 -0.08902432

Podemos ver que el primer componente principal (PC1) tiene valores altos para Asesinato, Agresión y Violación, lo que indica que este componente principal describe la mayor variación en estas variables.

También podemos ver que el segundo componente principal (PC2) tiene un valor alto para UrbanPop, lo que indica que este componente principal pone la mayor parte de su énfasis en la población urbana.

Tenga en cuenta que las puntuaciones de los componentes principales de cada estado se almacenan en los resultados $ x . También multiplicaremos estos puntajes por -1 para revertir los signos:

# invertir los signos de los resultados de las puntuaciones
 $ x <- -1 * resultados $ x

#muestre la cabeza de los primeros seis puntajes
 (resultados $ x)

                  PC1 PC2 PC3 PC4
Alabama 0,9756604 -1,1220012 0,43980366 -0,154696581
Alaska 1.9305379 -1.0624269 -2.01950027 0.434175454
Arizona 1.7454429 0.7384595 -0.05423025 0.826264240
Arkansas -0,1399989 -1,1085423 -0,11342217 0,180973554
California 2.4986128 1.5274267 -0.59254100 0.338559240
Colorado 1.4993407 0.9776297 -1.08400162 -0.001450164

Paso 3: Visualice los resultados con una biplot

A continuación, podemos crear un biplot , un gráfico que proyecta cada una de las observaciones del conjunto de datos en un diagrama de dispersión que utiliza el primer y segundo componentes principales como ejes:

Tenga en cuenta que scale = 0 garantiza que las flechas del gráfico se escalen para representar las cargas.

biplot (resultados, escala = 0 )

Biplot para el análisis de componentes principales en R

En la trama podemos ver cada uno de los 50 estados representados en un espacio bidimensional simple.

Los estados cercanos entre sí en la gráfica tienen patrones de datos similares con respecto a las variables del conjunto de datos original.

También podemos ver que ciertos estados están más asociados con ciertos delitos que otros. Por ejemplo, Georgia es el estado más cercano a la variable Asesinato en la trama.

Si echamos un vistazo a los estados con las tasas de homicidio más altas en el conjunto de datos original, podemos ver que Georgia está en la parte superior de la lista:

# mostrar los estados con las tasas de homicidio más altas en el 
encabezado del conjunto de datos original (USArrests [ order (-USArrests $ Murder),])

               Asesinato Asalto UrbanPop Violación
Georgia 17,4 211 60 25,8
Misisipi 16,1 259 44 17,1
Florida 15,4 335 80 31,9
Luisiana 15,4 249 66 22,2
Carolina del Sur 14,4 279 48 22,5
Alabama 13,2 236 58 21,2

Paso 4: Encuentre la varianza explicada por cada componente principal

Podemos usar el siguiente código para calcular la varianza total en el conjunto de datos original explicado por cada componente principal:

#calcular la varianza total explicada por los resultados de cada componente principal
 $ sdev ^ 2 / sum (results $ sdev ^ 2)

[1] 0,62006039 0,24744129 0,08914080 0,04335752

De los resultados podemos observar lo siguiente:

  • El primer componente principal explica el 62% de la varianza total en el conjunto de datos.
  • El segundo componente principal explica el 24,7% de la varianza total en el conjunto de datos.
  • El tercer componente principal explica el 8,9% de la varianza total en el conjunto de datos.
  • El cuarto componente principal explica el 4,3% de la varianza total en el conjunto de datos.

Por tanto, los dos primeros componentes principales explican la mayor parte de la varianza total de los datos.

Esta es una buena señal porque el biplot anterior proyectaba cada una de las observaciones de los datos originales en un diagrama de dispersión que solo tenía en cuenta los dos primeros componentes principales.

Por lo tanto, es válido mirar patrones en el biplot para identificar estados que son similares entre sí.

También podemos crear una gráfica de pantalla, una gráfica que muestra la varianza total explicada por cada componente principal, para visualizar los resultados de PCA:

#calcular la varianza total explicada por cada componente principal
 var_explained = results $ sdev ^ 2 / sum (results $ sdev ^ 2)

#create scree plot
 qplot (c (1: 4), var_explained) +
  geom_line () + 
  xlab (" Componente principal ") +
  ylab (" Explicación de la varianza ") +
  ggtitle (" Diagrama de Scree ") +
  ylim (0, 1)

Diagrama de pedregal en R

Análisis de componentes principales en la práctica

En la práctica, el PCA se usa con mayor frecuencia por dos razones:

1. Análisis de datos exploratorios : utilizamos PCA cuando exploramos por primera vez un conjunto de datos y queremos comprender qué observaciones de los datos son más similares entre sí.

2. Regresión de componentes principales : también podemos usar PCA para calcular los componentes principales que luego se pueden usar en la regresión de componentes principales . Este tipo de regresión se usa a menudo cuando existe multicolinealidad entre predictores en un conjunto de datos.

El código R completo utilizado en este tutorial se puede encontrar aquí .

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

La regresión lineal múltiple es un método que podemos utilizar para comprender la relación entre dos o más variables explicativas…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!