library(pacman)
p_load(haven, dplyr, factoextra, FactoMineR, readr, rgl, fpc, psych, corrplot)
library(haven)
library(dplyr)
library(factoextra)
library(FactoMineR)
library(readr)
library(rgl)
library(fpc)
PCA <- read.csv2(file.choose())
#Eliminamos columna Y
PCA <- PCA %>% select(-y)
#normalizar datos
data1 <- scale(PCA[,-1])
#Calcular factor de adecuación muestral de kaiser-meyer-olkin
psych::KMO(data1)
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = data1)
## Overall MSA = 0.35
## MSA for each item =
## x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15
## 0.27 0.24 0.45 0.65 0.59 0.45 0.27 0.41 0.26 0.41 0.67 0.61 0.63 0.33
El valor general obtenido fue de 0.35, lo que indica una muy baja adecuación, sugiriendo que las correlaciones entre las variables no son lo suficientemente fuertes para justificar un análisis factorial. Pero en esta caso vamos a omitir este análisis de la prueba KMO para seguir con el PCA.
#Analisis de Componentes
pca1 <- princomp(data1)
#Diagnostico
summary(pca1)
## Importance of components:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
## Standard deviation 1.6139659 1.4142807 1.3180334 1.2422062 1.06228700
## Proportion of Variance 0.1869983 0.1435887 0.1247101 0.1107736 0.08100888
## Cumulative Proportion 0.1869983 0.3305869 0.4552971 0.5660706 0.64707952
## Comp.6 Comp.7 Comp.8 Comp.9 Comp.10
## Standard deviation 0.95293238 0.90131652 0.86379483 0.82995600 0.77544689
## Proportion of Variance 0.06518881 0.05831812 0.05356364 0.04944917 0.04316711
## Cumulative Proportion 0.71226833 0.77058646 0.82415010 0.87359927 0.91676638
## Comp.11 Comp.12 Comp.13 Comp.14
## Standard deviation 0.68420115 0.58734013 0.53935853 0.235450651
## Proportion of Variance 0.03360597 0.02476442 0.02088353 0.003979685
## Cumulative Proportion 0.95037236 0.97513678 0.99602032 1.000000000
El primer componente explica el 18.7% de la varianza total, el segundo componente añade un 14.36%, y el tercero un 12.47%, acumulando entre los tres un 45.53% de la varianza. No existe un componente dominante que explique una mayoría significativa de la varianza por sí solo.
#Revizar varianza y eigenvalores
fviz_eig(pca1, choice = "variance")
Se observa un descenso pronunciado en los primeros tres componentes, seguido de una caída más gradual a partir del cuarto. Esta forma sugiere que los primeros tres o cuatro componentes capturan la mayor parte de la varianza relevante en los datos, mientras que los componentes posteriores aportan progresivamente menos información.
fviz_eig(pca1, choice="eigenvalue")
Se observa que el primer componente tiene un valor propio considerablemente mayor al resto, indicando que explica una porción importante de la varianza total. Así mismo los primeros 5 son mayores a 1, lo que cada uno de ellos aporta varianza significativa.
#Grafico de las puntuaciones factoriales y su representación
fviz_pca_ind(pca1,
col.ind = "cos2",
gradient.cols= c("red","yellow","green"),
repel = FALSE)
Los individuos cercanos al centro tienen menor aporte a estos ejes, mientras que los que se encuentran más alejados contribuyen más a su definición. La distribución dispersa de los puntos podría señalar la existencia de cierta heterogeneidad en los datos.
#Grafico de cargas
fviz_pca_var(pca1,
col.var = "contrib",
gradient.cols= c("red","yellow","green"),
repel= FALSE)
Las Variables en direcciones similares están correlacionadas positivamente, mientras que aquellas en direcciones opuestas tienen correlación negativa. Vemos que la variable x15 y x8 tienen buena correlación.
#Biplot de PCA
fviz_pca_biplot(pca1,
col.var = "red",
col.ind = "black")
pca1$loadings
##
## Loadings:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9 Comp.10
## x2 0.436 0.145 0.262 0.128 0.289 0.122 0.412 0.385
## x3 0.295 -0.271 -0.507 0.164 -0.318 -0.278
## x4 -0.411 -0.358 0.224 -0.206 0.155 -0.256 0.382 0.203
## x5 0.189 -0.345 0.449 0.197
## x6 -0.141 0.174 0.641 0.166 -0.261 -0.276
## x7 0.453 0.363 -0.325 0.205 -0.180 -0.131
## x8 -0.406 -0.200 0.117 -0.141 -0.125 -0.132 -0.422 -0.323 0.412
## x9 -0.127 0.315 0.220 -0.523 -0.352 0.529 0.110
## x10 0.391 0.101 0.340 -0.210 -0.476 -0.243 -0.178 -0.280
## x11 0.220 0.180 -0.139 0.619 -0.351 -0.220 0.484 0.215
## x12 0.366 -0.148 0.347 0.480 -0.363 -0.238 -0.196 0.462
## x13 -0.116 0.119 -0.390 0.144 -0.713 -0.190 0.441
## x14 -0.129 0.347 -0.395 0.154 -0.101 0.105 0.510 -0.336
## x15 -0.535 0.121 0.115 0.280 0.186 -0.242
## Comp.11 Comp.12 Comp.13 Comp.14
## x2 0.168 0.179 0.459
## x3 -0.152 0.435 0.384
## x4 -0.575
## x5 -0.769
## x6 0.587
## x7 -0.662
## x8 0.379 0.356
## x9 0.370
## x10 -0.379 0.367
## x11 -0.240
## x12 -0.206
## x13 -0.137 0.118
## x14 -0.518
## x15 -0.342 0.609
##
## 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.071 0.071 0.071 0.071 0.071 0.071 0.071 0.071 0.071
## Cumulative Var 0.071 0.143 0.214 0.286 0.357 0.429 0.500 0.571 0.643
## Comp.10 Comp.11 Comp.12 Comp.13 Comp.14
## SS loadings 1.000 1.000 1.000 1.000 1.000
## Proportion Var 0.071 0.071 0.071 0.071 0.071
## Cumulative Var 0.714 0.786 0.857 0.929 1.000
Los datos presentan una dispersión considerable sin agrupaciones claramente definidas. Las variables están distribuidas en diferentes direcciones: x2, x3 y x10 apuntan hacia la derecha (asociadas positivamente con Dim1), mientras que x7, x12 y x14 se orientan hacia la parte superior (correlacionadas con Dim2). Variables como x8 y x15 apuntan hacia la izquierda inferior, mostrando correlación negativa con ambos componentes.
La tabla de cargas confirma estos patrones, revelando que los primeros componentes capturan poca varianza individualmente (7.1% cada uno).
psych::cor.plot(data1)
El gráfico de correlación explica por qué el PCA muestra componentes con contribuciones similares a la varianza total (7.1% cada uno). La ausencia de bloques fuertes de correlación sugiere que las variables capturan diferentes aspectos del fenómeno estudiado, con poca redundancia.
#Determinante de la matriz de correlación
det(cor(data1))
## [1] 0.01003869
El determinante de la matriz de correlación es 0.01, un valor cercano a cero, lo que indica una matriz casi singular. Este valor bajo del determinante confirma lo observado en el PCA: no hay una estructura clara de correlación dominante, pero tampoco son variables completamente independientes.
#Rotación Varimax
pca3 <- psych::principal(data1, nfactors = 14, residuals = FALSE, rotate = "varimax",
scores = TRUE, oblique.scores = FALSE, method = "regression",
use = "pairwise", cor = "cor", weight = NULL)
pca3
## Principal Components Analysis
## Call: psych::principal(r = data1, nfactors = 14, residuals = FALSE,
## rotate = "varimax", scores = TRUE, oblique.scores = FALSE,
## method = "regression", use = "pairwise", cor = "cor", weight = NULL)
## Standardized loadings (pattern matrix) based upon correlation matrix
## RC7 RC1 RC12 RC4 RC8 RC6 RC10 RC5 RC13 RC3 RC9 RC11
## x2 0.15 0.94 0.05 0.03 -0.01 -0.06 -0.02 0.00 -0.01 0.02 -0.29 0.06
## x3 0.04 0.00 -0.94 -0.27 -0.02 -0.01 0.02 0.00 -0.02 0.01 -0.20 -0.04
## x4 0.01 -0.01 0.02 0.02 -0.02 0.05 -0.08 -0.18 0.94 -0.01 0.00 -0.01
## x5 0.05 0.07 0.03 -0.02 -0.04 -0.15 -0.16 0.00 -0.01 -0.24 0.02 0.94
## x6 0.06 -0.01 0.25 0.96 0.02 0.00 0.01 0.02 0.01 0.03 -0.04 -0.01
## x7 -0.02 0.02 0.05 0.03 0.26 0.00 0.04 0.00 -0.30 0.03 -0.01 -0.03
## x8 -0.18 -0.29 0.21 -0.04 0.05 -0.01 -0.04 -0.01 0.00 -0.02 0.92 0.02
## x9 0.00 -0.02 0.02 0.02 0.97 -0.02 0.02 0.03 -0.02 0.05 0.04 -0.04
## x10 0.97 0.14 0.01 0.10 0.00 0.02 0.00 -0.01 0.01 -0.02 -0.17 0.04
## x11 -0.01 0.00 0.00 0.01 0.03 0.01 0.07 0.99 -0.15 -0.02 -0.01 0.00
## x12 -0.01 -0.02 -0.01 0.01 0.02 0.00 0.98 0.07 -0.08 0.10 -0.03 -0.14
## x13 0.01 -0.06 0.01 0.00 -0.02 0.98 0.00 0.00 0.05 0.12 -0.01 -0.13
## x14 -0.03 0.01 0.00 0.03 0.05 0.12 0.10 -0.02 -0.01 0.96 -0.01 -0.23
## x15 -0.59 -0.57 0.40 0.22 0.04 0.04 0.02 0.01 0.01 0.04 -0.02 -0.08
## RC2 RC14 h2 u2 com
## x2 0.02 0.03 1 6.7e-16 1.3
## x3 -0.05 0.00 1 3.2e-15 1.3
## x4 -0.27 0.00 1 -3.8e-15 1.3
## x5 -0.02 -0.01 1 -2.4e-15 1.3
## x6 0.02 0.01 1 -4.4e-16 1.2
## x7 0.91 0.00 1 -1.6e-15 1.4
## x8 -0.01 0.00 1 8.9e-16 1.4
## x9 0.21 0.00 1 -1.8e-15 1.1
## x10 -0.01 0.04 1 5.6e-16 1.1
## x11 0.00 0.00 1 -4.4e-16 1.1
## x12 0.04 0.00 1 0.0e+00 1.1
## x13 0.00 0.00 1 -2.2e-15 1.1
## x14 0.02 0.00 1 0.0e+00 1.2
## x15 0.00 0.33 1 -2.2e-16 3.8
##
## RC7 RC1 RC12 RC4 RC8 RC6 RC10 RC5 RC13 RC3 RC9
## SS loadings 1.35 1.32 1.15 1.06 1.03 1.01 1.01 1.01 1.01 1.01 0.99
## Proportion Var 0.10 0.09 0.08 0.08 0.07 0.07 0.07 0.07 0.07 0.07 0.07
## Cumulative Var 0.10 0.19 0.27 0.35 0.42 0.49 0.57 0.64 0.71 0.78 0.85
## Proportion Explained 0.10 0.09 0.08 0.08 0.07 0.07 0.07 0.07 0.07 0.07 0.07
## Cumulative Proportion 0.10 0.19 0.27 0.35 0.42 0.49 0.57 0.64 0.71 0.78 0.85
## RC11 RC2 RC14
## SS loadings 0.98 0.96 0.11
## Proportion Var 0.07 0.07 0.01
## Cumulative Var 0.92 0.99 1.00
## Proportion Explained 0.07 0.07 0.01
## Cumulative Proportion 0.92 0.99 1.00
##
## Mean item complexity = 1.4
## Test of the hypothesis that 14 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0
## with the empirical chi square 0 with prob < NA
##
## Fit based upon off diagonal values = 1
Las proporciones de varianza son similares entre componentes (alrededor de 7-10% cada uno), confirmando la ausencia de factores dominantes. La varianza acumulada muestra que se necesitan todos los componentes para explicar la variabilidad total, consistente con el determinante bajo de la matriz de correlación.
#Matriz de coeficientes para las puntuaciones de los componentes
pca3$weights[,1]
## x2 x3 x4 x5 x6 x7
## -0.169532623 -0.036318859 -0.002654565 -0.039011917 -0.094504549 0.023880528
## x8 x9 x10 x11 x12 x13
## 0.123989058 -0.017685073 1.037755601 0.018357583 -0.003258667 -0.033043399
## x14 x15
## 0.029981105 -0.090754880
pca3$weights[,2]
## x2 x3 x4 x5 x6 x7
## 1.152686069 0.103893682 0.005580849 -0.076738423 0.054793462 -0.026794425
## x8 x9 x10 x11 x12 x13
## 0.352411271 0.011321063 -0.184435665 -0.002006969 0.028831631 0.079579988
## x14 x15
## -0.051728162 -0.100952795
pca3$weights[,3]
## x2 x3 x4 x5 x6
## -0.1018880407 -1.2408148010 -0.0387830129 -0.0440687615 -0.3612391996
## x7 x8 x9 x10 x11
## -0.0680407051 -0.3069853446 0.0110441634 0.0360748405 0.0018650237
## x12 x13 x14 x15
## 0.0034663499 -0.0270840581 0.0105593319 0.0003296792
pca3$weights[,4]
## x2 x3 x4 x5 x6 x7
## 0.044620588 0.325452373 -0.019080682 0.019230563 1.153073973 -0.015660412
## x8 x9 x10 x11 x12 x13
## 0.113470480 -0.014652478 -0.095195955 -0.022856421 -0.003312065 0.012834093
## x14 x15
## -0.031869859 -0.029162412
pca3$weights[,5]
## x2 x3 x4 x5 x6 x7
## 0.010780690 -0.010153425 -0.069951619 0.030989237 -0.013865786 -0.274667973
## x8 x9 x10 x11 x12 x13
## -0.059054119 1.109247341 -0.017648880 -0.044794608 -0.008774865 0.040967739
## x14 x15
## -0.046865705 -0.006799295
pca3$weights[,6]
## x2 x3 x4 x5 x6 x7
## 0.065129531 0.022632932 -0.056102908 0.129137675 0.011831592 -0.020255793
## x8 x9 x10 x11 x12 x13
## 0.021066286 0.039785725 -0.031133274 -0.021882099 0.034768485 1.062143021
## x14 x15
## -0.103807988 -0.008929348
pca3$weights[,7]
## x2 x3 x4 x5 x6 x7
## 0.022975104 -0.003141172 0.068162520 0.145331276 -0.002852179 -0.014877189
## x8 x9 x10 x11 x12 x13
## 0.035992148 -0.008567114 -0.003648669 -0.068367853 1.067426300 0.035077588
## x14 x15
## -0.073704101 -0.003100443
pca3$weights[,8]
## x2 x3 x4 x5 x6 x7
## -0.002030714 -0.001148583 0.185268616 -0.009328739 -0.021177572 0.065428574
## x8 x9 x10 x11 x12 x13
## 0.009254240 -0.042369128 0.016508382 1.055587018 -0.066585271 -0.021733592
## x14 x15
## 0.029030772 -0.003007233
pca3$weights[,9]
## x2 x3 x4 x5 x6
## 3.941499e-03 3.972929e-02 1.228166e+00 2.105203e-02 -2.158433e-02
## x7 x8 x9 x10 x11
## 3.818349e-01 1.641521e-02 -8.099428e-02 -1.716022e-03 2.169088e-01
## x12 x13 x14 x15
## 7.599320e-02 -6.453205e-02 1.157662e-02 -1.976951e-05
pca3$weights[,10]
## x2 x3 x4 x5 x6
## -0.0484187929 -0.0087752051 0.0111726098 0.2461682118 -0.0316332590
## x7 x8 x9 x10 x11
## -0.0049034434 -0.0004712202 -0.0486132583 0.0284392483 0.0314768537
## x12 x13 x14 x15
## -0.0772671631 -0.1105330781 1.1336900709 -0.0010212801
pca3$weights[,11]
## x2 x3 x4 x5 x6
## 0.3581359539 0.3241280907 0.0173920639 -0.0358921076 0.1308948044
## x7 x8 x9 x10 x11
## 0.0348459017 1.3101664229 -0.0694991037 0.1359270616 0.0115687708
## x12 x13 x14 x15
## 0.0448398944 0.0287208219 -0.0009609061 -0.0453944101
pca3$weights[,12]
## x2 x3 x4 x5 x6 x7
## -0.07123971 0.04356331 0.02096741 1.18863658 0.01906874 0.01953100
## x8 x9 x10 x11 x12 x13
## -0.03067488 0.03375049 -0.03906541 -0.01067058 0.16428171 0.14681706
## x14 x15
## 0.26364073 0.02615753
pca3$weights[,13]
## x2 x3 x4 x5 x6 x7
## -0.027964591 0.073184904 0.422515690 0.021200203 -0.019534741 1.303781456
## x8 x9 x10 x11 x12 x13
## 0.036621888 -0.339229332 0.027341460 0.088386391 -0.015314805 -0.028049566
## x14 x15
## -0.004401762 0.004249349
pca3$weights[,14]
## x2 x3 x4 x5 x6 x7
## 1.793035614 1.429149423 0.051858065 0.056980022 -0.379149221 0.125455165
## x8 x9 x10 x11 x12 x13
## 1.212752510 -0.135094070 1.552735621 0.007524764 0.027411582 0.019192858
## x14 x15
## -0.078067556 2.717360829
La matriz de coeficientes muestra cómo cada variable contribuye a los diferentes componentes principales. Puntos clave:
Cada componente está principalmente asociado a una variable específica, confirmando los resultados de la rotación Varimax.
Los datos presentan una estructura compleja sin patrones dominantes (determinante 0.01), donde cada componente principal explica una proporción similar de varianza (7-10%).
La rotación Varimax reveló que cada componente se asocia principalmente con una variable específica, lo que facilita la interpretación pero confirma la baja redundancia.
Los 14 componentes son necesarios para explicar la varianza total, indicando que las variables originales capturan diferentes aspectos del fenómeno estudiado.
library(readxl)
Pobla1 <- read_excel(file.choose())
Pobla2 <- read_excel(file.choose())
#normalizar datos
data1 <- scale(Pobla1[,-1])
data2 <- scale(Pobla2[,-1])
#Calcular factor de adecuación muestral de kaiser-meyer-olkin
psych::KMO(data1)
## Error in solve.default(r) :
## sistema es computacionalmente singular: número de condición recíproco = 3.40445e-18
## matrix is not invertible, image not found
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = data1)
## Overall MSA = 0.5
## MSA for each item =
## Census Resident Total Population - AB:Qr-1-2000
## 0.5
## Resident Total Population Estimate - Jul-1-2000
## 0.5
## Net Domestic Migration - Jul-1-2000
## 0.5
## Federal/Civilian Movement from Abroad - Jul-1-2000
## 0.5
## Net International Migration - Jul-1-2000
## 0.5
## Period Births - Jul-1-2000
## 0.5
## Period Deaths - Jul-1-2000
## 0.5
## Resident Under 65 Population Estimate - Jul-1-2000
## 0.5
## Resident 65 Plus Population Estimate - Jul-1-2000
## 0.5
## Residual - Jul-1-2000
## 0.5
psych::KMO(data2)
## Error in solve.default(r) :
## sistema es computacionalmente singular: número de condición recíproco = 6.71729e-18
## matrix is not invertible, image not found
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = data2)
## Overall MSA = 0.5
## MSA for each item =
## Census Resident Total Population - AB:Qr-1-2000
## 0.5
## Resident Total Population Estimate - Jul-1-2001
## 0.5
## Net Domestic Migration - Jul-1-2001
## 0.5
## Federal/Civilian Movement from Abroad - Jul-1-2001
## 0.5
## Net International Migration - Jul-1-2001
## 0.5
## Period Births - Jul-1-2001
## 0.5
## Period Deaths - Jul-1-2001
## 0.5
## Resident Under 65 Population Estimate - Jul-1-2001
## 0.5
## Resident 65 Plus Population Estimate - Jul-1-2001
## 0.5
## Residual - Jul-1-2001
## 0.5
Para el primer conjunto de datos (2000), el valor KMO global es de 0.5, lo que indica una adecuación muestral mediocre pero aceptable para realizar un análisis factorial. El mismo caso pasa para el 2001, lo que nos dice que los datos siguen una tendencia homogénea.
#Analisis de Componentes
pca1 <- princomp(data1)
pca2 <- princomp(data2)
#diagnostico
summary(pca1)
## Importance of components:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
## Standard deviation 2.6907367 1.1607536 0.8280683 0.6125685 0.33421800
## Proportion of Variance 0.7384865 0.1374296 0.0699411 0.0382745 0.01139357
## Cumulative Proportion 0.7384865 0.8759161 0.9458572 0.9841317 0.99552529
## Comp.6 Comp.7 Comp.8 Comp.9 Comp.10
## Standard deviation 0.204077430 0.0391252568 2.629360e-02 0 0
## Proportion of Variance 0.004248055 0.0001561401 7.051803e-05 0 0
## Cumulative Proportion 0.999773342 0.9999294820 1.000000e+00 1 1
summary(pca2)
## Importance of components:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
## Standard deviation 2.6913512 1.2878579 0.67260810 0.55374640 0.311095926
## Proportion of Variance 0.7388239 0.1691750 0.04614497 0.03127678 0.009871629
## Cumulative Proportion 0.7388239 0.9079988 0.95414381 0.98542058 0.995292213
## Comp.6 Comp.7 Comp.8 Comp.9
## Standard deviation 0.209708041 0.0378445029 2.729601e-02 1.917101e-04
## Proportion of Variance 0.004485701 0.0001460851 7.599735e-05 3.748781e-09
## Cumulative Proportion 0.999777914 0.9999239989 1.000000e+00 1.000000e+00
## Comp.10
## Standard deviation 0
## Proportion of Variance 0
## Cumulative Proportion 1
La concentración de la varianza en los primeros componentes indica que la estructura demográfica subyacente se mantuvo estable entre 2000 y 2001, con muy pocas variaciones en cómo se relacionan las variables poblacionales.
#Revisar varianza y eigenvalores
fviz_eig(pca1, choice = "variance")
fviz_eig(pca2, choice = "variance")
Ambos gráficos muestran un patrón muy similar con una pronunciada caída después del primer componente, que representa aproximadamente el 70% de la varianza total.
fviz_eig(pca1, choice="eigenvalue")
fviz_eig(pca2, choice="eigenvalue")
Se observa que el primer componente tiene un valor propio considerablemente mayor al resto, indicando que explica una porción importante de la varianza total. Así mismo los primeros 2 son mayores a 1, lo que cada uno de ellos aporta varianza significativa.
#Grafico de las puntuaciones factoriales y su representación
fviz_pca_ind(pca1,
col.ind = "cos2",
gradient.cols= c("red","yellow","green"),
repel = FALSE)
fviz_pca_ind(pca2,
col.ind = "cos2",
gradient.cols= c("red","yellow","green"),
repel = FALSE)
En ambos gráficos, el componente 1 (eje X) explica aproximadamente el 71-74% de la varianza, mientras que el componente 2 (eje Y) explica alrededor del 15-19%.
Se observa una clara dispersión de los puntos, con una concentración significativa en el cuadrante izquierdo del gráfico, que representa valores negativos o bajos en el primer componente principal.
La distribución similar entre ambos años sugiere estabilidad en las estructuras demográficas subyacentes.
#Grafico de cargas
fviz_pca_var(pca1,
col.var = "contrib",
gradient.cols= c("red","yellow","green"),
repel= FALSE)
fviz_pca_var(pca2,
col.var = "contrib",
gradient.cols= c("red","yellow","green"),
repel= FALSE)
En 2000, el primer componente está fuertemente asociado con variables de crecimiento poblacional (poblaciones totales, por grupos de edad), todas apuntando hacia la derecha del gráfico con alta carga positiva. Mientras tanto, variables como migración doméstica y residual muestran cargas negativas, indicando una relación inversa.
Para 2001, la estructura cambia: el movimiento civil/federal desde el extranjero gana mayor importancia en el segundo componente, mostrando una fuerte carga negativa, mientras que las variables de población total y por grupos de edad mantienen su comportamiento positivo en el primer componente.
#Biplot de PCA
fviz_pca_biplot(pca1,
col.var = "red",
col.ind = "black")
pca1$loadings
##
## Loadings:
## Comp.1 Comp.2 Comp.3 Comp.4
## Census Resident Total Population - AB:Qr-1-2000 0.367
## Resident Total Population Estimate - Jul-1-2000 0.367
## Net Domestic Migration - Jul-1-2000 -0.660 0.669 0.256
## Federal/Civilian Movement from Abroad - Jul-1-2000 0.278 -0.343 0.124 -0.799
## Net International Migration - Jul-1-2000 0.347 -0.102 -0.209
## Period Births - Jul-1-2000 0.365
## Period Deaths - Jul-1-2000 0.355 0.122 0.292
## Resident Under 65 Population Estimate - Jul-1-2000 0.367
## Resident 65 Plus Population Estimate - Jul-1-2000 0.354 0.149 0.288
## Residual - Jul-1-2000 -0.654 -0.698 0.255
## Comp.5 Comp.6 Comp.7 Comp.8
## Census Resident Total Population - AB:Qr-1-2000 0.191 0.349
## Resident Total Population Estimate - Jul-1-2000 0.193 0.346
## Net Domestic Migration - Jul-1-2000 -0.176 0.107
## Federal/Civilian Movement from Abroad - Jul-1-2000 0.323 -0.214
## Net International Migration - Jul-1-2000 -0.878 -0.143 0.170
## Period Births - Jul-1-2000 0.547 -0.666 -0.347
## Period Deaths - Jul-1-2000 0.266 -0.323 -0.397 0.658
## Resident Under 65 Population Estimate - Jul-1-2000 0.299 0.386 0.118
## Resident 65 Plus Population Estimate - Jul-1-2000 -0.590 -0.633
## Residual - Jul-1-2000
## Comp.9 Comp.10
## Census Resident Total Population - AB:Qr-1-2000 0.807 0.203
## Resident Total Population Estimate - Jul-1-2000 -0.540 0.634
## Net Domestic Migration - Jul-1-2000
## Federal/Civilian Movement from Abroad - Jul-1-2000
## Net International Migration - Jul-1-2000
## Period Births - Jul-1-2000
## Period Deaths - Jul-1-2000
## Resident Under 65 Population Estimate - Jul-1-2000 -0.237 -0.740
## Resident 65 Plus Population Estimate - Jul-1-2000 -0.101
## Residual - Jul-1-2000
##
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9
## SS loadings 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
## Proportion Var 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
## Cumulative Var 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
## Comp.10
## SS loadings 1.0
## Proportion Var 0.1
## Cumulative Var 1.0
fviz_pca_biplot(pca2,
col.var = "red",
col.ind = "black")
pca2$loadings
##
## Loadings:
## Comp.1 Comp.2 Comp.3 Comp.4
## Census Resident Total Population - AB:Qr-1-2000 0.365
## Resident Total Population Estimate - Jul-1-2001 0.366
## Net Domestic Migration - Jul-1-2001 -0.685 0.591 0.260
## Federal/Civilian Movement from Abroad - Jul-1-2001 -0.274 0.303 0.534 -0.698
## Net International Migration - Jul-1-2001 0.346 -0.253 -0.242
## Period Births - Jul-1-2001 0.364
## Period Deaths - Jul-1-2001 0.354 0.311
## Resident Under 65 Population Estimate - Jul-1-2001 0.366
## Resident 65 Plus Population Estimate - Jul-1-2001 0.355 0.319
## Residual - Jul-1-2001 0.133 -0.644 -0.294 -0.617
## Comp.5 Comp.6 Comp.7 Comp.8
## Census Resident Total Population - AB:Qr-1-2000 0.175 0.369
## Resident Total Population Estimate - Jul-1-2001 0.184 0.354
## Net Domestic Migration - Jul-1-2001 -0.324
## Federal/Civilian Movement from Abroad - Jul-1-2001 -0.146 0.196
## Net International Migration - Jul-1-2001 -0.787 -0.307 -0.108 0.176
## Period Births - Jul-1-2001 0.587 -0.656 -0.298
## Period Deaths - Jul-1-2001 0.360 -0.259 -0.365 0.663
## Resident Under 65 Population Estimate - Jul-1-2001 0.283 0.403 0.103
## Resident 65 Plus Population Estimate - Jul-1-2001 0.148 -0.552 -0.653
## Residual - Jul-1-2001 0.316
## Comp.9 Comp.10
## Census Resident Total Population - AB:Qr-1-2000 0.828
## Resident Total Population Estimate - Jul-1-2001 -0.373 0.746
## Net Domestic Migration - Jul-1-2001
## Federal/Civilian Movement from Abroad - Jul-1-2001
## Net International Migration - Jul-1-2001
## Period Births - Jul-1-2001
## Period Deaths - Jul-1-2001
## Resident Under 65 Population Estimate - Jul-1-2001 -0.414 -0.660
## Resident 65 Plus Population Estimate - Jul-1-2001
## Residual - Jul-1-2001
##
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9
## SS loadings 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
## Proportion Var 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
## Cumulative Var 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
## Comp.10
## SS loadings 1.0
## Proportion Var 0.1
## Cumulative Var 1.0
Para 2000, el primer componente (que explica 71% de la varianza) muestra cargas positivas similares (0.37-0.39) para población total, nacimientos, muertes y estimaciones por grupos de edad, indicando que este componente representa principalmente el tamaño poblacional general.
En 2001, la estructura mantiene similitudes pero con cambios notables: las cargas de las variables poblacionales en el primer componente permanecen estables (0.35-0.37), pero la migración doméstica ahora carga negativamente (-0.68) en el segundo componente.
psych::cor.plot(data1)
psych::cor.plot(data2)
Los datos de 2000 presentan correlaciones positivas fuertes (0.92-1.00) entre población total, nacimientos, muertes y estimaciones poblacionales, indicando una estructura demográfica altamente cohesionada donde el crecimiento poblacional está íntimamente vinculado con los eventos vitales.
En 2001 aparece un cambio significativo: el “Movimiento desde el Extranjero” muestra correlaciones negativas moderadas a fuertes (-0.60 a -0.72) con las variables de población, nacimientos y muertes, sugiriendo que este factor se comporta de manera inversamente proporcional al crecimiento poblacional general.
#Determinante de la matriz de correlación
det(cor(data1))
## [1] -8.80948e-41
det(cor(data2))
## [1] -1.702286e-32
El determinante de la matriz de correlación en ambos conjuntos de datos está extremadamente cerca de cero (aproximadamente -5.72e-25 para 2000 y -1.70e-32 para 2001), lo que indica una multicolinealidad muy alta entre las variables.
#Rotación Varimax
pca3 <- psych::principal(data1, nfactors = 2, residuals = FALSE, rotate = "varimax",
scores = TRUE, oblique.scores = FALSE, method = "regression",
use = "pairwise", cor = "cor", weight = NULL)
## Warning in cor.smooth(r): Matrix was not positive definite, smoothing was done
## In factor.stats, I could not find the RMSEA upper bound . Sorry about that
## Warning in psych::principal(data1, nfactors = 2, residuals = FALSE, rotate =
## "varimax", : The matrix is not positive semi-definite, scores found from
## Structure loadings
pca3
## Principal Components Analysis
## Call: psych::principal(r = data1, nfactors = 2, residuals = FALSE,
## rotate = "varimax", scores = TRUE, oblique.scores = FALSE,
## method = "regression", use = "pairwise", cor = "cor", weight = NULL)
## Standardized loadings (pattern matrix) based upon correlation matrix
## RC1 RC2 h2 u2 com
## Census Resident Total Population - AB:Qr-1-2000 1.00 -0.02 0.99 0.0059 1.0
## Resident Total Population Estimate - Jul-1-2000 1.00 -0.02 0.99 0.0058 1.0
## Net Domestic Migration - Jul-1-2000 -0.26 0.77 0.66 0.3421 1.2
## Federal/Civilian Movement from Abroad - Jul-1-2000 0.74 0.42 0.73 0.2692 1.6
## Net International Migration - Jul-1-2000 0.94 0.04 0.89 0.1128 1.0
## Period Births - Jul-1-2000 0.99 0.05 0.99 0.0142 1.0
## Period Deaths - Jul-1-2000 0.97 -0.08 0.94 0.0563 1.0
## Resident Under 65 Population Estimate - Jul-1-2000 1.00 -0.01 0.99 0.0061 1.0
## Resident 65 Plus Population Estimate - Jul-1-2000 0.97 -0.07 0.94 0.0623 1.0
## Residual - Jul-1-2000 0.20 0.77 0.63 0.3663 1.1
##
## RC1 RC2
## SS loadings 7.38 1.38
## Proportion Var 0.74 0.14
## Cumulative Var 0.74 0.88
## Proportion Explained 0.84 0.16
## Cumulative Proportion 0.84 1.00
##
## Mean item complexity = 1.1
## Test of the hypothesis that 2 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0.06
## with the empirical chi square 15.64 with prob < 0.94
##
## Fit based upon off diagonal values = 0.99
pca4 <- psych::principal(data2, nfactors = 2, residuals = FALSE, rotate = "varimax",
scores = TRUE, oblique.scores = FALSE, method = "regression",
use = "pairwise", cor = "cor", weight = NULL)
## In factor.stats, I could not find the RMSEA upper bound . Sorry about that
## Warning in psych::principal(data2, nfactors = 2, residuals = FALSE, rotate =
## "varimax", : The matrix is not positive semi-definite, scores found from
## Structure loadings
pca4
## Principal Components Analysis
## Call: psych::principal(r = data2, nfactors = 2, residuals = FALSE,
## rotate = "varimax", scores = TRUE, oblique.scores = FALSE,
## method = "regression", use = "pairwise", cor = "cor", weight = NULL)
## Standardized loadings (pattern matrix) based upon correlation matrix
## RC1 RC2 h2 u2 com
## Census Resident Total Population - AB:Qr-1-2000 1.00 0.03 1.00 0.0050 1.0
## Resident Total Population Estimate - Jul-1-2001 1.00 0.04 1.00 0.0050 1.0
## Net Domestic Migration - Jul-1-2001 -0.22 0.87 0.81 0.1928 1.1
## Federal/Civilian Movement from Abroad - Jul-1-2001 -0.69 -0.48 0.71 0.2878 1.8
## Net International Migration - Jul-1-2001 0.94 0.09 0.89 0.1133 1.0
## Period Births - Jul-1-2001 0.99 0.07 0.98 0.0166 1.0
## Period Deaths - Jul-1-2001 0.97 0.00 0.94 0.0611 1.0
## Resident Under 65 Population Estimate - Jul-1-2001 1.00 0.04 0.99 0.0051 1.0
## Resident 65 Plus Population Estimate - Jul-1-2001 0.97 0.04 0.94 0.0645 1.0
## Residual - Jul-1-2001 0.26 0.87 0.83 0.1689 1.2
##
## RC1 RC2
## SS loadings 7.31 1.77
## Proportion Var 0.73 0.18
## Cumulative Var 0.73 0.91
## Proportion Explained 0.80 0.20
## Cumulative Proportion 0.80 1.00
##
## Mean item complexity = 1.1
## Test of the hypothesis that 2 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0.04
## with the empirical chi square 7.8 with prob < 1
##
## Fit based upon off diagonal values = 1
Para 2000, el primer componente (RC1) explica 71% de la varianza y agrupa fuertemente las variables poblacionales (cargas >0.94), mientras que el segundo componente (RC2) captura 15% de la varianza y está definido principalmente por la migración doméstica y el residual (cargas 0.77).
En 2001 la estructura se mantiene similar pero con cambios notables: el primer componente explica 73% de la varianza, mientras que el segundo componente muestra una redistribución más clara entre migración doméstica (0.87) y movimiento desde el extranjero (-0.48).
#Matriz de coeficientes para las puntuaciones de los componentes
pca3$weights[,1]
## Census Resident Total Population - AB:Qr-1-2000
## 0.9968697
## Resident Total Population Estimate - Jul-1-2000
## 0.9969223
## Net Domestic Migration - Jul-1-2000
## -0.2636335
## Federal/Civilian Movement from Abroad - Jul-1-2000
## 0.7433061
## Net International Migration - Jul-1-2000
## 0.9410233
## Period Births - Jul-1-2000
## 0.9916210
## Period Deaths - Jul-1-2000
## 0.9683729
## Resident Under 65 Population Estimate - Jul-1-2000
## 0.9968932
## Resident 65 Plus Population Estimate - Jul-1-2000
## 0.9655511
## Residual - Jul-1-2000
## 0.1960313
pca3$weights[,2]
## Census Resident Total Population - AB:Qr-1-2000
## -0.01959089
## Resident Total Population Estimate - Jul-1-2000
## -0.01779679
## Net Domestic Migration - Jul-1-2000
## 0.76709127
## Federal/Civilian Movement from Abroad - Jul-1-2000
## 0.42229304
## Net International Migration - Jul-1-2000
## 0.04124540
## Period Births - Jul-1-2000
## 0.05018618
## Period Deaths - Jul-1-2000
## -0.07748049
## Resident Under 65 Population Estimate - Jul-1-2000
## -0.01011621
## Resident 65 Plus Population Estimate - Jul-1-2000
## -0.07357619
## Residual - Jul-1-2000
## 0.77152787
pca4$weights[,1]
## Census Resident Total Population - AB:Qr-1-2000
## 0.9970764
## Resident Total Population Estimate - Jul-1-2001
## 0.9967382
## Net Domestic Migration - Jul-1-2001
## -0.2198186
## Federal/Civilian Movement from Abroad - Jul-1-2001
## -0.6939330
## Net International Migration - Jul-1-2001
## 0.9374646
## Period Births - Jul-1-2001
## 0.9891624
## Period Deaths - Jul-1-2001
## 0.9689418
## Resident Under 65 Population Estimate - Jul-1-2001
## 0.9966814
## Resident 65 Plus Population Estimate - Jul-1-2001
## 0.9662977
## Residual - Jul-1-2001
## 0.2587095
pca4$weights[,2]
## Census Resident Total Population - AB:Qr-1-2000
## 0.029013551
## Resident Total Population Estimate - Jul-1-2001
## 0.039230578
## Net Domestic Migration - Jul-1-2001
## 0.871163590
## Federal/Civilian Movement from Abroad - Jul-1-2001
## -0.480242724
## Net International Migration - Jul-1-2001
## 0.088623436
## Period Births - Jul-1-2001
## 0.070762827
## Period Deaths - Jul-1-2001
## 0.004379853
## Resident Under 65 Population Estimate - Jul-1-2001
## 0.038656843
## Resident 65 Plus Population Estimate - Jul-1-2001
## 0.042247966
## Residual - Jul-1-2001
## 0.874191478
Para 2000, el primer componente muestra coeficientes altos (>0.94) para variables poblacionales, nacimientos, muertes y estimaciones por edad, mientras que la migración doméstica presenta coeficiente negativo (-0.26). El segundo componente está dominado por migración doméstica (0.77) y residual (0.77).
En 2001, el cambio más significativo aparece en el “Movimiento Federal/Civil desde el Extranjero” que presenta un coeficiente negativo fuerte (-0.69) en el primer componente y negativo moderado (-0.48) en el segundo, evidenciando su comportamiento inversamente proporcional al resto de variables demográficas.
El análisis PCA revela una estructura demográfica estable entre 2000-2001 compuesta por dos dimensiones principales: (1) un componente dominante (71-73% de varianza) que agrupa variables de tamaño poblacional, nacimientos, muertes y estimaciones por edad, y (2) un componente secundario (15-18%) que captura dinámicas migratorias. El cambio más notable entre ambos períodos es la transición del “Movimiento desde el Extranjero” que pasó de correlacionarse positivamente con las variables poblacionales en 2000 a mostrar correlaciones negativas en 2001, sugiriendo un cambio estructural en los patrones migratorios externos y su relación con el crecimiento demográfico general.