Calcular el PCA con predict en R

| Última modificación: 16 de abril de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este artículo te enseñaremos cómo calcular el PCA con predict en R.

En un ejercicio anterior te hemos mostrado cómo calcular el PCA en R. Empezamos a trabajar con un dataset sobre la temperatura y el sol y normalizamos el pr_meteo, una matriz de rotación que también se puede normalizar con predict.

Eso es precisamente lo que haremos en este artículo; retomaremos este ejercicio y continuaremos para poder hacer el análisis de componentes y calcular el PCA con predict en R.

¿Cómo calcular el predict en R?

Lo primero que haremos será normalizar la matriz de rotación pr_meteo por medio del predict:

#Calcular el PCA con predict
head (predict (pr_meteo, as.matrix (df_meteo)))
calcular el PCA con predict en R.
#Calcular el PCA con predict
str (pr_meteo)

Aquí podemos observar la media y la desviación típica. En el $ center está la media y en el $ scale está la desviación típica.

Si pintamos estos valores transformados, estamos condensando toda la información que tenemos acerca de la temperatura y el sol de 12 meses. Estamos condensando 48 dimensiones (el valor de la matriz que teníamos inicialmente) en apenas 2:

#Calcular el PCA con predict
plot (pr_meteo$x [ , c (1, 2)])

El siguiente paso es pintar ciertas ciudades, para que observemos cómo se comporta la matriz de datos:

#Calcular el PCA con predict
plot (pr_meteo$x [ , c (1, 2)])

city <- 'Spain - Barcelona'
points (pr_meteo$x [rownames (pr_meteo$x) == city, 1], 
pr_meteo$x [rownames (pr_meteo$x) == city, 2],
col = 'red', pch ' * ' , cex = 3)

city <- 'Spain - Madrid'
points (pr_meteo$x [rownames (pr_meteo$x) == city, 1], 
pr_meteo$x [rownames (pr_meteo$x) == city, 2],
col = 'blue', pch ' * ' , cex = 3)

city <- 'United ArabEmirates - Dubai'
points (pr_meteo$x [rownames (pr_meteo$x) == city, 1], 
pr_meteo$x [rownames (pr_meteo$x) == city, 2],
col = 'green', pch ' * ' , cex = 3)

city <- 'Germany - Berlin'
points (pr_meteo$x [rownames (pr_meteo$x) == city, 1], 
pr_meteo$x [rownames (pr_meteo$x) == city, 2],
col = 'brown', pch ' * ' , cex = 3)

city <- 'Colombia - Bogotá'
points (pr_meteo$x [rownames (pr_meteo$x) == city, 1], 
pr_meteo$x [rownames (pr_meteo$x) == city, 2],
col = 'brown', pch ' * ' , cex = 3)

Observamos, pues, que la estrella verde corresponde a los Emiratos Árabes, el azul le pertenece a Madrid, el rojo a Barcelona y el marrón corresponde a Berlín y Bogotá.

Añadiremos la explicación de la matriz de rotación:

#Calcular el PCA con predict
pr_meteo$rotation

Para entender un poco mejor cómo funciona esto, tenemos la librería FactorMineR, a la que le pasaremos el dataframe. Viene por defecto en R.

#Calcular el PCA con predict
library ("FactorMineR")
#el res nos da el resultado del pca
res.pca <- PCA (df_meteo)
#Si hacemos un $eig nos da los autovalores y el porcentaje de la varianza
head (res.pca$eig)
eigenvaluepercentage of
variance
cumulative percentage
of variance
comp 112.185573450.77322350.77322
comp 26.126693225.52788976.30111
comp 33.504834914.60347990.90459
comp 41.16564324.85684795.76144
comp 50.44521841.85507797.61651
comp 60.18567260.77363698.39015

El primer autovalor nos da el 50% de la varianza, tal y como se muestra en la tabla. El siguiente nos da 25% y, entre los dos, tenemos alrededor de 75%, como podemos observar en la columna 3 de cumulative percentage of variance.

Este tipo de cálculos se usa mucho. De este modo determinamos cuántos componentes necesitamos para tener un porcentaje alto de varianza y qué componentes podemos desechar sin temor a error.

#Calcular el PCA con predict
plot (res.pca$eig [ , "eigenvalue"])

Aquí pintaremos el PCA y automáticamente el algoritmo nos coge las dos dimensiones principales, la del 50% y la del 25%.

plot (res.pca, choix = "ind", autoLab = "yes")

Warning message:

“ggrepel: 290 unlabeled data points (too many overlaps). Consider increasing max.overlaps”

Aunque parezca que hay correlación, aún no debería haberla entre ninguna de las dos.

A continuación, tenemos la información de cómo van los autovectores en las dos dimensiones principales. Vemos cómo se representan cada una de las dimensiones originales de nuestra matriz.

plot (res.pca, choix = "var", autoLab = "yes")
#Calcular el PCA con predict
pr_meteo$rotation [rownames (pr_meteo$rotation)
%in% c ('Jun_sun' , 'Jun_sun' , 'May_temp' , 'Oct_temp' ), 1 : 5]
PC1PC2PC3PC4PC5
May_temp0.247885693-0.003950100.24942737-0.08326077-0.02379312
Oct_temp0.270820385-0.053921460.125493240.122039330.06603039
Jun_sun0.0045851010.389678070.026801100.097405610.17924080
Jul_sun-0.0261357400.373198890.028673670.275066690.04415177

En este poste hemos visto cómo calcular el PCA con predict en R, un asunto importante cuando se trabaja con matrices y con datasets para el análisis. Si quieres seguir aprendiendo acerca de estas temáticas y otras tantas, te invitamos a seguir nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, con el que en poco tiempo aprenderás todo lo necesario para incursionar en el mercado laboral. ¡Súmate a nuestro equipo y solicita más información!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado