Presentación

El presente trabajo plantea buscar la correlación entre el uso de servicios alimenticios del Estado en 194 provincias del Perú y algunos de sus indicadores sociales a raiz de intentar predecir en menor o mayor medida el uso de dichos servicios dependiendo de los indices sociales de dicho territorio. En ese sentido, nuestra propuesta es que el porcentaje de uso de servicios alimentarios proporcionados por el Estado se puede predecir a partir de variables como la prioridad de dicha provincia para el estado y la calidad de vida de la misma.

De esta forma, el presente trabajo plantea la búsqueda de la correlación entre el uso de servicios alimenticios del Estados por provincia y algunos indicadores sociales. En aras de predecir en menor o mayor medida el uso de dichos servicios dependiendo de los índices sociales de dicho territorio. Los programas alimenticios en el Perú, sustentan la alimentación de cerca la mitad de hogares en el país. No obstante, existe una inmensa brecha entre el consumo de zonas urbanas, el cual representa un 38%, y el consumo de zonas rurales, el cual se expresa en un 71%. (Portocarrero et al., 2000). De tal manera, demostrando una divergencia dentro del uso de dichos servicios del Estado de forma ya estructurada dentro de ciertos territorios geográficos del país.

Es en ese sentido, que presentamos como propuesta que el uso de servicios alimentarios proporcionados por parte del Estado se predice principalmente a partir de dos índices particulares: En primer lugar, se encuentra la prioridad estatal. Esta podemos identificarla como el cumplimiento estatal de sus propias funciones, principalmente en base a la protección de los derechos de su población y la distribución equitativa de recursos; sin importar el espacio geográfico en el cual se encuentre (Mendoza, 2000). Por ello, para su estudio se han planteado los indicadores si la provincia es capital de departamento, puesto que esta (al encontrarse el gobierno reginal en esta) poseer una mayor cantidad de recursos que el resto; el nivel de educación medio en tanto este representa en mayor medida uno de los gastos fundamentales del gobierno central en todo el territorio y de los gobiernos regional y local y el índice de densidad del Estado en dicha provincia que corresponde al alcance de los servicios del Estado en un territorio determinado.

En segundo lugar, se presenta la calidad de vida. Este es un concepto complejo, el cual puede determinarse en base al cumplimiento de objetivos como el desarrollo integral personal, salud objetivamente considerada, productividad personal y de más. La OMS lo presenta como la percepción personal sobre el sistema en el cual uno se desenvuelve y las posibilidades que posee de cumplir con sus estándares o metas propuestas dentro de sus expectativas. (Galán, 2012). En esta línea, para su estudio a su vez se han determinado ciertos indicadores como el Índice de desarrollo humano de cada provincia, la capacidad de ingresos per capita por caso y la esperanza de vida media en cada uno de los mismos.

A través de lo planteado desde la teoría podemos postular que la relación existente entre nuestras variables independientes (Prioridad estatal y calidad de vida) tienen una relación inversa con la variable dependiente (proporcion de uso de servicios alimenticios). Es decir, a mayor prioridad frente al Estado y mayor calidad de vida es menor el uo de estos servicios por parte de la población, lo que nos indicaría que estos servicios son usados en su mayoría por personas que tienen poco contacto con el Estado y el existente han de aprovecharlo al maximo. Este estudio presentará diversos pasos, los cuales expresaran nuestro interés por proporcionar una explicación sobre este fenómeno con la finalidad de establecer investigaciones de las particularidades de las provincias en nuestro pais y la relación del desarrollo integral como ciudadanos de sus habitantes con la necesidad de adquirir esta clase de servicios alimentarios por parte del Estado.

Pasos preliminares

Para hacer el análisis presentado anteriormente es necesario primero cargar todas las librerías necesarias para nuestro estudio. El uso de cada una de ellas se explica en el Anexo 4.

library(rio)
library(stargazer)
library(tidyverse)
library(stringr)
library(cluster)
library(factoextra)
library(fpc)
library(sf)
library(lmtest)
library(DescTools)
library(polycor)
library(ggcorrplot)
library(psych)
library(matrixcalc)
library(GPArotation)
library(lavaan)
library(BBmisc)

Otro paso previo necesario es crear nuestra base de datos. Para obtener estos se ha subido a un repositorio en Github diferentes bases externas. La primera, denominada “a” en los codigos presentados, es el módulo 37 de la encuesta nacional ENAHO, el cual refiere al uso de servicios alimenticios por persona, a partir de esta crearemos nuestra variable dependiente. Primero tomaremos de esta las variables necesarias y creareamos una nueva base que nos indique qué personas encuestadas han recibido servicios alimenticios por parte del Estado y cuales no. Para crear nuestra variable independiente se dividirá el número de personas que usan estos servicios por provinvia entre el total de encuestados de la misma provincia.

a = import("https://github.com/Fabians099/grupal/blob/main/Enaho01-2020-700.csv?raw=true")
data = data.frame(
  ubi = a$UBIGEO,
  a = a$`P701$01`,
  b = a$`P701$02`,
  c = a$`P701$03`,
  d = a$`P701$04`,
  e = a$`P701$05`,
  f = a$`P701$06`,
  g = a$`P701$07`,
  h = a$`P701$08`,
  i = a$`P701$10`)
data$vardep = data$a + data$c + data$d + data$e + data$i
data = data %>% mutate(vardep = replace(vardep, vardep >= 1, 1))
data$prov = substr(data$ubi,1,nchar(data$ubi)-2)
data$prov=str_pad(data$prov, 4, pad = "0")
data = na.omit(data)
data_prov = data %>% select(vardep, prov)
data_prov = data_prov %>%
  group_by(prov) %>%
  summarize(vardep=sum(vardep))
data_tot = data %>% select(vardep, prov)
data_tot = data_tot %>%
  group_by(prov) %>%
  summarise(total = n())
data_prov = merge(data_prov,data_tot, by = "prov")
data_prov$proporcion = data_prov$vardep / data_prov$total
data_prov = data_prov[,c(1,4)]

Luego, el primer grupo de variables independientes (el Indice de Densidad del Estado, el Indice de Desarrollo Humano y si la provincia es capital de región o no) lo extraerémos de una base de datos propia editada a partir de una existente otorgada por CEPLAN la cual por temas prácticos sera denominaca “b”. En esta unicamente se modificará la variable del ubigeo de cada provinicia para poder unir esta data con la anterior.

b = import("https://github.com/Fabians099/grupal/blob/main/Datos.xlsx?raw=true")
names(b) = c("ubi", "departamento", "provincia", "IDE", "IDH","IVIA", "cap")
b = b[,-6]
b$ubi=b$ubi/100
b$ubi=str_pad(b$ubi, 4, pad = "0")
b = merge(b, data_prov, by.x = "ubi", by.y = "prov", all.x = T)

El segundo grupo de variables independientes (la esperanza de vida al nacer, los años de educación medios y el ingreso medio per capita) se obtendran de una base de datos del PNUD (Programa de las Naciones Unidas para el Desarrollo) la cual será llamada “c”. Esta data será limpiada pues contiene datos por distrito y departamento además de las provincias que es lo que necesitamos. Se eliminarán las variables innecesarias y se modificará la variable del ubigeo para poder unir esta base a la anterior.

c = import("https://github.com/Fabians099/grupal/blob/main/IDH%202019.xlsx?raw=true")
c = c[-c(1:8),]
names(c) = c("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q")
c$r = substr(c[,1],5,6)
c = filter(c,r == "00")
c$s =substr(c[,1],3,4)
c = filter(c,s != "00")
c = c[,c(1,12,15,16)]
names(c) = c("a","vida", "edu", "ingre")
c[,-c(1)]=lapply(c[,-c(1)],as.numeric)
c$a = substr(c[,1],1,4)

Con todos los datos ya ordenados lo ultimo antes de presentar nuestra base de datos sería unir “c” a “b” para tener todas nuestras variables (además de los nombres de las provincias, su departamento y ubigeos) en una misma base de datos.

b = merge(b, c, by.x = "ubi", by.y = "a", all.x = T)

Presentación de la data y matadata

Nuestra base de datos “b” será la que usaremos para el resto del análisis. Un vistazo a los primeros datos sería el siguiente

head(b)
##    ubi departamento            provincia       IDE       IDH cap proporcion
## 1 0101     AMAZONAS          CHACHAPOYAS 0.7672790 0.5426653   1  0.4449153
## 2 0102     AMAZONAS                BAGUA 0.6492029 0.4610362   0  0.4833333
## 3 0103     AMAZONAS              BONGARA 0.7163909 0.4128955   0  0.5542169
## 4 0104     AMAZONAS         CONDORCANQUI 0.4088290 0.2534516   0  0.7244898
## 5 0105     AMAZONAS                 LUYA 0.7052045 0.3410502   0  0.6256158
## 6 0106     AMAZONAS RODRIGUEZ DE MENDOZA 0.6741977 0.3664074   0  0.4126984
##        vida       edu      ingre
## 1 0.7886118 0.5491744 0.36899678
## 2 0.8112851 0.4268741 0.28296441
## 3 0.7649489 0.3712170 0.24789061
## 4 0.6869938 0.2985523 0.07938011
## 5 0.7673645 0.2907637 0.17779241
## 6 0.7621370 0.3149414 0.20494156
b1 = b

Nuestra metadata se presenta de la siguiente manera:

Análisis exploratorio de casos

Pasando ya al análisis propio de nuestra investigación, se planteará una aproximación visual utilizando el análisis de clusters, utilizando la técnica jerárquica divisiva. Lo primero que debemos hacer es estandarizar nuestra data:

b[,-c(1:3,7)]=scale(b[,-c(1:3,7)])
row.names(b)=b$provincia

Conforme a lo que se plantea en el Anexo 3, se crearán 2 clusters mediante la técnica de clusterización jerárquica divisiva:

set.seed(123)
g.dist = daisy(b[,-c(1:3,7)], metric="gower")
res.diana <- hcut(g.dist, k = 2,hc_func='diana')
b$clustDIV=res.diana$cluster

El comportamiento dentro de cada clustes de nuestras variables es el siguiente:

aggregate(data=b[,-c(1:3)],.~clustDIV,FUN=mean)
##   clustDIV        IDE       IDH        cap proporcion       vida        edu
## 1        1  0.7837510  1.225844  0.8167454  0.3443368  0.6997337  1.1239513
## 2        2 -0.3681255 -0.575775 -0.3836228  0.5170309 -0.3286628 -0.5279165
##        ingre
## 1  1.1867669
## 2 -0.5574208

Notamos que existe una marcada diferencia en ambos grupos, el primero tiene indicadores sociales más altos, a la par que un menor uso de servicios alimenticios del Estado. Por el contrario, el segundo grupo se destaca por tener indicadores sociales bastante bajos y una mayor proporcion de usuarios de los servicios del Estado. Esto como análisis primario son podría esta indicando que nuestra hipótesis es correcta, pero para esto es aun necesario comprobarlo a través de una regresión como se hará en las seguientes partes del trabajo.

Ahora, recodificaremos los clusters para tener cada uno con un nombre claro

b$clustDIV = factor(b$clustDIV, 
                    levels = c(1:2), 
                    labels = c("Altos indicadores sociales","Bajos indicadores sociales"))

Podemos ver cuál fue el proceso de clusterización a partir del Dendograma:

fviz_dend(res.diana, cex = 0.4, horiz = T)
## Warning: `guides(<scale> = FALSE)` is deprecated. Please use `guides(<scale> =
## "none")` instead.

Usando el análisis georreferenciado podemos ver si es que existe alguna relación entre la geografía política de nuestro pais y los clusters establecidos, para ello se presenta el siguiente gráfico:

mapa=read_sf('https://github.com/Fabians099/grupal/blob/main/PROVINCIAS.json?raw=true')
mapa=merge(mapa,b, by.x="IDPROV", by.y="ubi", all.x=T)
ggplot(data=mapa) + 
  geom_sf(aes(fill=clustDIV), color="white",size = 0.7) +
  labs(
    title = "Análisis por conglomerados",
    subtitle = "
Clusterización a partir de indicadores sociales a nivel provincial
    ",
    fill = "") +
  scale_fill_manual(values = c("#76EEC6", "#FFEFDB"))+
  theme_void()+
  theme(plot.title = element_text(size=rel(5)),
        plot.subtitle = element_text(size=rel(2.5)),
        legend.text=element_text(size=20),
        legend.position = "top")

Como se puede notar las provincias cercanas a la costa tienden a tener valores más altos de indicadores sociales (y por ende menor uso de servicios alimenticios del Estado). Además, en este grupo tambien se encuentran en su mayoría las provinicias capitales de departamento del resto del país. Un caso que merecería un análisis de mayor profundidad es el de Madre de Dios, siendo el unico departamento el cual se encuentra dentro del cluster de altos indicadores sociales. Por otra parte, las provincias que más frecuentemente tienen menores indicadores sociales son aquellas de la sierra y selva que además no gozan de ser capitales de provincia. Este análisis nos permite vislumbrar cierta relación entre nuestras variables independientes y la dependiente, pero además la existencia de brechas claras entre las zonas urbanas o de la costa y las zonas ruralesen la selva y sierra del país.

Preparación de Latentes

Segun nuestro marco teórico tenemos dos variables latentes: Prioridad Estatal y Calidad de Vida. El anexo 2 nos confirmo la teoría al indicarnos la pertinencia de las 2 variables planteadas.

model = ' prioridad  =~ cap + edu + IDE
           calidad =~ IDH + ingre + vida'

A través del análisi factorial confirmatorio se comprobará la pertinencia de nuestras variables latentes

CFA = cfa(model, data=b, 
           std.lv=TRUE,  
           missing="fiml")

Primero debemos preparar los test:

allParamCFA=parameterEstimates(CFA,standardized = T)
allFitCFA=as.list(fitMeasures(CFA))

Conexión con la latente

allParamCFA[allParamCFA$op=="=~",c("lhs","rhs","pvalue","std.all")]
##         lhs   rhs pvalue std.all
## 1 prioridad   cap      0   0.476
## 2 prioridad   edu      0   0.992
## 3 prioridad   IDE      0   0.644
## 4   calidad   IDH      0   1.065
## 5   calidad ingre      0   0.903
## 6   calidad  vida      0   0.581

Notamos que el p.valor de todas las conexiones es menor a 0.05, por lo que podemos coonfirmar la pertinencia de estas.

Chi cuadrado

allFitCFA[c("chisq", "df", "pvalue")] # pvalue>0.05
## $chisq
## [1] 13.59281
## 
## $df
## [1] 8
## 
## $pvalue
## [1] 0.09301561

Confirmamos esta prueba al ser el p.valor mayor a 0.05

Índice Tucker Lewi

allFitCFA$tli # > 0.90
## [1] 0.9922168

Confirmamos al ser el índice mayor a 0.9

Raíz del error cuadrático

allFitCFA[c('rmsea.ci.lower','rmsea' ,'rmsea.ci.upper')] 
## $rmsea.ci.lower
## [1] 0
## 
## $rmsea
## [1] 0.06003014
## 
## $rmsea.ci.upper
## [1] 0.1132427

Confirmamos al ser esta menor a 0.05

Con las confirmaciones anteriores realizadas procedemos a crear nuestras nuevas variables para proceder ya con la regresión.

scores=as.data.frame(lavPredict(CFA))
b$prioridad=normalize(scores$prioridad,
                    method = "range", 
                    margin=2, # by column
                    range = c(0, 100))
b$calidad=normalize(scores$calidad,
                    method = "range", 
                    margin=2, # by column
                    range = c(0, 100))

Regresión y prueba de hipótesis

modelo=formula(proporcion~prioridad+calidad)
regresion=lm(modelo,data=b)
summary(regresion,type = "text")
## 
## Call:
## lm(formula = modelo, data = b)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.45204 -0.06066 -0.00739  0.05933  0.50939 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.6129864  0.0339079  18.078   <2e-16 ***
## prioridad   -0.0047016  0.0004242 -11.083   <2e-16 ***
## calidad      0.0011512  0.0005196   2.215   0.0279 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1176 on 191 degrees of freedom
## Multiple R-squared:  0.4179, Adjusted R-squared:  0.4118 
## F-statistic: 68.56 on 2 and 191 DF,  p-value: < 2.2e-16

El resultado nos muestra la pertinencia de ambas variables a la hora de predecir el número de personas que consumen servicios alimenticios proporcionados por el Estado. Tanto la prioridad estatal como la calidad influyen en cuantas personas usan servicios aimenticios del Estado. En este caso existe una relación inversa repecto a la prioridad estatal y una ligera relación con la calidad de vida.

Conclusiones

Este trabajo se planteo la siguientes hipótesis:

  1. Existe una relación entre el número de personas que utilizan servicios alimenticios del Estado e indicadores sociales como la calidad de vida o priorización del Estado.
  2. La relación entre la prioridad estatal y nuestra variable dependiente es inversa.
  3. La relación entre la calidad de vida y nuestra variable dependiente es inversa.

Podemos concluir que la primera y segunda hipótesis se cumplieron, además de ser una regresión pertinente (revisar anexo 1). Sin embargo si bien existe una relación significativa entre la calidad de vida y nuestra variable dependiente, esta es una relación positiva bastante baja. Se puede interpretar lo anterior como una variable menor a lado de una variable principal como lo es la priorización del Estado. A grandes razgos se confirma nuestra teoría, el mayor número de usuarios de estos servicios se encuentran en aquellas zonas que hasta el momento no han sido priorizadas por el Estado, donde el poco alcance de los programas sociales son usados de forma amplia por la población ante las necesidades de la misma.

Metodológicamente hablando el análisis de clusters nos permite plantear la existencia de otras variables que podrían aportar a la priorización estatal como la cercanía a una capital (Lima Metropolitnana o alguna capital de departamento) o si es una provincia en la costa (región historicamente más conectada y con mayor cantidad de servicios que el resto del Perú). Además, observando el anexo 1 es interesante tambien estudiar los motivos de la dispersión no normal de los residuos dentro de esta regresión. Mediante otros estudios se podría confirmar la existencia de variables que afectan a los datos más altos y bajos o que modifican el tipo de regresión pertinente para este tipo de estudios.

En el siguiente link se encuentra las bases de datos usadas para este trabajo: link

Bibliografía

Portocarrero, F., Beltrán, A., Romero, M. E., & Cueva, H. (2000). Gestión pública y políticas alimentarias en el Perú. Universidad del Pacífico. Centro de Investigación. Mendoza, J. L. (2000). ¿Cuál es el rol del Estado? Revista de la Facultad de Ciencias Económicas, 5(15), 45-62. Galán, M. G. N. (2012). La calidad de vida: Análisis multidimensional. Revista de enfermería neurológica, 11(3), 129-137.

Anexos

Anexo 1: Normas de la Regresión Lineal

Linealidad

plot(regresion, 1)

Confirmamos la linealidad de nuestra regresión al tener una línea cercana a una horizontal en el gráfico anterior

Homocedasticidad

plot(regresion, 3)

bptest(regresion)
## 
##  studentized Breusch-Pagan test
## 
## data:  regresion
## BP = 1.2501, df = 2, p-value = 0.5352

Através del gráfico (una línea cercana a la horizontal) y el test de Breuch-Pagan que posee un p.valor mayor a 0.05 podemos confirmar que hablamos de una regresión homocedástica

Normalidad de residuos

plot(regresion, 2)

shapiro.test(regresion$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  regresion$residuals
## W = 0.96397, p-value = 7.148e-05

El gráfico en este caso nos muestra posible no linealidad de los residuos de nuestra regresión. esto se ve confirmado al tener un p.valor menor a 0.05 en el test de Shapiro-Wilk.

No multicolinealidad

VIF(regresion)
## prioridad   calidad 
##  1.326454  1.326454

Nuestras variables no presentan multicolinealidad

Valores influyentes

plot(regresion, 5)

NO existen valores que se encuentren demasiado alejados del resto como para representar un problema para nuestra regresión.

Anexo 2: Análisis de Conglomerados

Creamos una data solo con nuestras variables a partir de un respaldo llamado “b1”

indepe = b1[,-c(1:3,7,11:13)]

Primero planteamos si es necesario transformar nuestras variables

  • Sin modificación
boxplot(indepe,horizontal=T,las=2,cex.axis=0.3)

  • Tipificado
boxplot(scale(indepe),horizontal=T,las=2,cex.axis=0.3)

  • Suavizado logaritmicamente
boxplot(log(indepe),horizontal=T,las=2,cex.axis=0.3)
## Warning in bplt(at[i], wid = width[i], stats = z$stats[, i], out = z$out[z$group
## == : Outlier (-Inf) in boxplot 3 is not drawn

Podemos comprobar que la transformación de variables que más nos ayuda a tener todas nuestras variables en un rango cercano entre si es el tipificado de estas. Ahora es necesario saber cuanta es la distancia entre cada varibale y cuantos clusters son necesarios. En el primer gráfico se plantea el clusterizado con la estrategia de partición:

indepe = scale(indepe)
row.names(indepe)=b$provincia
set.seed(123)
g.dist = daisy(indepe, metric="gower")
## Warning in daisy(indepe, metric = "gower"): binary variable(s) 3 treated as
## interval scaled
fviz_nbclust(indepe, pam,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F)

Esta estrategia nos indica que con ella sería prudente crear 8 clusters. Pasamos ahora con el metodo jerárquico aglomerativo:

fviz_nbclust(indepe, hcut,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F,hc_func = "agnes")

Esta estrategia nos indica que con ella sería prudente crear tambien 8 clusters. Por último, pasamos con el metodo jerárquico divisivo:

fviz_nbclust(indepe, hcut,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F,hc_func = "diana")

Se puede notar que adiferencia de los otros métodos este nos indica que serían necesarios preferiblemente 2 clusters. No se hace un análisis de clusters basados en densidad ya que para este caso necesitamos una estratégia que agrupe obligatoriamente a todos los casos estudiados. Por ello, procedemos a crear las variables respectivas para cada tipo de clusterizado.

set.seed(123)
res.pam=pam(g.dist,k = 8,cluster.only = F)
indepe$pam=res.pam$cluster
## Warning in indepe$pam = res.pam$cluster: Coercing LHS to a list
res.agnes <- hcut(g.dist, k = 8,hc_func='agnes')
indepe$agnes=res.agnes$cluster
res.diana <- hcut(g.dist, k = 2,hc_func='diana')
indepe$diana=res.diana$cluster

Con los datos anteriores evaluaremos el coeficiente de silueta de cada uno de los tipos, quedandonos con aquel que tenga la mayor cantidad de valores positivos.

  • Partición
fviz_silhouette(res.pam)
##   cluster size ave.sil.width
## 1       1   13          0.45
## 2       2   35          0.21
## 3       3   32          0.18
## 4       4   11          0.24
## 5       5   38          0.18
## 6       6   37          0.45
## 7       7   16          0.22
## 8       8   12          0.43

  • Jerárquico aglomerativo
fviz_silhouette(res.agnes)
##   cluster size ave.sil.width
## 1       1   12          0.47
## 2       2   36          0.26
## 3       3    8          0.30
## 4       4   40          0.30
## 5       5   40          0.41
## 6       6   38          0.04
## 7       7   13          0.38
## 8       8    7          0.41

  • Jerárquico divisivo
fviz_silhouette(res.diana)
##   cluster size ave.sil.width
## 1       1   62          0.39
## 2       2  132          0.58

Como se puede ver el método divisivo es el que menos casos mal clusterizados posee, siendo solamente uno el que se encuentra en esta situación. Por ello tomaremos este como el más pertinente para nuestro trabajo.

Anexo 3: Exploración de latentes

Primero crearemos la matrix de correlación (sin evaluar significancia) y su visualizacipon a través de un mapa de calor con la intención de establecer si hay posibilidad de un análisis factorial

solo = b[,-c(1:3,7,11:13)]
corMatrix=polycor::hetcor(solo)$correlations
ggcorrplot(corMatrix)

Al ver la correlación existente entre nuestras variables hay esperanza de un buen análisis factorial. Pasaremos ahora a verificar si los datos permiten factorizar:

psych::KMO(corMatrix)
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = corMatrix)
## Overall MSA =  0.54
## MSA for each item = 
##   IDE   IDH   cap  vida   edu ingre 
##  0.98  0.52  0.97  0.34  0.51  0.50

Confirmado lo anterior, confirmamos tambien que la matriz no es una matriz singular

cortest.bartlett(corMatrix,n=nrow(solo))$p.value>0.05
## [1] FALSE

Confirmado lo anterior es necesario estableces nuestras pruebas. Primero confirmamos que nuestra matriz no es una matriz de identidad

is.singular.matrix(corMatrix)
## [1] FALSE

Ahora, determinamos cuantos factores o variables latentes son pertinentes para nuestra data

fa.parallel(solo,fm = 'ML', fa = 'fa',correct = T)

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

Se sugiere 2, de acuerdo a lo establecido en la teoría. Trabajaremos con estos.

resfa <- fa(solo,
            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, cutoff = 0.15)
## 
## Loadings:
##       MR1   MR2  
## IDE   0.545 0.358
## IDH   0.589 0.826
## cap   0.900 0.185
## vida        0.594
## edu   0.753 0.522
## ingre 0.536 0.739
## 
##                  MR1   MR2
## SS loadings    2.324 2.015
## Proportion Var 0.387 0.336
## Cumulative Var 0.387 0.723

El resultado visual sería el siguiente:

fa.diagram(resfa)

Como se puede ver las variables establecidad en el análisis factorial se corresponden con lo esperado por nuestra teoría por lo que podemos aplicar este a nuestro trabajo. Ahora, es perinente ver que variables aportaron más a los factores y cuales contribuyen a más de un factor:

sort(resfa$communality)
##      vida       IDE     ingre       edu       cap       IDH 
## 0.3675603 0.4253536 0.8327264 0.8391110 0.8444357 1.0296919
sort(resfa$complexity)
##      cap     vida      IDE      edu      IDH    ingre 
## 1.084622 1.085590 1.728925 1.780048 1.808802 1.823975

Anexo 4: Librerías usadas

  • rio: Importar bases de datos desde github
  • stargazer: Nos permite visualizar la pertinencia de la regresión
  • tidyverse: Herramientas para editar los datos y visualizaros a través de ggplot
  • stringr: Edición y limpieza de datos
  • cluster: Clusterizado de datos
  • factoextra: Creación de clusters
  • fpc: Validación de clusters
  • sf: Agregar polígonos desde archivos json y shapefile
  • lmtest: Creación del modelo lineal
  • DescTools: Herramientas para la estadística descriptiva
  • polycor: Creación de la matriz
  • ggcorrplot: Mapa de correlación de nuestra matriz
  • psych: Funciones para el análisis multivariado y la factorización
  • matrixcalc: Test de matriz singular
  • GPArotation: Creación de variables latentes
  • lavaan: Creación de variables latentes
  • BBmisc: Creación de variables latentes