Practica 3 Computocientifico

Author

Alfredo Israel Becerra Ortiz

Análisis PCA

En esta práctica haremos análisis de diferentes bases de datos con el objetivo de hacer un modelo de componentes principales, viendo cuáles son las variables más importantes y que más efecto tienen en representar el evento.

Data_PCA

A pesar de que no tenemos conocimiento de donde proviene la información o qué representa cada uno de los campos de las observaciones, podemos hacer el análisis de PCA. Comenzando por ver cuál es la estructura de nuestra base de datos.

Estructura y análisis exploratorio inicial

data1<-read.csv2("C:/Users/wars_/Documents/Universidad/Actuaría/2025-A/Computo_cientifico/Practica_2_aibo/data_pca.csv")

kable(head(data1,20), 
      caption = "Data PCA",
      booktabs = TRUE, 
      linesep = "") %>%
  kable_styling(latex_options = c("striped", "hold_position", "scale_down"))
Data PCA
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 y
-4.44 0.99 2.92 3.24 10.02 2.65 -2.10 -1.76 -3.24 6.95 -1.08 -2.11 -4.92 -13.50 -3.09 -0.47
13.92 1.51 2.93 3.81 -3.15 2.20 -5.39 1.84 -2.70 -0.39 0.02 5.01 -2.22 -0.55 -0.98 0.99
4.57 0.48 -0.62 4.52 1.41 1.35 4.95 1.51 4.12 -1.10 0.46 -0.85 2.38 -5.09 0.70 1.36
6.58 1.48 -0.90 1.74 0.79 1.98 4.10 0.93 0.71 -2.11 -1.80 5.43 2.15 -0.24 0.57 1.43
1.78 2.84 3.61 0.05 -0.33 2.49 0.72 1.28 2.06 3.86 0.57 3.33 -1.26 0.64 -6.14 1.03
4.73 -0.30 -1.23 4.98 -0.09 1.24 -4.92 3.71 -0.58 -0.94 -2.51 8.97 0.97 -0.30 1.61 1.02
0.77 2.94 2.24 4.58 9.39 3.94 -2.53 -1.58 0.37 5.51 0.11 2.68 -6.16 1.54 -3.45 1.43
4.59 -3.77 -0.88 0.70 0.27 3.81 4.26 3.60 4.82 -5.86 -0.81 0.73 -0.21 -1.65 6.14 0.75
10.62 -0.39 2.02 -1.78 0.96 1.48 4.10 3.82 5.84 1.34 2.01 3.25 -5.24 -2.69 -1.98 1.29
0.34 -2.83 2.47 9.82 1.24 3.53 -1.90 -1.31 1.29 0.40 0.53 1.02 10.92 -1.66 5.55 1.85
8.67 -1.14 -1.67 -0.26 -2.00 2.08 0.65 4.80 0.16 -1.35 1.22 6.81 -1.14 2.89 -0.03 1.49
13.48 -1.11 -0.92 2.00 -7.21 0.95 5.03 4.81 0.49 -9.22 -0.08 6.73 -0.93 11.34 5.19 2.10
3.17 -0.71 3.01 4.76 3.73 0.96 -6.70 0.30 3.03 -2.03 -0.19 4.02 -0.73 2.04 1.24 1.30
7.09 1.67 2.19 -0.66 1.69 4.19 5.14 -1.88 5.03 1.07 -0.44 6.94 -2.16 1.59 -0.53 2.09
18.62 -0.46 2.29 -0.85 1.96 2.53 0.32 2.80 1.80 0.05 0.56 2.51 -6.51 0.31 -0.47 1.79
15.03 -0.82 3.30 5.67 2.39 0.95 -1.83 2.74 2.37 -0.97 -0.69 2.32 -5.38 6.10 -1.00 2.03
15.13 0.51 -0.84 0.43 -6.83 2.62 3.44 1.28 2.24 -3.99 -0.37 6.57 -2.48 4.94 2.96 1.94
-1.05 1.63 -3.73 2.91 5.15 0.74 -0.33 3.59 2.65 2.87 1.97 -1.62 -0.87 -6.77 -2.19 0.36
5.81 1.01 1.67 1.57 0.07 0.91 3.25 1.90 0.06 -3.04 0.24 1.76 -0.49 -1.00 -0.98 0.76
7.99 -1.03 2.83 6.93 -0.66 -0.14 4.06 2.08 3.86 1.55 -0.57 0.48 -0.31 -5.83 -1.69 1.37
La base de datos data_pca tiene un total de 16 variables con la última siendo la variable dependiente con un número de 200 observaciones.

Gráfico de correlación

Hacer un gráfico de correlación dentro de las variables nos puede ayudar a ver si existe alguna correlación entre las variables significativo para ver si es conveniente hacer una reducción de variables por componntes principales, si no hubiera relación entre las variables, no sería posible hacer la reducción ya que implicaría cierta pérdida de información con el modelo, cierto grado de redundancia se necesita para hacer el PCA.

psych::cor.plot(data1[,-16])

Como podemos ver si hay una cantidad de variables que tienen cierta correlación con otras, ya sea de forma positiva o negativa, indicativo de que si es posible hacer el modelo.

Normalizar datos

data1_1<-scale(data1[,-16])
kable(head(data1_1,5), 
      caption = "Data PCA normalizado",
      booktabs = TRUE, 
      linesep = "") %>%
  kable_styling(latex_options = c("striped", "hold_position", "scale_down"))
Data PCA normalizado
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15
-2.2294241 0.4624393 0.4820123 0.4336376 2.2397173 0.4562603 -1.2341622 -1.5779527 -2.7992733 2.2460683 -1.1221989 -1.9812145 -1.1821112 -2.6128183 -1.1766079
1.6199594 0.7625372 0.4858729 0.6028765 -1.2851416 0.1839203 -2.2451787 0.1070191 -2.5036044 0.0555974 -0.1665445 0.5845374 -0.3432277 -0.0887987 -0.3603116
-0.3403748 0.1681125 -0.8846319 0.8136829 -0.0646893 -0.3304997 0.9323016 -0.0474366 1.2305852 -0.1562874 0.2157173 -1.5271629 1.0859814 -0.9736674 0.2896304
0.0810446 0.7452239 -0.9927280 -0.0117280 -0.2306280 0.0507763 0.6710968 -0.3189043 -0.6365096 -0.4577010 -1.7477182 0.7358879 1.0145209 -0.0283782 0.2393373
-0.9253302 1.5300953 0.7483921 -0.5135065 -0.5303882 0.3594283 -0.3675767 -0.1550876 0.1026628 1.3239218 0.3112827 -0.0208648 -0.0449579 0.1431382 -2.3565622

PCA

Primero, calcularemos el factor de adecuación muestral de Kaiser-Meyer-Olkin.

KMO1<-psych::KMO(data1)
KMO1
Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = data1)
Overall MSA =  0.14
MSA for each item = 
  x1   x2   x3   x4   x5   x6   x7   x8   x9  x10  x11  x12  x13  x14  x15    y 
0.11 0.24 0.13 0.08 0.12 0.13 0.12 0.17 0.14 0.14 0.07 0.06 0.07 0.17 0.29 0.17 
Hay un total de  0  variables que tienen un valor mayor a 0.5
[1] "No se recomienda utilizar el KMO para elegir las variables más significativas."
[1] "No se recomienda utilizar el KMO para elegir las variables más significativas."

Diagnóstico

pca<-princomp(data1_1)
summary(pca)
Importance of components:
                          Comp.1    Comp.2    Comp.3    Comp.4     Comp.5
Standard deviation     1.6220588 1.4501268 1.3332930 1.2434264 1.15529908
Proportion of Variance 0.1762864 0.1408957 0.1191069 0.1035919 0.08942821
Cumulative Proportion  0.1762864 0.3171821 0.4362890 0.5398809 0.62930907
                           Comp.6     Comp.7     Comp.8    Comp.9    Comp.10
Standard deviation     1.05569426 0.90471763 0.88908929 0.8622762 0.80999883
Proportion of Variance 0.07467272 0.05484181 0.05296347 0.0498171 0.04395967
Cumulative Proportion  0.70398179 0.75882360 0.81178707 0.8616042 0.90556384
                         Comp.11    Comp.12    Comp.13   Comp.14     Comp.15
Standard deviation     0.7012045 0.59518243 0.53958339 0.4662240 0.234552581
Proportion of Variance 0.0329439 0.02373482 0.01950755 0.0145638 0.003686091
Cumulative Proportion  0.9385077 0.96224255 0.98175010 0.9963139 1.000000000

La tabla anterior nos muestra cuáles son las variables con mayor significancia, medida en términos de varianza, mientras más varianza, más significativa es para el evento analizado.

En el caso particular de estos datos podemos ver que al ser muchas variables, la varianza es menor en cada variable que en otras bases de datos que ya hemos analizado. Donde ninguna de las variables excede una varianza del 20%.

Revisar varianza y eigenvalores

Si hiciéramos el “Método del codo”, la reducción de nuestras variables sería hasta la sexta, donde se hace un cambio de inclinación.

fviz_eig(pca,choice="eigenvalue")

Tenemos el mismo comportamiento de las variables con el análisis de eigenvalores.

Análisis gráfico

Coseno cuadrado:

Se utiliza para medir la calidad de la representación de las variables originales en el espacio de los componentes principales. Específicamente, el coseno cuadrado de una variable en un componente principal es el cuadrado del coseno del ángulo entre la variable original y el componente principal.

Gráfico de las puntuaciones factoriales y su representación

fviz_pca_ind(pca,col.ind="cos2",gradient.cols=c("red","yellow","green"),repel=FALSE)

Biplot de flechas de componentes

Para visualizar las puntuaciones se emplea un biplot La flecha indica la dirección en la que contribuyen las ubican los sujetos estudiados.

Representacion de los componentes en relación con todas las observaciones, sin embargo, para poder ver los componentes de forma más clara, veremos sus vectores sin las observaciones.

Podemos ver cuáles son los componentes que más contribuyen al comportamiento de nuestro modelo, justificando nuestra elección previa de los componentes a través de las varianzas.

Resultados del pca rotando los factores

La rotación más común es varimax. En un PCA, los componentes principales iniciales pueden ser difíciles de intrpretar porque cada variable puede tener cargas significativas en varios componentes. Al aplicar la rotación varimax, se ajustan las cargas de manera que cada variable tenga una carga alta en un solo componente, haciendo que la estructura sea más simple y clara.

pca2 <- psych::principal(data1_1, nfactors=6,residuals=FALSE, rotate="varimax",
                         scores=TRUE,oblique.scores=FALSE,method="regression",
                         use="pairwise",cor="cor",weight=NULL)

pca2
Principal Components Analysis
Call: psych::principal(r = data1_1, nfactors = 6, 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   RC4   RC3   RC6   RC5   h2   u2 com
x1  -0.06  0.57 -0.04  0.06 -0.10 -0.72 0.86 0.14 2.0
x2   0.80 -0.05  0.07  0.02  0.00 -0.15 0.68 0.32 1.1
x3   0.22  0.08 -0.84 -0.08  0.06  0.01 0.77 0.23 1.2
x4  -0.01  0.06  0.07 -0.50 -0.65  0.12 0.69 0.31 2.0
x5   0.10 -0.85  0.03 -0.03 -0.06 -0.07 0.75 0.25 1.1
x6   0.12  0.07  0.87  0.00  0.04  0.03 0.78 0.22 1.1
x7   0.02  0.03  0.05  0.87  0.21 -0.01 0.80 0.20 1.1
x8  -0.73 -0.13  0.12  0.11 -0.12  0.00 0.59 0.41 1.2
x9  -0.06  0.10  0.04  0.77 -0.12  0.00 0.63 0.37 1.1
x10  0.76 -0.07  0.13  0.02 -0.08  0.13 0.62 0.38 1.2
x11 -0.02 -0.07  0.03 -0.04  0.78  0.02 0.61 0.39 1.0
x12  0.02  0.41  0.00 -0.01  0.54  0.06 0.46 0.54 1.9
x13 -0.05  0.31  0.00 -0.01 -0.05  0.88 0.87 0.13 1.3
x14  0.03  0.80  0.04  0.09 -0.03  0.04 0.66 0.34 1.0
x15 -0.77  0.15  0.42 -0.03  0.07  0.00 0.80 0.20 1.7

                       RC1  RC2  RC4  RC3  RC6  RC5
SS loadings           2.42 2.04 1.69 1.63 1.42 1.35
Proportion Var        0.16 0.14 0.11 0.11 0.09 0.09
Cumulative Var        0.16 0.30 0.41 0.52 0.61 0.70
Proportion Explained  0.23 0.19 0.16 0.15 0.13 0.13
Cumulative Proportion 0.23 0.42 0.58 0.74 0.87 1.00

Mean item complexity =  1.3
Test of the hypothesis that 6 components are sufficient.

The root mean square of the residuals (RMSR) is  0.08 
 with the empirical chi square  263.19  with prob <  4.2e-39 

Fit based upon off diagonal values = 0.83

Matriz de coeficientes para las puntuaciones de los componentes

kable(pca2$weights[,1:6], 
      caption = "Puntuaciones componentes",
      booktabs = TRUE, 
      linesep = "") %>%
  kable_styling(latex_options = c("striped", "hold_position", "scale_down"))
Puntuaciones componentes
RC1 RC2 RC4 RC3 RC6 RC5
x1 -0.0087276 0.2792605 -0.0072371 -0.0152742 -0.0915885 -0.5325184
x2 0.3474455 0.0040542 0.1119421 0.0127576 -0.0026539 -0.1064987
x3 0.0252210 0.0472773 -0.4915341 -0.0254513 0.0359090 0.0314109
x4 0.0035688 0.0734722 0.0489170 -0.2226854 -0.4068757 0.0619998
x5 0.0108113 -0.4185765 0.0234975 0.0244960 -0.0142970 -0.0538503
x6 0.1253403 0.0420708 0.5426365 -0.0482740 0.0465134 -0.0013048
x7 0.0216012 -0.0274163 -0.0034594 0.5346346 0.0158533 0.0379450
x8 -0.3045730 -0.0938811 0.0022344 0.0869856 -0.0999209 -0.0029441
x9 -0.0092193 0.0191130 -0.0194018 0.5215582 -0.2127950 0.0442295
x10 0.3341734 0.0004522 0.1360973 0.0377872 -0.0656465 0.0981423
x11 -0.0155113 -0.0578383 0.0315143 -0.1450760 0.5880004 0.0054803
x12 0.0217974 0.1920790 0.0141564 -0.1066726 0.3879468 0.0388240
x13 -0.0038598 0.1578935 -0.0287959 0.0383601 -0.0531443 0.6563024
x14 0.0487549 0.3991574 0.0258361 0.0285447 -0.0577919 0.0345602
x15 -0.2887255 0.0444343 0.1973170 -0.0640539 0.0669009 -0.0174027

Nuevas variables obtenidas, cuya principal característica es que son ortogonales, es decir, linealmente independientes.

Por lo anterior, un conjunto de 16 variables altamente relacionadas se redujo a unicamente seis variables cuya característica es que son ortogonales.

Las variables son las siguientes:

Nuevas variables
RC1 RC2 RC4 RC3 RC6 RC5
1.6966757 -2.9523739 0.1840956 -1.8786541 -0.6739879 0.1845061
0.3512844 1.0883581 -0.0624244 -2.7275223 0.2596126 -1.2133255
-0.2010572 -0.5710163 0.2524740 1.1201882 -1.0263194 0.8804668
0.1702994 0.4776253 0.5119963 0.2076556 -0.6050585 0.4909305
1.7590966 -0.0669114 -0.3037917 0.1025500 0.2531106 0.4878950

Poblacion USA

En este caso sabemos que la información proporcionada son datos censales de de la población por estado en Estados Unidos de América, separado por años desde el 2000. En este caso en particular haremos el análisis para los años del 2020 y 2021. Como casos distintos y ver si hay ciertos patrones que se repiten.

# A tibble: 6 × 20
  State     Census Resident Tota…¹ Resident Total Popul…² Resident Total Popul…³
  <chr>                      <dbl>                  <dbl>                  <dbl>
1 Alabama                  4447100                4451493                4464356
2 Alaska                    626932                 627601                 634892
3 Arizona                  5130632                5165274                5307331
4 Arkansas                 2673400                2678030                2692090
5 Californ…               33871648               34000446               34501130
6 Colorado                 4301261                4323410                4417714
# ℹ abbreviated names: ¹​`Census Resident Total Population - AB:Qr-1-2000`,
#   ²​`Resident Total Population Estimate - Jul-1-2000`,
#   ³​`Resident Total Population Estimate - Jul-1-2001`
# ℹ 16 more variables: `Net Domestic Migration - Jul-1-2000` <dbl>,
#   `Net Domestic Migration - Jul-1-2001` <dbl>,
#   `Federal/Civilian Movement from Abroad - Jul-1-2000` <dbl>,
#   `Federal/Civilian Movement from Abroad - Jul-1-2001` <dbl>, …

Ya que tenemos una idea sobre la información proporcionada, nos encargaremos primero en hacer el análisis PCA para el año 2000.

PCA población USA 2000

Estructura y análisis exploratorio inicial

Las variables que quedaron para el 2000 fueron: 
 [1] "Census Resident Total Population"     
 [2] "Resident Total Population Estimate"   
 [3] "Net Domestic Migration"               
 [4] "Federal/Civilian Movement from Abroad"
 [5] "Net International Migration"          
 [6] "Period Births"                        
 [7] "Period Deaths"                        
 [8] "Resident Under 65 Population Estimate"
 [9] "Resident 65 Plus Population Estimate" 
[10] "Residual"                             
La base de datos tiene un total de 10 variables con un número de 51 observaciones.

Gráfico de correlación

Hacer un gráfico de correlación dentro de las variables nos puede ayudar a ver si existe alguna correlación entre las variables significativo para ver si es conveniente hacer una reducción de variables por componntes principales, si no hubiera relación entre las variables, no sería posible hacer la reducción ya que implicaría cierta pérdida de información con el modelo, cierto grado de redundancia se necesita para hacer el PCA.

psych::cor.plot(data2_2000,labels=NULL,show.legend=TRUE,xlas=2,xaxis =1,ysrt=3,n.legend=10,cex=0.45,MAR=TRUE)

Como podemos ver si hay una cantidad de variables que tienen cierta correlación con otras, ya sea de forma positiva o negativa, indicativo de que si es posible hacer el modelo.

Normalizar datos

data2_2000_1<-scale(data2_2000) 
kable(head(data2_2000_1,5),caption = "Data PCA normalizado",booktabs = TRUE, linesep = "") %>%   kable_styling(latex_options = c("striped", "hold_position", "scale_down"))
Data PCA normalizado
Census Resident Total Population Resident Total Population Estimate Net Domestic Migration Federal/Civilian Movement from Abroad Net International Migration Period Births Period Deaths Resident Under 65 Population Estimate Resident 65 Plus Population Estimate Residual
-0.1737463 -0.1746979 -0.1384922 -0.3398138 -0.3972151 -0.1554108 -0.0381277 -0.1782147 -0.1433644 -0.3487408
-0.7934984 -0.7930329 -0.1555864 -0.1694514 -0.4256801 -0.7314344 -0.9168402 -0.7784197 -0.8751078 0.2077605
-0.0628558 -0.0592773 1.6668313 -0.0300640 0.0624730 0.0467772 -0.1385217 -0.0644345 -0.0195676 0.8236219
-0.4614965 -0.4614723 0.1063318 -0.5101762 -0.3950909 -0.4353333 -0.3973721 -0.4650104 -0.4208972 0.0000000
4.5998463 4.6034578 -1.8364214 4.6006963 5.6473862 4.7744883 3.7989374 4.6760834 3.9248450 -0.4155209

PCA

Primero, podemos observar que el método de adecuación muestral de Kaiser-Meyer-Olkin, no es posible invertir, dentro de nuestras variables hay algunas con una correlación perfecta con otras variables. Sin embargo esto nos indica una alta redundancia.

Diagnóstico

pca1_2000<-princomp(data2_2000_1) 
summary(pca1_2000)
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

La tabla anterior nos muestra cuáles son las variables con mayor significancia, medida en términos de varianza, mientras más varianza, más significativa es para el evento analizado.

En el caso particular de estos datos podemos ver que al ser muchas variables, la varianza es menor en cada variable que en otras bases de datos que ya hemos analizado. Donde ninguna de las variables excede una varianza del 20%.

Revisar varianza y eigenvalores

Si hiciéramos el “Método del codo”, la reducción de nuestras variables sería hasta la segunda, donde se hace un cambio de inclinación.

fviz_eig(pca1_2000,choice="eigenvalue") 

Tenemos el mismo comportamiento de las variables con el análisis de eigenvalores.

Análisis gráfico

Coseno cuadrado:

Se utiliza para medir la calidad de la representación de las variables originales en el espacio de los componentes principales. Específicamente, el coseno cuadrado de una variable en un componente principal es el cuadrado del coseno del ángulo entre la variable original y el componente principal.

Gráfico de las puntuaciones factoriales y su representación

fviz_pca_ind(pca1_2000,col.ind="cos2",gradient.cols=c("red","yellow","green"),repel=FALSE) 

Biplot de flechas de componentes

Para visualizar las puntuaciones se emplea un biplot La flecha indica la dirección en la que contribuyen las ubican los sujetos estudiados.

Representacion de los componentes en relación con todas las observaciones, sin embargo, para poder ver los componentes de forma más clara, veremos sus vectores sin las observaciones.

Podemos ver cuáles son los componentes que más contribuyen al comportamiento de nuestro modelo, justificando nuestra elección previa de los componentes a través de las varianzas. Las de mayor contribución se encuentran en el cuadrante1.

Resultados del pca rotando los factores

La rotación más común es varimax. En un PCA, los componentes principales iniciales pueden ser difíciles de intrpretar porque cada variable puede tener cargas significativas en varios componentes. Al aplicar la rotación varimax, se ajustan las cargas de manera que cada variable tenga una carga alta en un solo componente, haciendo que la estructura sea más simple y clara.

pca2_2000 <- psych::principal(data2_2000_1, nfactors=2,residuals=FALSE, rotate="varimax",scores=TRUE,oblique.scores=FALSE,method="regression",use="pairwise",cor="cor",weight=NULL)  
pca2_2000
Principal Components Analysis
Call: psych::principal(r = data2_2000_1, 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       1.00 -0.02 0.99 0.0059 1.0
Resident Total Population Estimate     1.00 -0.02 0.99 0.0058 1.0
Net Domestic Migration                -0.26  0.77 0.66 0.3421 1.2
Federal/Civilian Movement from Abroad  0.74  0.42 0.73 0.2692 1.6
Net International Migration            0.94  0.04 0.89 0.1128 1.0
Period Births                          0.99  0.05 0.99 0.0142 1.0
Period Deaths                          0.97 -0.08 0.94 0.0563 1.0
Resident Under 65 Population Estimate  1.00 -0.01 0.99 0.0061 1.0
Resident 65 Plus Population Estimate   0.97 -0.07 0.94 0.0623 1.0
Residual                               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

Matriz de coeficientes para las puntuaciones de los componentes

kable(pca2_2000$weights[,1:2],caption = "Puntuaciones componentes",       booktabs = TRUE,linesep = "") %>%   kable_styling(latex_options = c("striped", "hold_position", "scale_down"))
Puntuaciones componentes
RC1 RC2
Census Resident Total Population 0.9968697 -0.0195909
Resident Total Population Estimate 0.9969223 -0.0177968
Net Domestic Migration -0.2636335 0.7670913
Federal/Civilian Movement from Abroad 0.7433061 0.4222930
Net International Migration 0.9410233 0.0412454
Period Births 0.9916210 0.0501862
Period Deaths 0.9683729 -0.0774805
Resident Under 65 Population Estimate 0.9968932 -0.0101162
Resident 65 Plus Population Estimate 0.9655511 -0.0735762
Residual 0.1960313 0.7715279

Nuevas variables obtenidas, cuya principal característica es que son ortogonales, es decir, linealmente independientes.

Por lo anterior, un conjunto de 10 variables altamente relacionadas se redujo a unicamente dos variables cuya característica es que son ortogonales.

Las variables son las siguientes:

Nuevas variables
RC1 RC2
-1.5127071 -0.5211650
-5.2605020 0.0880784
-0.5341723 1.9213981
-3.3855968 -0.0883064
35.1759366 -0.1163695

PCA población USA 2001

Estructura y análisis exploratorio inicial

Las variables que quedaron para el 2001 fueron: 
[1] "Resident Total Population Estimate"   
[2] "Net Domestic Migration"               
[3] "Federal/Civilian Movement from Abroad"
[4] "Net International Migration"          
[5] "Period Births"                        
[6] "Period Deaths"                        
[7] "Resident Under 65 Population Estimate"
[8] "Resident 65 Plus Population Estimate" 
[9] "Residual"                             
La base de datos tiene un total de 9 variables con un número de 51 observaciones.

Gráfico de correlación

Hacer un gráfico de correlación dentro de las variables nos puede ayudar a ver si existe alguna correlación entre las variables significativo para ver si es conveniente hacer una reducción de variables por componntes principales, si no hubiera relación entre las variables, no sería posible hacer la reducción ya que implicaría cierta pérdida de información con el modelo, cierto grado de redundancia se necesita para hacer el PCA.

psych::cor.plot(data2_2001,labels=NULL,show.legend=TRUE,xlas=2,xaxis =1,ysrt=3,n.legend=10,cex=0.45,MAR=TRUE)

Como podemos ver si hay una cantidad de variables que tienen cierta correlación con otras, ya sea de forma positiva o negativa, indicativo de que si es posible hacer el modelo.

Normalizar datos

data2_2001_1<-scale(data2_2001) 
kable(head(data2_2001_1,5),caption = "Data PCA normalizado",booktabs = TRUE, linesep = "") %>%   kable_styling(latex_options = c("striped", "hold_position", "scale_down"))
Data PCA normalizado
Resident Total Population Estimate Net Domestic Migration Federal/Civilian Movement from Abroad Net International Migration Period Births Period Deaths Resident Under 65 Population Estimate Resident 65 Plus Population Estimate Residual
-0.1788073 -0.1582841 0.3224849 -0.3990831 -0.1603339 -0.0376834 -0.1827708 -0.1440358 -0.6267372
-0.7902354 -0.0216781 0.1515605 -0.4382890 -0.7339390 -0.9176910 -0.7757099 -0.8729127 0.0280294
-0.0442145 1.5028245 0.0629330 0.0428518 0.0511096 -0.1338507 -0.0501025 0.0005859 0.8207006
-0.4617747 0.0191546 0.5187316 -0.4035664 -0.4322594 -0.3987153 -0.4650061 -0.4236418 -0.1009058
4.6169884 -1.3809422 -4.1626997 5.6255339 4.7725365 3.7676539 4.6880938 3.9495517 1.3465320

PCA

Primero, podemos observar que el método de adecuación muestral de Kaiser-Meyer-Olkin, no es posible invertir, dentro de nuestras variables hay algunas con una correlación perfecta con otras variables. Sin embargo esto nos indica una alta redundancia.

Diagnóstico

pca1_2001<-princomp(data2_2001_1) 
summary(pca1_2001)
Importance of components:
                          Comp.1    Comp.2     Comp.3     Comp.4     Comp.5
Standard deviation     2.5056381 1.2841609 0.66974585 0.55374490 0.31095905
Proportion of Variance 0.7115319 0.1868945 0.05083674 0.03475179 0.01095883
Cumulative Proportion  0.7115319 0.8984264 0.94926311 0.98401490 0.99497372
                            Comp.6       Comp.7       Comp.8 Comp.9
Standard deviation     0.205937451 0.0345666035 2.728378e-02      0
Proportion of Variance 0.004806493 0.0001354163 8.436586e-05      0
Cumulative Proportion  0.999780218 0.9999156341 1.000000e+00      1

La tabla anterior nos muestra cuáles son las variables con mayor significancia, medida en términos de varianza, mientras más varianza, más significativa es para el evento analizado.

En el caso particular de estos datos podemos ver que al ser muchas variables, la varianza es menor en cada variable que en otras bases de datos que ya hemos analizado. Donde ninguna de las variables excede una varianza del 20%.

Revisar varianza y eigenvalores

Si hiciéramos el “Método del codo”, la reducción de nuestras variables sería hasta la segunda, donde se hace un cambio de inclinación.

fviz_eig(pca1_2000,choice="eigenvalue") 

Análisis gráfico

Coseno cuadrado:

Se utiliza para medir la calidad de la representación de las variables originales en el espacio de los componentes principales. Específicamente, el coseno cuadrado de una variable en un componente principal es el cuadrado del coseno del ángulo entre la variable original y el componente principal.

Gráfico de las puntuaciones factoriales y su representación

fviz_pca_ind(pca1_2001,col.ind="cos2",gradient.cols=c("red","yellow","green"),repel=FALSE) 

Biplot de flechas de componentes

Para visualizar las puntuaciones se emplea un biplot La flecha indica la dirección en la que contribuyen las ubican los sujetos estudiados.

Representacion de los componentes en relación con todas las observaciones, sin embargo, para poder ver los componentes de forma más clara, veremos sus vectores sin las observaciones.

Podemos ver cuáles son los componentes que más contribuyen al comportamiento de nuestro modelo, justificando nuestra elección previa de los componentes a través de las varianzas. Las de mayor contribución se encuentran en el cuadrante1.

Resultados del pca rotando los factores

La rotación más común es varimax. En un PCA, los componentes principales iniciales pueden ser difíciles de intrpretar porque cada variable puede tener cargas significativas en varios componentes. Al aplicar la rotación varimax, se ajustan las cargas de manera que cada variable tenga una carga alta en un solo componente, haciendo que la estructura sea más simple y clara.

pca2_2000 <- psych::principal(data2_2001_1, nfactors=2,residuals=FALSE, rotate="varimax",scores=TRUE,oblique.scores=FALSE,method="regression",use="pairwise",cor="cor",weight=NULL)  
pca2_2000
Principal Components Analysis
Call: psych::principal(r = data2_2001_1, 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
Resident Total Population Estimate     1.00  0.03 0.99 0.0068 1.0
Net Domestic Migration                -0.22  0.87 0.81 0.1884 1.1
Federal/Civilian Movement from Abroad -0.70 -0.47 0.72 0.2839 1.8
Net International Migration            0.94  0.08 0.89 0.1088 1.0
Period Births                          0.99  0.06 0.98 0.0178 1.0
Period Deaths                          0.97  0.00 0.93 0.0651 1.0
Resident Under 65 Population Estimate  1.00  0.03 0.99 0.0068 1.0
Resident 65 Plus Population Estimate   0.96  0.04 0.93 0.0676 1.0
Residual                               0.27  0.87 0.83 0.1691 1.2

                       RC1  RC2
SS loadings           6.32 1.76
Proportion Var        0.70 0.20
Cumulative Var        0.70 0.90
Proportion Explained  0.78 0.22
Cumulative Proportion 0.78 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.05 
 with the empirical chi square  7.81  with prob <  0.99 

Fit based upon off diagonal values = 1

Matriz de coeficientes para las puntuaciones de los componentes

kable(pca2_2000$weights[,1:2],caption = "Puntuaciones componentes",       booktabs = TRUE,linesep = "") %>%   kable_styling(latex_options = c("striped", "hold_position", "scale_down"))
Puntuaciones componentes
RC1 RC2
Resident Total Population Estimate 0.9960902 0.0316035
Net Domestic Migration -0.2169152 0.8744053
Federal/Civilian Movement from Abroad -0.7015148 -0.4732980
Net International Migration 0.9406167 0.0802913
Period Births 0.9890650 0.0630450
Period Deaths 0.9669080 -0.0025622
Resident Under 65 Population Estimate 0.9961285 0.0309809
Resident 65 Plus Population Estimate 0.9649681 0.0352174
Residual 0.2676205 0.8713596

Nuevas variables obtenidas, cuya principal característica es que son ortogonales, es decir, linealmente independientes.

Por lo anterior, un conjunto de 10 variables altamente relacionadas se redujo a unicamente dos variables cuya característica es que son ortogonales.

Las variables son las siguientes:

Nuevas variables
RC1 RC2
-1.4291841 -0.8955899
-4.5218019 -0.2251239
-0.2824457 2.0034938
-2.9196880 -0.4192436
30.3149688 3.1091680