Calcular el PCA con predict en R

| Última modificación: 16 de abril de 2024 | Tiempo de Lectura: 3 minutos
Premios Blog KeepCoding 2025

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)
calcular el PCA con predict

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)])
calcular el PCA con predict

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)
calcular el PCA con predict

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
calcular el PCA con predict

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"])
calcular el PCA con predict

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»

calcular el PCA con predict

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

¡CONVOCATORIA ABIERTA!

Big Data & Data Science

Full Stack Bootcamp

Clases en Directo | Acceso a +600 empresas | 98% de empleabilidad

KeepCoding Bootcamps
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.