El Análisis de Componentes Principales (ACP) es un método estadÃstico que simplifica conjuntos de datos de alta dimensión manteniendo la mayor cantidad de información posible. Donde hay un conjunto de individuos con múltiples variables, el ACP busca reducir el número de variables originales a un conjunto menor de componentes principales que explican la mayor parte de la variabilidad de los datos.
Sus principales aplicaciones incluyen la reducción de dimensionalidad, facilitando la interpretación y visualización de los datos, la comparación de individuos, permitiendo identificar patrones en los datos, y la descripción de relaciones entre variables, logrando sintetizar la información en pocos ejes factoriales cuando existe alta correlación entre las variables.
Se emplearan herramientas de estadistica descriptiva multivariada como:
Es necesario activar los paquetes WDI,factoextra, FactoMineR, psych y corrplot.
library(WDI)
library("factoextra")
library("FactoMineR")
library(psych)
library("corrplot")
library(knitr)
El análisis de componentes principales se realizara a una base de datos economicos de Colombia desde el año 2000 hasta el 2020, proporcionada por el WDI del banco mundial. Las variables usadas para tal efecto son:
indicadores <- c("NY.GDP.MKTP.CD", "FP.CPI.TOTL.ZG", "SL.UEM.TOTL.ZS","NE.EXP.GNFS.ZS","NE.IMP.GNFS.ZS",
"DT.TDS.DECT.GN.ZS","NY.GDP.PCAP.CD","SP.DYN.LE00.IN",
"EG.PROD.TOTL.KT.OE", "EN.ATM.CO2E.KT
","SH.DYN.MORT")
data_CO <- WDI(country="CO",indicator = indicadores, start = 2000, end = 2020)
data_CO2 <- data_CO [,- c(1,2,3,4)]
matriz_data_CO <- as.matrix.data.frame(data_CO2)
colnames(matriz_data_CO) <- c("PIB", "IPC", "Tasa Desempleo", "Exportaciones %PIB",
"Importaciones %PIB", "Deuda externa %PNB", "PIB per capita",
"Esperanza de vida", "Tasa de mortalidad infantil")
Head_data<- head(matriz_data_CO)
kable(Head_data, digits = 3)
PIB | IPC | Tasa Desempleo | Exportaciones %PIB | Importaciones %PIB | Deuda externa %PNB | PIB per capita | Esperanza de vida | Tasa de mortalidad infantil |
---|---|---|---|---|---|---|---|---|
99875074951 | 9.225 | 20.520 | 15.915 | 16.752 | 5.267 | 2555.008 | 71.320 | 25.1 |
98200641203 | 7.966 | 15.040 | 15.387 | 18.514 | 6.617 | 2472.991 | 71.502 | 24.3 |
97945812803 | 6.352 | 14.481 | 14.816 | 18.167 | 7.186 | 2428.930 | 71.939 | 23.6 |
94644969157 | 7.130 | 13.221 | 16.575 | 19.941 | 9.440 | 2311.942 | 72.361 | 22.8 |
117092416666 | 5.904 | 13.717 | 16.771 | 19.093 | 6.819 | 2818.572 | 72.695 | 22.2 |
145600529606 | 5.051 | 11.062 | 16.971 | 20.452 | 7.235 | 3456.066 | 73.081 | 21.5 |
Se procede a escalar los datos para poder realizar el análisis de componentes principales
scale_data_CO <- scale(matriz_data_CO)
Head_data_e<- head(scale_data_CO)
kable(Head_data_e, digits = 3)
PIB | IPC | Tasa Desempleo | Exportaciones %PIB | Importaciones %PIB | Deuda externa %PNB | PIB per capita | Esperanza de vida | Tasa de mortalidad infantil |
---|---|---|---|---|---|---|---|---|
-1.389 | 2.122 | 2.994 | -0.367 | -2.284 | -0.190 | -1.351 | -1.767 | 1.756 |
-1.406 | 1.506 | 1.137 | -0.742 | -1.069 | 0.542 | -1.391 | -1.666 | 1.538 |
-1.408 | 0.718 | 0.948 | -1.148 | -1.309 | 0.850 | -1.413 | -1.424 | 1.347 |
-1.441 | 1.098 | 0.521 | 0.101 | -0.086 | 2.070 | -1.471 | -1.190 | 1.129 |
-1.220 | 0.499 | 0.689 | 0.240 | -0.671 | 0.651 | -1.220 | -1.005 | 0.966 |
-0.940 | 0.082 | -0.210 | 0.382 | 0.266 | 0.876 | -0.906 | -0.791 | 0.775 |
Se calcula la matriz de covarianza, que permite ver la dispersión de los datos en las 9 variables a estudiar.
library(knitr)
matriz_cov <- cov(scale_data_CO)
matriz_cov_redondeada <- round(matriz_cov, 3)
kable(matriz_cov_redondeada, digits = 3)
PIB | IPC | Tasa Desempleo | Exportaciones %PIB | Importaciones %PIB | Deuda externa %PNB | PIB per capita | Esperanza de vida | Tasa de mortalidad infantil | |
---|---|---|---|---|---|---|---|---|---|
PIB | 1.000 | -0.749 | -0.712 | 0.240 | 0.443 | -0.511 | 0.994 | 0.923 | -0.867 |
IPC | -0.749 | 1.000 | 0.544 | -0.222 | -0.282 | 0.280 | -0.740 | -0.659 | 0.680 |
Tasa Desempleo | -0.712 | 0.544 | 1.000 | -0.314 | -0.692 | 0.311 | -0.720 | -0.797 | 0.644 |
Exportaciones %PIB | 0.240 | -0.222 | -0.314 | 1.000 | 0.086 | -0.566 | 0.321 | 0.043 | 0.148 |
Importaciones %PIB | 0.443 | -0.282 | -0.692 | 0.086 | 1.000 | 0.019 | 0.410 | 0.597 | -0.606 |
Deuda externa %PNB | -0.511 | 0.280 | 0.311 | -0.566 | 0.019 | 1.000 | -0.585 | -0.310 | 0.134 |
PIB per capita | 0.994 | -0.740 | -0.720 | 0.321 | 0.410 | -0.585 | 1.000 | 0.893 | -0.813 |
Esperanza de vida | 0.923 | -0.659 | -0.797 | 0.043 | 0.597 | -0.310 | 0.893 | 1.000 | -0.948 |
Tasa de mortalidad infantil | -0.867 | 0.680 | 0.644 | 0.148 | -0.606 | 0.134 | -0.813 | -0.948 | 1.000 |
Las librerias necesarias para realizar el PCA son:
matriz_cov <- cov(matriz_data_CO)
install.packages("factoextra")
install.packages("FactoMineR")
library("factoextra")
library("FactoMineR")
library(psych)
Se obtiene el PCA y la correlación de las variables
Se extraen los valores propios obtenidos al realizar el PCA para poder determinar con que dimensiones se realizara el análisis.
get_eigenvalue(Colombia_pca)
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 5.4986820294 61.096466993 61.09647
## Dim.2 1.6283601897 18.092890996 79.18936
## Dim.3 0.9071827070 10.079807856 89.26917
## Dim.4 0.5017461190 5.574956878 94.84412
## Dim.5 0.2243812534 2.493125037 97.33725
## Dim.6 0.1914416697 2.127129663 99.46438
## Dim.7 0.0422535201 0.469483556 99.93386
## Dim.8 0.0056278404 0.062531560 99.99639
## Dim.9 0.0003246715 0.003607461 100.00000
fviz_eig(Colombia_pca, addlabels=T)
Se puede observar tanto en la tabla como en el anterior gráfico que las componentes 1 y 2 son las más significativas ya que capturan el 79,2% de las varianzas de las variables.
fviz_pca_var(Colombia_pca,repel=T,colvar="cos2",col.var="contrib",
alpha.var="contrib", gradient.cols=c('#FF0000','#FFF000','#00FF00'))
library("corrplot")
get_pca_var(Colombia_pca)
## Principal Component Analysis Results for variables
## ===================================================
## Name Description
## 1 "$coord" "Coordinates for the variables"
## 2 "$cor" "Correlations between variables and dimensions"
## 3 "$cos2" "Cos2 for the variables"
## 4 "$contrib" "contributions of the variables"
get_pca_coord <- as.matrix(get_pca_var(Colombia_pca)$coord[,1:3])
kable(get_pca_coord, digits = 3)
Dim.1 | Dim.2 | Dim.3 | |
---|---|---|---|
PIB | 0.966 | 0.061 | -0.192 |
IPC | -0.773 | -0.036 | 0.281 |
Tasa Desempleo | -0.839 | 0.027 | -0.392 |
Exportaciones %PIB | 0.266 | 0.819 | 0.387 |
Importaciones %PIB | 0.609 | -0.371 | 0.642 |
Deuda externa %PNB | -0.464 | -0.759 | 0.126 |
PIB per capita | 0.958 | 0.161 | -0.173 |
Esperanza de vida | 0.952 | -0.214 | -0.058 |
Tasa de mortalidad infantil | -0.884 | 0.407 | 0.160 |
get_pca_cont <- as.matrix(get_pca_var(Colombia_pca)$contrib[,1:5])
kable(get_pca_cont, digits = 3)
Dim.1 | Dim.2 | Dim.3 | Dim.4 | Dim.5 | |
---|---|---|---|---|---|
PIB | 16.968 | 0.228 | 4.075 | 0.635 | 0.265 |
IPC | 10.881 | 0.081 | 8.679 | 54.778 | 1.654 |
Tasa Desempleo | 12.811 | 0.045 | 16.975 | 0.013 | 56.624 |
Exportaciones %PIB | 1.292 | 41.206 | 16.525 | 12.720 | 1.193 |
Importaciones %PIB | 6.737 | 8.463 | 45.499 | 0.646 | 29.388 |
Deuda externa %PNB | 3.908 | 35.407 | 1.745 | 26.935 | 3.149 |
PIB per capita | 16.703 | 1.600 | 3.314 | 0.787 | 0.010 |
Esperanza de vida | 16.484 | 2.811 | 0.366 | 3.033 | 2.907 |
Tasa de mortalidad infantil | 14.216 | 10.159 | 2.821 | 0.455 | 4.810 |
Las siguientes graficas son utiles para determinar la viabilidad de eliminacion de dimensiones.
corrplot(get_pca_var(Colombia_pca)$cos2)
Se puede observar que la correlación entre las componentes principales (Ãndice económicos) y cada concepto (en cada componente principal) es en Dim(1) donde la mayorÃa de las variables aportan un gran porcentaje; PIB, IPC, Tasa de Desempleo, PIB per cápita, Esperanza de vida y Tasa de mortalidad infantil. Mientras que la Dim(2) describe de mejor manera las Exportaciones como porcentaje del PIB y la Deuda externa como porcentaje del PIB. Mientras que las Importaciones como porcentaje del PIB este descrito mayormente en las Dim (1) y Dim (3).
colSums(get_pca_var(Colombia_pca)$contrib)
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## 100 100 100 100 100
#gráfica para mirar la contibucion de las variables al pca
fviz_contrib(Colombia_pca, choice = "var", axes=1)
fviz_contrib(Colombia_pca, choice = "var", axes=2)
fviz_contrib(Colombia_pca, choice = "var", axes=3)
fviz_pca_biplot(Colombia_pca)