# Librería
library(readxl)
base <- read_xlsx("base.xlsx")
base <- na.omit(base)
pairs(base)
R <- cor(base)
R
##             v1         v2         v3         v4          v5         v6
## v1   1.0000000 -0.7469167  0.5546626  0.5149221 -0.59219898 -0.6659894
## v2  -0.7469167  1.0000000 -0.5598373 -0.6362714  0.63648198  0.7672823
## v3   0.5546626 -0.5598373  1.0000000  0.4790170 -0.44272046 -0.5485170
## v4   0.5149221 -0.6362714  0.4790170  1.0000000 -0.55284401 -0.6548332
## v5  -0.5921990  0.6364820 -0.4427205 -0.5528440  1.00000000  0.7996485
## v6  -0.6659894  0.7672823 -0.5485170 -0.6548332  0.79964854  1.0000000
## v7   0.5048569 -0.4838320  0.2866318  0.3769028 -0.09424916 -0.4197819
## v8   0.4552451 -0.3883615  0.1115619  0.1649269 -0.09754616 -0.3322655
## v9   0.8012074 -0.9408715  0.6157166  0.6520098 -0.65663598 -0.7910469
## v10  0.6906238 -0.7154578  0.4703587  0.6152582 -0.68188027 -0.7726694
## v11  0.8396571 -0.8894007  0.6947350  0.7523546 -0.73881573 -0.8900609
##              v7          v8         v9        v10        v11
## v1   0.50485693  0.45524506  0.8012074  0.6906238  0.8396571
## v2  -0.48383199 -0.38836152 -0.9408715 -0.7154578 -0.8894007
## v3   0.28663180  0.11156190  0.6157166  0.4703587  0.6947350
## v4   0.37690280  0.16492691  0.6520098  0.6152582  0.7523546
## v5  -0.09424916 -0.09754616 -0.6566360 -0.6818803 -0.7388157
## v6  -0.41978193 -0.33226554 -0.7910469 -0.7726694 -0.8900609
## v7   1.00000000  0.58904193  0.5299709  0.4004290  0.6033105
## v8   0.58904193  1.00000000  0.3637438  0.3318189  0.4346276
## v9   0.52997092  0.36374377  1.0000000  0.7028000  0.9172458
## v10  0.40042903  0.33181891  0.7028000  1.0000000  0.8118904
## v11  0.60331051  0.43462759  0.9172458  0.8118904  1.0000000
Calculamos los valores y vectores propios.
valp <- eigen(R)$values
valp
##  [1] 7.021661646 1.357423604 0.679200554 0.543097251 0.374334823 0.317748875
##  [7] 0.296040275 0.243068185 0.114001168 0.046012603 0.007411017
vecp <- eigen(R)$vectors
vecp
##             [,1]         [,2]        [,3]        [,4]        [,5]        [,6]
##  [1,]  0.3216957 -0.101821633 -0.00291388 -0.35360807 -0.21127906 -0.11297488
##  [2,] -0.3426791  0.003591539  0.01051380  0.05394324  0.49549081 -0.25118269
##  [3,]  0.2530438  0.174811652 -0.73104950 -0.35307320  0.43984387  0.05179829
##  [4,]  0.2822054  0.158273773 -0.11918462  0.74534994  0.15654250  0.41656507
##  [5,] -0.2836022 -0.395842876 -0.40533231  0.14070994 -0.10626676  0.03097317
##  [6,] -0.3375013 -0.131110796 -0.21550134 -0.03853738 -0.20900990  0.09886025
##  [7,]  0.2183307 -0.573621043 -0.23067108  0.33413939 -0.06085884 -0.51517060
##  [8,]  0.1691900 -0.651596841  0.30380155 -0.22288740  0.38238414  0.48949271
##  [9,]  0.3516011  0.001214477 -0.09602995 -0.07112982 -0.46925066  0.13400417
## [10,]  0.3170692  0.080507863  0.28658169  0.06014203  0.25567247 -0.46221837
## [11,]  0.3749999 -0.005059273 -0.06043320  0.02356649  0.03765693 -0.02439105
##                [,7]        [,8]         [,9]        [,10]       [,11]
##  [1,]  0.5580130000  0.53340665 -0.270495213  0.129976990 -0.13316186
##  [2,]  0.0881205700  0.41156629 -0.128992305 -0.595014054  0.15199038
##  [3,] -0.0549720216 -0.10130689  0.109662300  0.012672062 -0.15715781
##  [4,]  0.2810659799  0.17676764 -0.005236587 -0.010023204 -0.13097042
##  [5,]  0.2763180153 -0.38775985 -0.564835174 -0.003050994  0.14413614
##  [6,]  0.4730745434  0.01456550  0.715450348 -0.061871600  0.16676163
##  [7,] -0.2719202991  0.18510998  0.220612345  0.060401258 -0.16971542
##  [8,] -0.0001361379 -0.06351505  0.087446756 -0.076908866 -0.03748739
##  [9,] -0.1101894806 -0.12602793 -0.004097169 -0.770887021 -0.04040271
## [10,]  0.4568430122 -0.54284655  0.104020941 -0.106929525 -0.05082355
## [11,] -0.0624271783  0.07173220  0.008844427  0.098497718  0.91340369
Calculamos los componentes principales.
head(princomp(base, cor = T)$scores)
##         Comp.1    Comp.2     Comp.3    Comp.4      Comp.5      Comp.6
## [1,] -3.845302 0.8424912 -0.8314361 0.5169317 -0.12568250  0.28416109
## [2,] -3.759160 0.8558490 -0.8219599 0.6210179  0.02667746  0.29273748
## [3,] -3.527555 0.5027253 -0.7230556 0.2545267  0.13051596  0.25001795
## [4,] -3.614457 0.5605108 -0.6390253 0.1743499  0.12520118  0.23476628
## [5,] -3.472891 0.8504301 -1.0135011 0.3612880 -0.28377577 -0.04943491
## [6,] -3.554321 0.4765333 -0.7268494 0.1458184  0.03191241  0.23465944
##           Comp.7      Comp.8      Comp.9     Comp.10    Comp.11
## [1,] -0.16826595 -0.21753591  0.02343659  0.01800376 0.09128069
## [2,] -0.25058777 -0.27374424  0.04823735 -0.20976108 0.08940313
## [3,] -0.06717042 -0.03002852 -0.01754785 -0.11863389 0.13153860
## [4,] -0.10597218 -0.17210981  0.05543505 -0.26036291 0.06227345
## [5,] -0.18886660 -0.02341849 -0.21221474 -0.17634025 0.11381503
## [6,] -0.12470509 -0.09687530 -0.06365291 -0.05526723 0.02585006
La siguiente línea de código nos proporcionan información sobre la varianza y la importancia de cada componente principal.
summary(princomp(base, cor = T))
## Importance of components:
##                           Comp.1    Comp.2    Comp.3     Comp.4     Comp.5
## Standard deviation     2.6498418 1.1650852 0.8241362 0.73695132 0.61182908
## Proportion of Variance 0.6383329 0.1234021 0.0617455 0.04937248 0.03403044
## Cumulative Proportion  0.6383329 0.7617350 0.8234805 0.87285300 0.90688344
##                            Comp.6     Comp.7     Comp.8     Comp.9     Comp.10
## Standard deviation     0.56369218 0.54409583 0.49301946 0.33764059 0.214505484
## Proportion of Variance 0.02888626 0.02691275 0.02209711 0.01036374 0.004182964
## Cumulative Proportion  0.93576970 0.96268246 0.98477956 0.99514331 0.999326271
##                             Comp.11
## Standard deviation     0.0860872647
## Proportion of Variance 0.0006737288
## Cumulative Proportion  1.0000000000
La siguiente línea de código nos proporciona las cargas o loadings de la matriz de correlación, la cuál en este caso corresponde a la matriz de vectores propios.
princomp(base, cor = T)$loadings
## 
## Loadings:
##     Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9 Comp.10
## v1   0.322  0.102         0.354  0.211  0.113  0.558  0.533  0.270  0.130 
## v2  -0.343                      -0.495  0.251         0.412  0.129 -0.595 
## v3   0.253 -0.175  0.731  0.353 -0.440               -0.101 -0.110        
## v4   0.282 -0.158  0.119 -0.745 -0.157 -0.417  0.281  0.177               
## v5  -0.284  0.396  0.405 -0.141  0.106         0.276 -0.388  0.565        
## v6  -0.338  0.131  0.216         0.209         0.473        -0.715        
## v7   0.218  0.574  0.231 -0.334         0.515 -0.272  0.185 -0.221        
## v8   0.169  0.652 -0.304  0.223 -0.382 -0.489                             
## v9   0.352                       0.469 -0.134 -0.110 -0.126        -0.771 
## v10  0.317        -0.287        -0.256  0.462  0.457 -0.543 -0.104 -0.107 
## v11  0.375                                                                
##     Comp.11
## v1   0.133 
## v2  -0.152 
## v3   0.157 
## v4   0.131 
## v5  -0.144 
## v6  -0.167 
## v7   0.170 
## v8         
## v9         
## v10        
## v11 -0.913 
## 
##                Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9
## SS loadings     1.000  1.000  1.000  1.000  1.000  1.000  1.000  1.000  1.000
## Proportion Var  0.091  0.091  0.091  0.091  0.091  0.091  0.091  0.091  0.091
## Cumulative Var  0.091  0.182  0.273  0.364  0.455  0.545  0.636  0.727  0.818
##                Comp.10 Comp.11
## SS loadings      1.000   1.000
## Proportion Var   0.091   0.091
## Cumulative Var   0.909   1.000
A continuación se muestra el grafico de CP1 vs CP2
# Se copiaron los países
paises <- read.delim("clipboard", header = F)
paises <- as.data.frame(paises)
plot(princomp(base, cor = T)$scores[, 1], princomp(base, cor = T)$scores[, 2],
     xlab = "Componente Principal 1", ylab = "Componente Principal 2")
title("Gráfico CP1 vs. CP2")
text(princomp(base, cor = T)$scores[, 1], princomp(base, cor = T)$scores[, 2],
     labels = paises$V1, pos = 1)
A continuación se muestra el grafico de CP2 vs CP3
plot(princomp(base, cor = T)$scores[, 2], princomp(base, cor = T)$scores[, 3],
     xlab = "Componente Principal 2", ylab = "Componente Principal 3")
title("Gráfico CP2 vs. CP3")
text(princomp(base, cor = T)$scores[, 2], princomp(base, cor = T)$scores[, 3],
     labels = paises$V1, pos = 1)