#Preparando la data
library(rio)

github='https://github.com/DataPolitica/salidas/raw/master/Data/Cajamarca.sav'

cajamarca=import(github)
#Preparo mi data para factorizar con las variables requerridas
subdata<- cajamarca[,c(2:10)]
#Pregunta 2 : Matriz de correlaciones

library(polycor)
matriz<-hetcor(subdata)
matriz_corr<- matriz$correlations
library(ggcorrplot)
## Loading required package: ggplot2
ggcorrplot(matriz_corr)

#Mejoramos el gráfico a 0.5
ggcorrplot(matriz_corr,
           p.mat = cor_pmat(matriz_corr),
           insig = "blank")

#Momento de realizar el diagnóstico de la matriz de correalciones

#primero observamos el KMO

library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
## The following object is masked from 'package:polycor':
## 
##     polyserial
KMO(matriz_corr)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = matriz_corr)
## Overall MSA =  0.4
## MSA for each item = 
##   prural desnutcr  mortinf  analfab inasiesc  nintrab  hacinam  sinagua 
##     0.42     0.40     0.54     0.38     0.37     0.22     0.72     0.40 
## sindesag 
##     0.48
#luego observamos el bartlett
cortest.bartlett(matriz_corr,n=nrow(subdata))$p.value>0.05
## [1] FALSE
#Finalmente observamos la singularidad
library(matrixcalc)
is.singular.matrix(matriz_corr)
## [1] FALSE

Observando los resultados del diagnóstico de correlaciones, podemos observar que tanto la prueba de bartlett como la de singularidad son optimas, pues rechazan la hipótesis nula, representando significancia en sus resultados (FALSE). Sin embargo, la prueba de KMO resulta ser menor a 0.4, lo que significa que el análisis factorial no està siendo el adecuado.

#Es momento de identificar el número de factores recomendados, asi como el AFE

fa.parallel(subdata,fm = 'ML', fa = 'fa') #de esta manera vemos cuantos factores latentes son recomendados

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA

En este caso, se recomiendan 2 variables latentes

#Realizamos el EFA con las variables dadas

library(GPArotation)
resfa <- fa(subdata,nfactors = 2,cor = 'mixed',rotate = "varimax",fm="minres")
## Warning in fa.stats(r = r, f = f, phi = phi, n.obs = n.obs, np.obs = np.obs, :
## The estimated weights for the factor scores are probably incorrect. Try a
## different factor score estimation method.
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected. Examine the results carefully
print(resfa$loadings)
## 
## Loadings:
##          MR1    MR2   
## prural    0.999       
## desnutcr  0.661  0.451
## mortinf          0.747
## analfab   0.460  0.659
## inasiesc  0.185  1.000
## nintrab          0.663
## hacinam   0.470  0.299
## sinagua   0.992       
## sindesag  0.843       
## 
##                  MR1   MR2
## SS loadings    3.603 2.733
## Proportion Var 0.400 0.304
## Cumulative Var 0.400 0.704

Luego de realizar el EFA con 2 variables se puede observar que existen algunas que se juntan en las variables

print(resfa$loadings,cutoff = 0.5) #se realiza un corte al 0.5
## 
## Loadings:
##          MR1    MR2   
## prural    0.999       
## desnutcr  0.661       
## mortinf          0.747
## analfab          0.659
## inasiesc         1.000
## nintrab          0.663
## hacinam               
## sinagua   0.992       
## sindesag  0.843       
## 
##                  MR1   MR2
## SS loadings    3.603 2.733
## Proportion Var 0.400 0.304
## Cumulative Var 0.400 0.704

Al hacer el corte en 0.5 se observa con mayor detenimiento cómo estarán distribuidas las variables dentro de las nuevas variables latentes (nuevos conjuntos), vemos que MR1 tiene 4 valores y MR2 también

#Presentamos las variables en el diagrama
fa.diagram(resfa)

#Realizamos una evaluación del EFA
resfa$crms #raiz de error cuadrático medio corregida
## [1] 0.1021802

Se encuentra cercano a 0, indica buen ajuste

resfa$RMSEA #Raíz del error cuadrático medio de aproximación
##      RMSEA      lower      upper confidence 
##  0.1364794  0.0000000  0.3202334  0.9000000

Dado que los valores son mayores a 0.5, se debe reportar que no existe suficiencia de validez de las variables

resfa$TLI #prueba Tucker-Lewis
## [1] 0.7525446

Que salga menor a 0.9 indica insuficiencia de validez, se debe reportar.

#Se debe ver qué variable aporta más a los factores
sort(resfa$communality)
##   hacinam   nintrab   mortinf  desnutcr   analfab  sindesag   sinagua    prural 
## 0.3100542 0.4456448 0.5577819 0.6406220 0.6456363 0.7163766 0.9847289 0.9994019 
##  inasiesc 
## 1.0350391

La variable que aporta más a los valores creados es “inasiesc” y le siguen las variables “sinagua” y “prural”

#Presentamos las variables encontradas en una nueva base de datos y pasamos a revisar sus principales descriptivos
factorial_casos<-as.data.frame(resfa$scores)
head(factorial_casos)
##          MR1        MR2
## 1 -0.4091776  2.2390867
## 2  0.5267579  2.0469175
## 3  0.7216715 -2.0465796
## 4  1.1389531  0.2931199
## 5 -0.3282183  1.4949300
## 6  0.7027532 -0.4289251
summary(factorial_casos)
##       MR1               MR2          
##  Min.   :-2.0182   Min.   :-2.04658  
##  1st Qu.:-0.4092   1st Qu.:-1.07783  
##  Median : 0.5141   Median :-0.00491  
##  Mean   : 0.0000   Mean   : 0.00000  
##  3rd Qu.: 0.7217   3rd Qu.: 0.29312  
##  Max.   : 1.1390   Max.   : 2.23909