Planteamiento del ejercicio.
Se pretende construir un indicador multivariado sintético sobre el
Desarrollo en las Economías.
Los indicadores a considerar son:
El índice de alfabetización (alfabet)[+]
El incremento de la población (inc_pob)[+]
La esperanza de vida femenina (espvidaf)[+]
La mortalidad infantil (mortinf)[-]
El número promedio de hijos por mujer (fertilid) [+]
La tasa de natalidad (tasa_nat)[+]
El logaritmo del PIB (log_pib)[+]
La población urbana (urbana)[+]
La tasa de mortalidad (tasa_mor)[-]
Ejercicio 1.1.
Usando Análisis Factorial determine cuantos factores deberían
retenerse.
Normalización de los datos.
library(dplyr)
norm_directa<-function(x){(x-min(x))/(max(x)-min(x))}
norm_inversa<-function(x){(max(x)-x)/(max(x)-min(x))}
#Seleccionando las variables con correlación positiva
datos_economias_prueba %>%
select(ALFABET, INC_POB, ESPVIDAF, FERTILID, TASA_NAT, LOG_PIB, URBANA) %>%
apply(MARGIN = 2,FUN = norm_directa) %>% as.data.frame()->variables_corr_positiva
#Seleccionando las variables con correlación negativa
datos_economias_prueba %>%
select(MORTINF, TASA_MOR) %>%
apply(MARGIN = 2,FUN = norm_inversa) %>% as.data.frame()->variables_corr_negativa
#Juntando y reordenando las variables
variables_corr_positiva %>%
bind_cols(variables_corr_negativa) %>%
select(ALFABET, INC_POB, ESPVIDAF, MORTINF, FERTILID, TASA_NAT, LOG_PIB, URBANA, TASA_MOR)->datos_economias_normalizados
datos_economias_normalizados %>%
head() %>%
kable(caption="Tabla sobre el Desarrollo en las Economías Normalizada.",
align = "c",
digits = 2) %>%
kable_material(html_font = "sans-serif") %>%
kable_styling(bootstrap_options = c("striped", "hover"))
Tabla sobre el Desarrollo en las Economías Normalizada.
ALFABET
|
INC_POB
|
ESPVIDAF
|
MORTINF
|
FERTILID
|
TASA_NAT
|
LOG_PIB
|
URBANA
|
TASA_MOR
|
0.98
|
0.31
|
0.82
|
0.81
|
0.22
|
0.30
|
0.61
|
0.52
|
0.77
|
0.13
|
0.56
|
0.03
|
0.00
|
0.81
|
1.00
|
0.10
|
0.14
|
0.09
|
0.99
|
0.12
|
0.92
|
0.98
|
0.02
|
0.02
|
0.94
|
0.84
|
0.59
|
0.54
|
0.63
|
0.69
|
0.71
|
0.78
|
0.65
|
0.76
|
0.76
|
0.82
|
0.94
|
0.29
|
0.82
|
0.87
|
0.22
|
0.23
|
0.63
|
0.85
|
0.68
|
0.98
|
0.31
|
0.82
|
0.86
|
0.27
|
0.30
|
0.71
|
0.66
|
0.82
|
Matriz de Correlación & Pruebas de Barlett y KMO.
library(PerformanceAnalytics)
chart.Correlation(as.matrix(datos_economias_normalizados),histogram = TRUE,pch=12)

#KMO
library(rela)
KMO<-paf(as.matrix(datos_economias_normalizados))$KMO
print(KMO)
## [1] 0.862
#Prueba de Barlett
library(psych)
options(scipen = 99999)
Barlett<-cortest.bartlett(datos_economias_normalizados)
print(Barlett)
## $chisq
## [1] 1545.1
##
## $p.value
## [1] 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011126
##
## $df
## [1] 36
Con la Prueba KMO podemos aceptar el analisis factorial al obtener
un valor de 0.86467
Con la Prueba de Barlett se llega a la conclusion de rechazar Ho al
obtener un p-value de casi cero. Por lo que hay evidencia de correlacion
poblacional entre la bateria de indicadores.
Análisis Factorial.
library(FactoMineR)
library(factoextra)
library(kableExtra)
Rx<-cor(datos_economias_normalizados)
PC<-princomp(x = datos_economias_normalizados,cor = TRUE,fix_sign = FALSE)
variables_pca<-get_pca_var(PC)
factoextra::get_eig(PC) %>% kable(caption=" Taba 1 Resumen de PCA",
align = "c",
digits = 2) %>%
kable_material(html_font = "sans-serif") %>%
kable_styling(bootstrap_options = c("hover"))
Taba 1 Resumen de PCA
|
eigenvalue
|
variance.percent
|
cumulative.variance.percent
|
Dim.1
|
6.62
|
73.53
|
73.53
|
Dim.2
|
1.25
|
13.88
|
87.41
|
Dim.3
|
0.54
|
5.95
|
93.36
|
Dim.4
|
0.25
|
2.77
|
96.12
|
Dim.5
|
0.18
|
1.97
|
98.10
|
Dim.6
|
0.07
|
0.79
|
98.89
|
Dim.7
|
0.06
|
0.63
|
99.52
|
Dim.8
|
0.03
|
0.28
|
99.80
|
Dim.9
|
0.02
|
0.20
|
100.00
|
fviz_eig(PC,
choice = "eigenvalue",
barcolor = "red",
barfill = "red",
addlabels = TRUE,
)+labs(title = "Gráfico de Sedimentación",subtitle = "Usando princomp, con Autovalores")+
xlab(label = "Componentes")+
ylab(label = "Autovalores")+geom_hline(yintercept = 1)

Criterio del 75%: debemos de retener tantas dimensiones que
expliquen al menos el 75%. Tomando de base la Tabla 1 de Resumen de PCA,
hasta la dimensión 2 nos permite tener 85.44%, por lo tanto se debe de
tomar la Dimensión 1 y Dimensión 2.
Criterio de Raíz Latente: debemos de retener aquellos componentes
que sean por lo menos uno o mayores a uno. Tomando de base la Tabla 1 de
Resumen de PCA, la Dimensión 1 tiene un eigenvalue de 6.45 y la
Dimensión 2 tiene un eigenvalue de 1.24, solo esas dos dimensiones
tienen valores superiores a uno por lo tanto solo esas dos de deben
retener.
Criterio de Elbow: se tomara la cantidad de dimensiones exactamente
donde ocurre el codo. Tomando de base el Grafico de Sedimentación, el
codo se da en la Dimensión 2 de 1.2, por lo tanto se debe de retener la
Dimensión 1 y Dimensión 2.
Con los 3 criterios podemos llegar a la conclusión que los
componentes a retener serian 2.
Ejercicio 1.2.
¿Qué variables quedan representadas en cada factor?
library(corrplot)
#Modelo de 2 Factores (Rotada)
numero_de_factores<-2
modelo_factores<-principal(r = Rx,
nfactors = numero_de_factores,
covar = FALSE,
rotate = "varimax")
modelo_factores
## Principal Components Analysis
## Call: principal(r = Rx, nfactors = numero_de_factores, rotate = "varimax",
## covar = FALSE)
## Standardized loadings (pattern matrix) based upon correlation matrix
## RC1 RC2 h2 u2 com
## ALFABET 0.75 0.54 0.85 0.148 1.8
## INC_POB -0.98 0.05 0.96 0.042 1.0
## ESPVIDAF 0.62 0.76 0.96 0.036 1.9
## MORTINF 0.66 0.71 0.94 0.062 2.0
## FERTILID -0.87 -0.39 0.91 0.087 1.4
## TASA_NAT -0.90 -0.39 0.96 0.036 1.4
## LOG_PIB 0.64 0.58 0.74 0.256 2.0
## URBANA 0.44 0.69 0.66 0.336 1.7
## TASA_MOR -0.04 0.93 0.87 0.130 1.0
##
## RC1 RC2
## SS loadings 4.50 3.36
## Proportion Var 0.50 0.37
## Cumulative Var 0.50 0.87
## Proportion Explained 0.57 0.43
## Cumulative Proportion 0.57 1.00
##
## Mean item complexity = 1.6
## Test of the hypothesis that 2 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0.05
##
## Fit based upon off diagonal values = 1
correlaciones_modelo<-variables_pca$coord
rotacion<-varimax(correlaciones_modelo[,1:numero_de_factores])
correlaciones_modelo_rotada<-rotacion$loadings
corrplot(correlaciones_modelo_rotada[,1:numero_de_factores],
is.corr = FALSE,
method = "square",
addCoef.col="grey",
number.cex = 0.75)

En el factor 1 quedan representadas las variables ALFABET, INC_POB,
FERTILID, TASA_NAT, LOG_PIB.
En el factor 2 quedan representadas las variables ESPVIDAF, URBANA,
MORTINF, TASA_MOR.
Ejercicio 1.3.
Determine qué pesos deben asignarse a cada factor y a las variables
dentro de cada uno de ellos.
cargas<-rotacion$loadings[1:9,1:numero_de_factores]
ponderadores<-prop.table(apply(cargas^2,MARGIN = 2,sum))
t(ponderadores) %>% kable(caption="Ponderadores de los Factores Extraídos",
align = "c",
digits = 2) %>%
kable_material(html_font = "sans-serif") %>%
kable_styling(bootstrap_options = c("striped", "hover"))
Ponderadores de los Factores Extraídos
Dim.1
|
Dim.2
|
0.57
|
0.43
|
contribuciones<-apply(cargas^2,MARGIN = 2,prop.table)
contribuciones %>% kable(caption="Contribución de las variables en los Factores",
align = "c",
digits = 2) %>%
kable_material(html_font = "sans-serif") %>%
kable_styling(bootstrap_options = c("striped", "hover"))
Contribución de las variables en los Factores
|
Dim.1
|
Dim.2
|
ALFABET
|
0.12
|
0.09
|
INC_POB
|
0.21
|
0.00
|
ESPVIDAF
|
0.09
|
0.17
|
MORTINF
|
0.10
|
0.15
|
FERTILID
|
0.17
|
0.05
|
TASA_NAT
|
0.18
|
0.05
|
LOG_PIB
|
0.09
|
0.10
|
URBANA
|
0.04
|
0.14
|
TASA_MOR
|
0.00
|
0.26
|
El factor 1 tiene una participacion del 57% en el calculo del
indicador sintetico y el factor 2 tiene una participacion del 43% en el
calculo del indicador sintetico.
Para calcular el factor 1, X1 = ALFABET tiene una peso del 12% para
construir el factor, X2 = INC_POB tiene una peso del 21% para construir
el factor, X3 = ESPVIDAF tiene una peso del 9% para construir el factor,
X4 = MORTINF tiene una peso del 10% para construir el factor, X5 =
FERTILID tiene una peso del 17% para construir el factor, X6 = TASA_NAT
tiene una peso del 18% para construir el factor, X7 = LOG_PIB tiene una
peso del 9% para construir el factor, X8 = URBANA tiene una peso del 4%
para construir el factor, X9 = TASA_MOR tiene una peso del 0% para
construir el factor.
Para calcular el factor 1, X1 = ALFABET tiene una peso del 9% para
construir el factor, X2 = INC_POB tiene una peso del 0% para construir
el factor, X3 = ESPVIDAF tiene una peso del 17% para construir el
factor, X4 = MORTINF tiene una peso del 15% para construir el factor, X5
= FERTILID tiene una peso del 5% para construir el factor, X6 = TASA_NAT
tiene una peso del 5% para construir el factor, X7 = LOG_PIB tiene una
peso del 10% para construir el factor, X8 = URBANA tiene una peso del
14% para construir el factor, X9 = TASA_MOR tiene una peso del 26% para
construir el factor.