Introducción.

El análisis de componentes principales (principal component analysis) o PCA es una de las técnicas de aprendizaje no supervisado, las cuales suelen aplicarse como parte del análisis exploratorio de los datos (EDA).

Una de las aplicaciones de PCA es la reducción de dimensionalidad (variables), perdiendo la menor cantidad de información (varianza) posible: cuando contamos con un gran número de variables cuantitativas posiblemente correlacionadas (indicativo de existencia de información redundante), PCA permite reducirlas a un número menor de variables transformadas (componentes principales) que expliquen gran parte de la variabilidad en los datos. Cada dimensión o componente principal generada por PCA será una combinación lineal de las variables originales, y serán además independientes o no correlacionadas entre sí.

1. Consigna:

A partir del dataset utilizado en el proyecto final realizar un análisis PCA, ya sea con la función de base R o con el paquete psych.

Interpretar los componentes principales con mayor impacto en el dataset.

2. Aspectos a incluir.

## tibble [249 × 13] (S3: tbl_df/tbl/data.frame)
##  $ deftarjcredito: num [1:249] 1 1 1 1 1 0 1 1 1 1 ...
##  $ ingresos      : num [1:249] 1756 748 1501 1831 1622 ...
##  $ vecescajero   : num [1:249] 13 9 10 10 14 17 6 10 6 18 ...
##  $ servbanca     : num [1:249] 4 2 1 4 6 3 3 8 4 6 ...
##  $ tdebito       : num [1:249] 0 1 0 0 0 0 0 1 0 0 ...
##  $ edad          : num [1:249] 47 36 22 59 49 40 29 35 40 59 ...
##  $ casado        : num [1:249] 1 0 1 1 0 0 0 1 1 0 ...
##  $ cbog          : num [1:249] 0 1 1 0 0 1 0 1 0 0 ...
##  $ ccal          : num [1:249] 0 0 0 1 0 0 1 0 0 0 ...
##  $ ccart         : num [1:249] 0 0 0 0 1 0 0 0 1 0 ...
##  $ cmed          : num [1:249] 1 0 0 0 0 0 0 0 0 1 ...
##  $ city          : chr [1:249] "Medellín" "Bogotá" "Bogotá" "Calí" ...
##  $ casadosoltero : chr [1:249] "casado" "soltero" "casado" "casado" ...
## Warning: NAs introducidos por coerción

## Warning: NAs introducidos por coerción
## tibble [249 × 13] (S3: tbl_df/tbl/data.frame)
##  $ deftarjcredito: num [1:249] 1 1 1 1 1 0 1 1 1 1 ...
##  $ ingresos      : num [1:249] 1756 748 1501 1831 1622 ...
##  $ vecescajero   : num [1:249] 13 9 10 10 14 17 6 10 6 18 ...
##  $ servbanca     : num [1:249] 4 2 1 4 6 3 3 8 4 6 ...
##  $ tdebito       : num [1:249] 0 1 0 0 0 0 0 1 0 0 ...
##  $ edad          : num [1:249] 47 36 22 59 49 40 29 35 40 59 ...
##  $ casado        : num [1:249] 1 0 1 1 0 0 0 1 1 0 ...
##  $ cbog          : num [1:249] 0 1 1 0 0 1 0 1 0 0 ...
##  $ ccal          : num [1:249] 0 0 0 1 0 0 1 0 0 0 ...
##  $ ccart         : num [1:249] 0 0 0 0 1 0 0 0 1 0 ...
##  $ cmed          : num [1:249] 1 0 0 0 0 0 0 0 0 1 ...
##  $ city          : num [1:249] NA NA NA NA NA NA NA NA NA NA ...
##  $ casadosoltero : num [1:249] NA NA NA NA NA NA NA NA NA NA ...
## [1] "tbl_df"     "tbl"        "data.frame"

3.Estandarizamos las variables.

pca_bankdumcity2 <-prcomp(bankdumcity2, center = TRUE, scale. = TRUE)

4.Con la función names() observamos los objetos dentro la lista creada

names(pca_bankdumcity2)
## [1] "sdev"     "rotation" "center"   "scale"    "x"

5.Analizamos gráficamente si existe correlación entre los componentes principales.

plot(pca_bankdumcity2$x [ ,1], pca_bankdumcity2$x [ ,2], xlab = "PCA 1", ylab = "PCA 2")

Como podemos observar en el gráfico anterior, no existe correlación entre el primer par de componentes principales.

6. Pedimos un resumen de los PCA.

summary(pca_bankdumcity2)
## Importance of components:
##                           PC1    PC2   PC3    PC4     PC5     PC6     PC7
## Standard deviation     1.3547 1.2850 1.196 1.1506 1.00005 0.99215 0.96629
## Proportion of Variance 0.1668 0.1501 0.130 0.1204 0.09092 0.08949 0.08488
## Cumulative Proportion  0.1668 0.3170 0.447 0.5673 0.65823 0.74772 0.83260
##                            PC8     PC9    PC10      PC11
## Standard deviation     0.87394 0.79778 0.66420 3.511e-16
## Proportion of Variance 0.06943 0.05786 0.04011 0.000e+00
## Cumulative Proportion  0.90203 0.95989 1.00000 1.000e+00

7. Calculo los autovalores.

Los autovalores son determinados por los autovectores, que podemos obtener del objeto “rotation” del objeto pca creado.

Estas variables nos interesan porque nos permiten calcular el porcentaje de la variabilidad explicada por cada una de las componentes del dataset.

autovectores <- pca_bankdumcity2$rotation 
autovalores <- pca_bankdumcity2$sdev * pca_bankdumcity2$sdev

Guardamos el porcentaje de variación de cada componente y los mostramos en un gráfico.

pca_var_pct <- round(autovalores/sum(autovalores)*100, digits = 2)
barplot(pca_var_pct, main = "Scree Plot", xlab = "Componente Principal", ylab = "Variacion Porcentual")

Podemos observar que los primeros 5 PCA tienen un desvío estándar de 1.3547 1.2850 1.196 1.1506 1.00005 0.99215 0.96629 aunque si quisiéramos una explicación superior al 80% deberíamos considerar los 7 primeros componentes principales.

8. Interpretación de los resultados.

screeplot(pca_bankdumcity2, type = "l", main = "Screeplot Bankdumcity")

Como puede verse en el gráfico anterior, los primeros 7 componentes principales son los que explican el mayor porcentaje de la varianza, llegando al 83.26% tal como se puede ver en el acumulado del summary del punto 6.