Introduccion:

Es interesante observar el comportamiento de la economia mundial desde el punto de vista de las variaciones que han tenido las divisas durante la pandemia y como poder contribuir a realizar con el presente documento un análisis de componentes principales ( PCA ) que nos va a permitir resumir y visualizar la información de un conjunto de datos que contiene el precio de cierre de las divisas, y elevarlo a dimensiones para luego poder reducir y optimizar las variables para conformar un portafolio optimo.

El siguiente es un resumen descriptivo de las divisas

Formato de datos

como se observa en la siguiente tabla , contiene 284 observaciones y 7 variables

datos[1:284, 1:7]
## # A tibble: 284 x 7
##    observaciones `GBP/USD` `USD/JPY` `AUD/USD` `EUR/GBP` `USD/CAD` `NZD/USD`
##            <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
##  1             1      1.37      105.     0.768     0.877      1.28     0.720
##  2             2      1.37      106.     0.760     0.875      1.28     0.715
##  3             3      1.36      105.     0.762     0.882      1.28     0.721
##  4             4      1.37      105.     0.761     0.881      1.28     0.719
##  5             5      1.37      105.     0.762     0.882      1.28     0.716
##  6             6      1.37      105.     0.764     0.886      1.28     0.719
##  7             7      1.37      104.     0.768     0.883      1.28     0.717
##  8             8      1.37      104.     0.766     0.885      1.28     0.716
##  9             9      1.37      104.     0.774     0.885      1.27     0.724
## 10            10      1.37      104.     0.771     0.887      1.27     0.720
## # … with 274 more rows
head(datos[, 1:7], 4)
## # A tibble: 4 x 7
##   observaciones `GBP/USD` `USD/JPY` `AUD/USD` `EUR/GBP` `USD/CAD` `NZD/USD`
##           <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
## 1             1      1.37      105.     0.768     0.877      1.28     0.720
## 2             2      1.37      106.     0.760     0.875      1.28     0.715
## 3             3      1.36      105.     0.762     0.882      1.28     0.721
## 4             4      1.37      105.     0.761     0.881      1.28     0.719

Estandarizacion de los datos:

Es necesario estandarizar los datos para hacer que las variables sean comparables, este paso es muy importante antes de analizar los PCA

library("FactoMineR")
res.pca <- PCA(datos, graph = FALSE)
print(res.pca)
## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 284 individuals, described by 8 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"

Visualización e interpretación

Autovalores / Varianzas

En este punto se pretende medir la cantidad de variación retenida por cada componente principal, en cada escala de componente los valores van en forma descendente y que se espera que el primer componente asuma gran parte de los valores.

Como se puede observar el primer y el segundo componente se acumula mas del 90% de la variacion total

library("factoextra")
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
eig.val <- get_eigenvalue(res.pca)
eig.val
##         eigenvalue variance.percent cumulative.variance.percent
## Dim.1 5.8990059057     73.737573821                    73.73757
## Dim.2 1.4733630027     18.417037534                    92.15461
## Dim.3 0.3987811090      4.984763863                    97.13938
## Dim.4 0.0979226871      1.224033588                    98.36341
## Dim.5 0.0772193201      0.965241501                    99.32865
## Dim.6 0.0304585931      0.380732414                    99.70938
## Dim.7 0.0230336382      0.287920478                    99.99730
## Dim.8 0.0002157441      0.002696801                   100.00000

En la siguiente grafica se observa atraves de la regla del codito que la primer componente explica el 73.74% de los valores y la segunda explica el 18.42% de los valores, con esto entendemos que se puede ganar o ser mucho mas practico para luego realizar la estadistica inferencial

fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 50))

Gráfica de variables

Resultados

var <- get_pca_var(res.pca)
var
## 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"

Coordenadas

head(var$coord)
##                    Dim.1       Dim.2       Dim.3       Dim.4       Dim.5
## observaciones -0.8888564  0.36867771  0.11640567  0.17348986  0.16877180
## GBP/USD        0.8869162  0.41949574 -0.11601163  0.12145409 -0.09153762
## USD/JPY       -0.8032412  0.39072490  0.42721532 -0.12864040 -0.05498688
## AUD/USD        0.9783692  0.06658549  0.03547689 -0.10981460  0.08949192
## EUR/GBP        0.3497091 -0.90563868  0.22463735  0.05006006  0.06461232
## USD/CAD       -0.9016136 -0.39012919 -0.09650557 -0.01108830 -0.08563530

Calidad en el mapa de factores

# Cos2: quality on the factore map
head(var$cos2)
##                   Dim.1       Dim.2       Dim.3        Dim.4       Dim.5
## observaciones 0.7900657 0.135923250 0.013550279 0.0300987326 0.028483922
## GBP/USD       0.7866204 0.175976680 0.013458698 0.0147510953 0.008379135
## USD/JPY       0.6451964 0.152665950 0.182512928 0.0165483535 0.003023557
## AUD/USD       0.9572063 0.004433628 0.001258610 0.0120592471 0.008008804
## EUR/GBP       0.1222965 0.820181412 0.050461937 0.0025060100 0.004174751
## USD/CAD       0.8129072 0.152200783 0.009313324 0.0001229504 0.007333404

Contribuciones a los componentes principales

# Contributions to the principal components
head(var$contrib)
##                   Dim.1      Dim.2      Dim.3      Dim.4     Dim.5
## observaciones 13.393200  9.2253742  3.3979240 30.7372413 36.887040
## GBP/USD       13.334796 11.9438780  3.3749589 15.0640222 10.851087
## USD/JPY       10.937374 10.3617336 45.7676966 16.8994070  3.915545
## AUD/USD       16.226570  0.3009189  0.3156141 12.3150697 10.371503
## EUR/GBP        2.073171 55.6673006 12.6540441  2.5591720  5.406356
## USD/CAD       13.780410 10.3301619  2.3354478  0.1255586  9.496852

Círculo de correlación

# Coordinates of variables
head(var$coord, 4)
##                    Dim.1      Dim.2       Dim.3      Dim.4       Dim.5
## observaciones -0.8888564 0.36867771  0.11640567  0.1734899  0.16877180
## GBP/USD        0.8869162 0.41949574 -0.11601163  0.1214541 -0.09153762
## USD/JPY       -0.8032412 0.39072490  0.42721532 -0.1286404 -0.05498688
## AUD/USD        0.9783692 0.06658549  0.03547689 -0.1098146  0.08949192
fviz_pca_var(res.pca, col.var = "black")

#Cos2 feliz
fviz_pca_var(res.pca, col.var="cos2",
             gradient.cols=c("#00AFBB","#E7B800","#FC4E07"),
             repel=T)

#Cos2 triste
fviz_pca_var(res.pca, alpha.var="cos2")

#Contribuciones
fviz_contrib(res.pca, choice="var", axes=1, top=10)

fviz_contrib(res.pca, choice="var", axes=2, top=10)

#Contribución feliz
fviz_pca_var(res.pca, col.var="contrib",
             gradient.cols=c("#00AFBB","#E7B800","#FC4E07"))

#Contribución triste
fviz_pca_var(res.pca, alpha.var="contrib")