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