Saltar al contenido principal
InicioSobre RAprende R

Tutorial de Análisis de Componentes Principales en R

En este tutorial, aprenderás a utilizar R PCA (Análisis de Componentes Principales) para extraer datos con muchas variables y crear visualizaciones para mostrar esos datos.
Actualizado ene 2024  · 15 min leer

Análisis PCA en R

Introducción al Análisis de Componentes Principales (ACP)

Como científico de datos del sector minorista, imagina que intentas comprender qué hace feliz a un cliente a partir de un conjunto de datos que contiene estas cinco características: gasto mensual, edad, sexo, frecuencia de compra y valoración del producto. Para analizar mejor y extraer conclusiones procesables, necesitamos comprender el conjunto de datos o, como mínimo, visualizarlo. Los seres humanos no pueden visualizar fácilmente más de tres dimensiones, por lo que visualizar datos de clientes con cinco características (dimensiones) no es sencillo. Aquí es donde entra en juego el análisis de componentes principales (ACP). 

"Pero, ¿qué es el análisis de componentes principales?"

Es un enfoque estadístico que puede utilizarse para analizar datos de alta dimensión y captar de ellos la información más importante. Esto se hace transformando los datos originales en un espacio de menor dimensión y agrupando las variables altamente correlacionadas. En nuestro escenario, el ACP elegiría tres características, como el gasto mensual, la frecuencia de compra y la valoración del producto. Esto podría facilitar la visualización y comprensión de los datos.

Después de este tutorial, comprenderás mejor el análisis de componentes principales y cómo aplicarlo a situaciones reales utilizando el famoso paquete corrr en R.

Mira y aprende más sobre el Análisis de Componentes Principales en R en este vídeo de nuestro curso.

¿Cómo funciona el PCA? Guía en 5 pasos

Aunque nos centremos en el ACP, tengamos en cuenta las siguientes cinco técnicas principales de componentes principales, cuyo objetivo es resumir y visualizar datos multivariantes. El ACP, a diferencia de las demás técnicas, sólo funciona con variables cuantitativas. 

Métodos de componentes principales

Métodos de componentes principales

No entraremos en la explicación del concepto matemático, que puede ser algo complejo.  Sin embargo, comprender los cinco pasos siguientes puede dar una mejor idea de cómo calcular el ACP. 

5 pasos principales para calcular los componentes principales

Los cinco pasos principales para calcular los componentes principales

Paso 1 - Normalización de los datos

Teniendo en cuenta el ejemplo de la introducción, consideremos, por ejemplo, la siguiente información para un cliente determinado. 

  • Gastos mensuales: 300
  • La edad: 27
  • Valoración: 4.5

Esta información tiene escalas diferentes y realizar el ACP utilizando esos datos conducirá a un resultado sesgado. Aquí es donde entra en juego la normalización de los datos. Garantiza que cada atributo tenga el mismo nivel de contribución, evitando que una variable domine a las demás. Para cada variable, la normalización se hace restando su media y dividiendo por su desviación típica.   

Paso 2 - Matriz de covarianza

Como la misma sugiere, este paso consiste en calcular la matriz de covariables a partir de los datos normalizados. Se trata de una matriz simétrica, y cada elemento (i, j) corresponde a la covarianza entre las variables i y j.

Paso 3 - Vectores y valores propios

Geométricamente, un vector propio representa una dirección como "vertical" o "90 grados". En cambio, un valor propio es un número que representa la cantidad de varianza presente en los datos para una dirección determinada. Cada vector propio tiene su correspondiente valor propio. 

Paso 4 - Selección de los componentes principales

Hay tantos pares de vectores y valores propios como variables haya en los datos. En los datos con sólo gastos mensuales, edad y tasa, habrá tres pares. No todas las parejas son relevantes. Por tanto, el vector propio con el valor propio más alto corresponde al primer componente principal. El segundo componente principal es el vector propio con el segundo valor propio más alto, y así sucesivamente.

Paso 5 - Transformación de los datos en un nuevo espacio dimensional

Este paso consiste en reorientar los datos originales en un nuevo subespacio definido por los componentes principales Esta reorientación se realiza multiplicando los datos originales por los vectores propios calculados previamente.

Es importante recordar que esta transformación no modifica los datos originales en sí, sino que proporciona una nueva perspectiva para representar mejor los datos. 

Aplicaciones del Análisis de Componentes Principales 

El análisis de componentes principales tiene diversas aplicaciones en nuestra vida cotidiana, entre ellas (pero sin limitarse a ellas) las finanzas, el procesamiento de imágenes, la sanidad y la seguridad.

Finanzas

Predecir los precios de las acciones a partir de precios pasados es una noción utilizada en la investigación desde hace años. El ACP puede utilizarse para reducir la dimensionalidad y analizar los datos para ayudar a los expertos a encontrar componentes relevantes que expliquen la mayor parte de la variabilidad de los datos. Puedes obtener más información sobre la reducción de la dimensionalidad en R en nuestro curso específico. 

Tratamiento de imágenes

Una imagen está formada por múltiples características. El PCA se aplica principalmente en la compresión de imágenes para conservar los detalles esenciales de una imagen dada, reduciendo al mismo tiempo el número de dimensiones. Además, el PCA puede utilizarse para tareas más complicadas, como el reconocimiento de imágenes.   

Sanidad

En la misma lógica de la compresión de imágenes. El ACP se utiliza en las exploraciones por resonancia magnética (IRM) para reducir la dimensionalidad de las imágenes con el fin de mejorar la visualización y el análisis médico. También puede integrarse en tecnologías médicas utilizadas, por ejemplo, para reconocer una determinada enfermedad a partir de exploraciones de imagen.

Seguridad

Los sistemas biométricos utilizados para el reconocimiento de huellas dactilares pueden integrar tecnologías que aprovechan el análisis de componentes principales para extraer las características más relevantes, como la textura de la huella dactilar e información adicional. 

Ejemplo real de ACP en R

Ahora que entiendes la teoría subyacente del ACP, por fin estás preparado para verlo en acción.

Esta sección cubre todos los pasos, desde la instalación de los paquetes pertinentes, la carga y preparación de los datos aplicando el análisis de componentes principales en R, y la interpretación de los resultados. 

El código fuente está disponible en el espacio de trabajo de DataCamp.

Configurar el entorno 

Para realizar con éxito este tutorial, necesitarás las siguientes bibliotecas, y cada una de ellas requiere dos pasos principales para ser utilizada con eficacia: 

  • Instala la biblioteca para acceder a todas las funciones.
  • Carga para poder utilizar todas las funciones.

paquete corrr en R

Se trata de un paquete R para el análisis de correlaciones. Se centra principalmente en la creación y manejo de marcos de datos R. A continuación se indican los pasos para instalar y cargar la biblioteca. 

install.packages("corrr")
library('corrr')

Paquete ggcorrplot en R

El paquete ggcorrplot proporciona múltiples funciones, pero no se limita a la función ggplot2, que facilita la visualización de la matriz de correlaciones. Al igual que en las instrucciones anteriores, la instalación es sencilla.

install.packages("ggcorrplot")
library(ggcorrplot)

Paquete FactoMineR en R

Se utiliza principalmente para el análisis exploratorio multivariante de datos; el paquete factoMineR da acceso al módulo PCA para realizar el análisis de componentes principales. 

install.packages("FactoMineR")
library("FactoMineR")

paquete factoextra en R

Este último paquete proporciona todas las funciones pertinentes para visualizar los resultados del análisis de componentes principales. Estas funciones incluyen, entre otras, scree plot, biplot, por mencionar sólo dos de las técnicas de visualización que se tratan más adelante en el artículo.

Explorar los datos

Antes de cargar los datos y realizar cualquier otra exploración, es bueno comprender y tener la información básica relacionada con los datos con los que vas a trabajar.  

Datos sobre proteínas

El conjunto de datos sobre proteínas es un conjunto de datos multivariantes con valores reales que describen el consumo medio de proteínas de los ciudadanos de 25 países europeos. 

Para cada país hay diez columnas. Los ocho primeros corresponden a los distintos tipos de proteínas. El último corresponde al valor total de los valores medios de las proteínas.

Echemos un vistazo rápido a los datos. 

En primer lugar, cargamos los datos utilizando la función read.csv() entonces str() que da la imagen de abajo. 

protein_data <- read.csv("protein.csv")
str(protein_data)

Podemos ver que el conjunto de datos tiene 25 observaciones y 11 columnas, y cada variable es numérica, excepto la columna País, que es un texto. 

Descripción de los datos de la proteína

Descripción de los datos de la proteína

Comprobar valores nulos 

La presencia de valores perdidos puede sesgar el resultado del ACP. Por tanto, es muy recomendable realizar el planteamiento adecuado para abordar esos valores.  Nuestro tutorial Las mejores técnicas para tratar valores perdidos que todo científico de datos debe conocer puede ayudarte a tomar la decisión correcta. 

colSums(is.na(protein_data))

En colSums() combinada con la función is.na() devuelve el número de valores perdidos en cada columna. Como podemos ver a continuación, ninguna de las columnas tiene valores perdidos.

Número de valores que faltan en cada columna

Número de valores que faltan en cada columna

Normalizar los datos

Como se indica al principio del artículo, el ACP sólo funciona con valores numéricos. Por tanto, tenemos que deshacernos de la columna País. Además, la columna Total no es relevante para el análisis, ya que es la combinación lineal del resto de variables numéricas.

El código siguiente crea nuevos datos con sólo columnas numéricas.

numerical_data <- protein_data[,2:10]

head(numerical_data)

Antes de la normalización de los datos

Antes de la normalización de los datos (sólo se muestran las cinco primeras columnas)

Ahora se puede aplicar la normalización mediante la función scale(). 

data_normalized <- scale(numerical_data)
head(data_normalized)

Datos normalizados

Datos normalizados (sólo se muestran las cinco primeras columnas)

Calcula la matriz de correlaciones

Aunque la matriz de covarianza se indica en los cinco pasos anteriores, también puede utilizarse la correlación, que puede calcularse mediante la función cor() del paquete corrr. En ggcorrplot() para una mejor visualización.

corr_matrix <- cor(data_normalized)
ggcorrplot(corr_matrix)

Matriz de correlación de los datos

Matriz de correlación de los datos

El resultado de la matriz de correlaciones puede interpretarse como sigue: 

  • Cuanto mayor sea el valor, más positivamente correlacionadas están las dos variables.
  • Cuanto más se acerque el valor a -1, más negativamente correlacionados estarán.

Aplicación del ACP

Ahora, todos los recursos están disponibles para realizar el análisis PCA. En primer lugar, la princomp() calcula el ACP, y summary() muestra el resultado.

data.pca <- princomp(corr_matrix)
summary(data.pca)

r resumen pca

R Resumen PCA 

En la captura de pantalla anterior, observamos que se han generado nueve componentes principales (Comp.1 a Comp.9), que también se corresponden con el número de variables de los datos.

Cada componente explica un porcentaje de la varianza total del conjunto de datos. En la sección Proporción acumulada, el primer componente principal explica casi el 77% de la varianza total. Esto implica que casi dos tercios de los datos del conjunto de 9 variables pueden representarse sólo con el primer componente principal. La segunda explica el 12,08% de la varianza total. 

La proporción acumulada de Comp.1 y Comp.2 explica casi el 89% de la varianza total. Esto significa que los dos primeros componentes principales pueden representar con precisión los datos. 

Es estupendo tener los dos primeros componentes, pero ¿qué significan realmente? 

Esto puede responderse explorando cómo se relacionan con cada columna utilizando las cargas de cada componente principal. 

data.pca$loadings[, 1:2]

Matriz de carga de los dos primeros componentes principales

Matriz de carga de los dos primeros componentes principales

La matriz de carga muestra que el primer componente principal tiene valores positivos elevados tanto para la carne roja como para la carne blanca, los huevos y la leche. Sin embargo, los valores de cereales, legumbres, frutos secos y oleaginosas, y frutas y verduras son relativamente negativos. Esto sugiere que los países con una mayor ingesta de proteínas animales están en exceso, mientras que los países con una ingesta menor están en déficit.

En cuanto al segundo componente principal, presenta valores negativos elevados para el pescado, los alimentos ricos en almidón y las frutas y verduras.  Esto implica que las dietas de los países subyacentes están muy influidas por su ubicación, como las regiones costeras para el pescado, y las regiones del interior para una dieta rica en verduras y patatas.

Visualización de los componentes principales 

El análisis anterior de la matriz de carga permitió comprender bien la relación entre cada uno de los dos primeros componentes principales y los atributos de los datos. Sin embargo, puede que no sea visualmente atractivo. 

Hay un par de estrategias de visualización estándar que pueden ayudar al usuario a comprender los datos, y esta sección pretende cubrir algunos de esos enfoques, empezando por el diagrama de dispersión.  

Parcela Scree

El primer enfoque de la lista es el diagrama de scree. Sirve para visualizar la importancia de cada componente principal y puede utilizarse para determinar el número de componentes principales que hay que conservar. El gráfico scree puede generarse utilizando la función fviz_eig() función. 

fviz_eig(data.pca, addlabels = TRUE)

Diagrama de Scree de los componentes

Diagrama de Scree de los componentes

Este gráfico muestra los valores propios en una curva descendente, de mayor a menor. Los dos primeros componentes pueden considerarse los más significativos, ya que contienen casi el 89% de la información total de los datos.

Biplot de los atributos

Con el biplot, es posible visualizar las similitudes y disimilitudes entre las muestras, y además muestra el impacto de cada atributo en cada uno de los componentes principales.

# Graph of the variables
fviz_pca_var(data.pca, col.var = "black")

Biplot de las variables

Biplot de las variables respecto a los componentes principales

De la trama anterior se pueden observar tres datos principales. 

  • En primer lugar, todas las variables que se agrupan están correlacionadas positivamente entre sí, y ése es el caso, por ejemplo, de la carne blanca/roja, la leche y los huevos tienen una correlación positiva entre sí. Este resultado es sorprendente porque tienen los valores más altos en la matriz de carga con respecto al primer componente principal.
  • Entonces, cuanto mayor sea la distancia entre la variable y el origen, mejor representada estará esa variable. En el biplot, los huevos, la leche y la carne blanca tienen mayor magnitud que la carne roja y, por tanto, están bien representados en comparación con ésta.
  • Por último, las variables correlacionadas negativamente se muestran a los lados opuestos del origen del biplot. 

Contribución de cada variable 

El objetivo de la tercera visualización es determinar en qué medida está representada cada variable en un componente determinado. Dicha calidad de representación se denomina Cos2 y corresponde al coseno cuadrado, y se calcula mediante la fórmula fviz_cos2 función.

  • Un valor bajo significa que la variable no está perfectamente representada por ese componente. 
  • En cambio, un valor alto significa una buena representación de la variable en ese componente.
fviz_cos2(data.pca, choice = "var", axes = 1:2)

El código anterior calcula el valor del coseno cuadrado de cada variable con respecto a los dos primeros componentes principales. 

De la siguiente ilustración se desprende que los cereales, las semillas oleaginosas de frutos secos, los huevos y la leche son las cuatro variables con el cos2 más alto, por lo que son las que más contribuyen a los PC1 y PC2.

Contribución de las variables a los componentes principales

Contribución de las variables a los componentes principales

Biplot combinado con cos2 

Los dos últimos enfoques de visualización: biplot e importancia de los atributos pueden combinarse para crear un único biplot, en el que los atributos con puntuaciones cos2 similares tendrán colores similares.  Esto se consigue ajustando con precisión la fviz_pca_var como sigue:  

fviz_pca_var(data.pca, col.var = "cos2",
            gradient.cols = c("black", "orange", "green"),
            repel = TRUE)

A partir del biplot siguiente:

  • Los atributos de cos2 alto están coloreados en verde: Cereales, legumbres, semillas oleaginosas, huevos y leche.  
  • Los atributos cos2 medios tienen un color naranja: la carne blanca, los alimentos ricos en almidón, el pescado y la carne roja.
  • Por último, los atributos de cos2 bajo tienen un color negro: frutas y verduras, 

Combinación de biplot y puntuación cos2

Combinación de biplot y puntuación cos2

Conclusión

En este artículo se ha tratado qué es el análisis de componentes principales y su importancia en el análisis de datos utilizando la matriz de correlaciones del paquete corrr. Además de cubrir algunas aplicaciones del mundo real, también te ha guiado a través de un ejemplo de ACP con diferentes estrategias de visualización, desde el uso de la función existente hasta su ajuste mediante la combinación de biplot y cos2 para una mejor comprensión y visualización de la relación entre el análisis de ACP en r y los atributos. 

Esperamos que te proporcione los conocimientos necesarios para visualizar y comprender eficazmente las perspectivas ocultas de tus datos.  

Para ampliar tu aprendizaje sobre el análisis de componentes principales, considera el tutorial Análisis de Componentes Principales en Python. Ilustra el uso del ACP con Python tanto en conjuntos de datos tabulares como de imágenes. Nuestro curso Introducción a R es un buen paso siguiente para dominar los fundamentos del análisis de datos en R, incluyendo vectores, listas y marcos de datos, y practicar con R con conjuntos de datos reales.

Preguntas frecuentes sobre el análisis PCA

¿El ACP es extracción o selección de características?

El ACP aprovecha una transformación lineal no supervisada para realizar la extracción de características y la reducción de la dimensionalidad.

¿Cuándo debes utilizar el análisis PCA?

Se recomienda utilizar el ACP cuando se trate de variables fuertemente correlacionadas. En caso de correlación débil, el ACP puede no reducir mejor los datos.

¿Cuáles son las limitaciones del ACP?

En primer lugar, el ACP sólo funciona con variables numéricas. Entonces no funciona bien cuando las variables no están fuertemente correlacionadas. Además, el ACP es sensible a la escala de las características y el resultado se ve afectado por los valores atípicos.

¿Cuál es la principal ventaja del PCA?

La PCA incluye múltiples beneficios y no se limita a : 

  • Reducir el número de variables de los datos eliminando las ruidosas, lo que también puede reducir el sobreajuste. 
  • Mejorar el rendimiento de los algoritmos centrándose sólo en las características relevantes.
  • Mejorar la visualización de los datos para comprenderlos mejor.

¿Qué es PC1 y PC2 en el análisis de componentes principales?

El eje PC1 corresponde a la primera dirección principal a lo largo de la cual los datos presentan la mayor variación. El eje PC2 corresponde a la segunda dirección más importante a lo largo de la cual los datos presentan la mayor variación. Además, PC1 es siempre ortogonal a PC2.

¿Cuáles son los supuestos del análisis de componentes principales?

El análisis de componentes principales parte de los siguientes supuestos:

  • Existe una combinación lineal entre variables.
  • Supone que los componentes principales que tienen mayor varianza son más importantes que los que no la tienen, y considera que incluyen ruido en los datos.
  • Entre los datos más atípicos se incluyen los errores experimentales.
  • El conjunto de datos del ACP ofrece una gran representación de los datos originales.

¿Cómo hacer PCA en R?

El paquete factoMineR da acceso al módulo PCA para realizar análisis de componentes principales en R.

Temas

Cursos para R

Certificación disponible

Course

Introduction to R

4 hr
2.7M
Master the basics of data analysis in R, including vectors, lists, and data frames, and practice R with real data sets.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

Cómo crear un currículum de analista de datos

En este artículo, hablaremos de cómo crear un currículum de analista de datos que consiga que te contraten.
Matt Crabtree's photo

Matt Crabtree

7 min

14 preguntas de la entrevista al analista de datos: Cómo preparar una entrevista de analista de datos en 2024

Si estás buscando tu primer trabajo de analista de datos o quieres ascender en tu carrera, utiliza esta guía para prepararte para la entrevista, practicar algunas preguntas de la entrevista de analista de datos y conseguir el trabajo de tus sueños.
Matt Crabtree's photo

Matt Crabtree

12 min

Analítica deportiva: Cómo utilizan la analítica de datos los distintos deportes

Descubre cómo funciona la analítica deportiva y cómo los distintos deportes utilizan los datos para proporcionar perspectivas significativas. Además, descubre qué se necesita para convertirse en analista de datos deportivos.
Kurtis Pykes 's photo

Kurtis Pykes

13 min

Tutorial de Pruebas T en R: Aprende a realizar pruebas T

Determina si existe una diferencia significativa entre las medias de los dos grupos utilizando t.test() en R.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Cómo escribir un script Bash: Un sencillo tutorial de Bash Scripting

Descubre los fundamentos de las secuencias de comandos bash y aprende a escribir una secuencia de comandos bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

Tutorial de Subconjuntos en R

Descubre cómo acceder a los datos de tu marco de datos con el subconjunto. ¡Sigue nuestro tutorial y aprende a utilizar la función subconjunto() de R hoy mismo!
DataCamp Team's photo

DataCamp Team

4 min

See MoreSee More