pacman::p_load(readr, readxl,knitr, kableExtra, MASS, ggcorrplot)

Cargamos bases de datos

dibas = "D:/Centro_geo/C02_SIG/proyecto_final/"

# Cargar la base de datos principal
bd <- read_csv(paste0(dibas,"c01_exploracion_datos/analisis_r/bd_ent_socioeconomico_2020.csv"),show_col_types = FALSE)

# Cargar el diccionario de variables
dic_bd <- read_csv(paste0(dibas,"c01_exploracion_datos/analisis_r/diccionario_bd.csv"),show_col_types = FALSE)
# Mostrar la tabla de la base de datos principal
kable(head(bd), format = "html", table.attr = "style='width:100%;'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F) %>%
  scroll_box(width = "100%", height = "400px")
aa_cen aa_cve_ent aa_pobtot20 al_caal al_paal cs_cgin cs_ring cv_ccvi cv_pcvi cv_vhac ga_plm5 ga_porb pz_cpbr i_cpex i_cpmo i_crze i_inma pz_inmn i_irsl i_pnnv pz_pobr pz_ppbr i_ppex ip_pvin ie_nesc ip_pism ip_inc ip_int ip_pibc ip_pibe re_p15a re_p15b re_p15m re_p6ae re_pana re_pse re_psp re_ptot sb_csbv sb_psbv sb_pvae sb_pvdd sb_pvdi sb_pvdl sb_pvdr sb_pvdt sb_pvee sb_pves sb_pvpt se_c1cs se_c3cs se_cass ss_casa se_cvcs se_p1cs se_p3cs ss_pasa se_pass ss_psds se_pvcl se_pvcs se_pvdc ie_pcom ie_pint ie_pele ie_pagu ie_psan ed_phind ed_pasi ed_crean ed_esex ed_desp
AGU 1 1425607 2.1 17.4 0.4 0.8 2.6 4.0 13.1 21.3 0.17 1.8 3.3 1.7 2.2 22.2 0.8 0.2 33.4 392042 27.5 2.7 9.4 2302 58.5 3.028 4316774 142703 204726 2.1 23.5 1059395 5.0 21833 68530 159005 249368 3.1 2.1 0.6 0.6 38.9 13.0 5.4 4.0 0.3 0.6 0.8 1.7 3.2 1.9 2.4 1.6 57.3 9.1 20.2 42.7 18.4 54.1 29.7 6.8 64.025 74.025 74.425 72.400 70.400 0.0 73.60 0.40 1.900 5.733333
BCN 2 3769020 2.2 12.7 0.4 0.5 2.4 6.8 14.6 8.5 0.73 1.9 3.4 1.8 2.2 21.4 0.8 0.4 31.7 870644 23.1 1.7 6.4 4554 73.6 2.323 8755674 152317 553650 1.8 24.6 2949750 6.5 52736 199904 470015 722655 2.7 5.0 2.1 3.5 30.1 17.3 5.1 6.4 0.8 0.7 2.0 1.8 3.3 1.9 2.4 1.7 61.9 10.0 24.0 46.9 22.2 49.6 38.8 5.6 73.200 73.700 73.775 67.575 65.400 1.3 74.32 -0.78 1.925 5.366667
BCS 3 798447 2.2 22.7 0.4 0.9 2.7 11.4 18.6 10.3 9.05 2.1 3.6 1.9 2.4 21.5 0.8 0.4 31.8 218774 27.4 3.5 7.0 1336 45.5 2.257 1802259 151590 121986 2.3 23.9 618726 4.2 14089 41905 90080 146074 3.0 9.4 5.0 2.6 37.9 31.5 8.2 10.5 1.2 1.3 4.7 1.9 3.4 2.1 2.6 1.7 61.2 13.1 17.4 40.4 16.2 54.5 33.9 5.4 65.850 67.800 73.075 68.450 63.400 0.1 77.40 0.18 1.650 5.333333
CAM 4 928363 2.9 24.5 0.5 6.0 3.3 13.5 30.0 29.9 1.72 2.5 3.5 2.1 3.0 17.8 0.7 0.9 20.0 450256 48.5 11.9 6.3 2274 70.0 2.514 2334258 481697 481995 5.9 29.7 694979 6.4 39910 66664 100167 206741 2.9 33.5 4.0 5.1 56.2 22.7 16.0 13.1 1.4 3.6 2.7 2.3 3.4 2.5 2.9 1.9 73.7 28.0 21.0 58.4 21.9 66.3 25.2 16.1 49.875 44.850 73.550 67.925 64.425 2.9 76.16 -1.16 2.525 6.166667
COA 5 3146771 2.1 15.2 0.4 0.9 2.5 2.8 13.5 10.0 0.90 1.9 3.3 1.8 2.0 22.5 0.8 0.2 38.5 742638 23.6 2.3 11.3 5513 60.0 4.011 12621481 166389 535558 1.7 21.3 2359455 5.0 38298 124955 351877 515130 2.8 3.2 1.0 1.2 42.3 13.4 3.3 4.1 0.3 0.7 0.8 1.8 3.3 2.0 2.4 1.6 50.2 8.4 21.6 34.0 19.0 59.1 26.6 8.4 56.800 56.050 73.450 60.500 45.750 0.0 74.92 0.08 2.325 5.200000
COL 6 731391 2.3 16.6 0.4 0.7 2.7 7.4 15.3 13.5 0.31 2.0 3.5 1.8 2.3 21.5 0.8 0.5 31.0 203327 27.8 2.7 6.5 1480 59.7 1.953 1428050 128953 101248 3.4 27.7 567729 6.0 18792 49976 89670 158438 2.9 7.9 0.7 0.5 41.5 24.8 6.6 8.7 0.5 0.8 2.5 1.8 3.4 2.0 2.5 1.7 62.5 11.6 19.0 47.0 16.8 60.2 34.7 8.7 63.200 67.075 73.325 72.775 68.100 0.1 77.32 -0.20 4.450 5.433333
# Mostrar la tabla del diccionario de variables
kable(head(dic_bd), format = "html", table.attr = "style='width:100%;'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F) %>%
  scroll_box(width = "100%", height = "400px")
aspectos criterio variable descripcion
derechos sociales alimentacion al_caal Carencias promedio en carencia por acceso a la alimentación
derechos sociales alimentacion al_paal Porcentaje de poblacion en carencia por acceso a la alimentación
derechos sociales calidad y espacios vivienda cv_ccvi Carencias promedio en carencia por calidad y espacios de la vivienda
derechos sociales calidad y espacios vivienda cv_pcvi Porcentaje de poblacion carencia por calidad y espacios de la vivienda
derechos sociales calidad y espacios vivienda cv_vhac % Viviendas particulares con hacinamiento
clave clave aa_cen Clave 3 letras de entidad

Objetivo 1:

Aqui se genera un correlagrama por CRITERIO versus la variable de población analfabeta.

# Filtrar las variables por criterio
variables_alimentacion <- dic_bd$variable[dic_bd$criterio == "alimentacion"]

# Crear una base de datos filtrada con las variables de alimentacion y re_ptot
bd_filtro <- bd[, c(variables_alimentacion, "re_pana")]

# Calcular la matriz de correlacion
matriz_correlacion <- cor(bd_filtro, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(matriz_correlacion, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs alimentación",
           colors = c("blue", "white", "red"))

# Filtrar las variables
var_espacios <- dic_bd$variable[dic_bd$criterio == "calidad y espacios vivienda"]

# Crear una base de datos filtrada con las variables de alimentacion y re_ptot
bd_cev <- bd[, c(var_espacios, "re_pana")]

# Calcular la matriz de correlacion
mc_cev <- cor(bd_cev, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_cev, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Calidad y vivienda ",
           colors = c("blue", "white", "red"))

# Filtrar las variables
var_cs <- dic_bd$variable[dic_bd$criterio == "cohesion social"]

# Crear una base de datos filtrada con estas variables
bd_cs <- bd[, c(var_cs, "re_pana")]

# Calcular la matriz de correlacion
mc_cs <- cor(bd_cs, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_cs, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Cohesion social",
           colors = c("blue", "white", "red"))

# Filtrar las variables
var_edu <- dic_bd$variable[dic_bd$criterio == "educativo"]

# Crear una base de datos filtrada con estas variables
bd_edu <- bd[, c(var_edu, "re_pana")]

# Calcular la matriz de correlacion
mc_edu <- cor(bd_edu, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_edu, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Eduacion",
           colors = c("blue", "white", "red"))

# Filtrar las variables
var_gdcap <- dic_bd$variable[dic_bd$criterio == "grado accesibilidad"]

# Crear una base de datos filtrada con estas variables
bd_gd <- bd[, c(var_gdcap, "re_pana")]

# Calcular la matriz de correlacion
mc_gd <- cor(bd_gd, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_gd, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Grado accesibilidad",
           colors = c("blue", "white", "red"))

# Filtrar las variables
var_infra <- dic_bd$variable[dic_bd$criterio == "infraestructura educativa"]

# Crear una base de datos filtrada con estas variables
bd_infra <- bd[, c(var_infra, "re_pana")]

# Calcular la matriz de correlacion
mc_infra <- cor(bd_infra, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_infra, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Infraestructura educativa",
           colors = c("blue", "white", "red"))

# Filtrar las variables
var_inper <- dic_bd$variable[dic_bd$criterio == "ingreso per capita"]

# Crear una base de datos filtrada con estas variables
bd_inper <- bd[, c(var_inper, "re_pana")]

# Calcular la matriz de correlacion
mc_inper <- cor(bd_inper, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_inper, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Ingreso per capita",
           colors = c("blue", "white", "red"))

# Filtrar las variables
var_seg <- dic_bd$variable[dic_bd$criterio == "seguridad social"]

# Crear una base de datos filtrada con estas variables
bd_seg <- bd[, c(var_seg, "re_pana")]

# Calcular la matriz de correlacion
mc_seg <- cor(bd_seg, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_seg, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Seguridad social",
           colors = c("blue", "white", "red"))

# Filtrar las variables
var_sv <- dic_bd$variable[dic_bd$criterio == "servicios basicos vivienda"]

# Crear una base de datos filtrada con estas variables
bd_sv <- bd[, c(var_sv, "re_pana")]

# Calcular la matriz de correlacion
mc_sv <- cor(bd_sv, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_sv, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Servicios basicos vivienda",
           colors = c("blue", "white", "red"))

# Filtrar las variables
var_sal <- dic_bd$variable[dic_bd$criterio == "servicios de salud"]

# Crear una base de datos filtrada con estas variables
bd_sal <- bd[, c(var_sal, "re_pana")]

# Calcular la matriz de correlacion
mc_sal <- cor(bd_sal, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_sal, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Servicios salud",
           colors = c("blue", "white", "red"))

El criterio de rezago educativo no se toma en cuenta, este se representa mediante la variable independiente (re_pana = población total analfabeta) y presenta alguna relación con las demas variables de este criterio, lo que puede causar una colinealidad entre variables y reducir la precisión del modelo.

# Filtrar las variables del diccionario por criterio
var_rezg <- dic_bd$variable[dic_bd$criterio %in% c("rezago educativo")]

# Crear una base de datos filtrada con estas variables
bd_rezg <- bd[, var_rezg]

# Calcular la matriz de correlacion
mc_rezg <- cor(bd_rezg, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_rezg, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Rezago educativo",
           colors = c("blue", "white", "red"))

# Filtrar las variables
var_pbrz <- dic_bd$variable[dic_bd$criterio == "pobreza"]

# Crear una base de datos filtrada con estas variables
bd_pbrz <- bd[, c(var_pbrz, "re_pana")]

# Calcular la matriz de correlacion
mc_pbrz <- cor(bd_pbrz, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(mc_pbrz, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs Pobreza",
           colors = c("blue", "white", "red"))

# Seleccionar las variables especificas
variables_correlacion <- c("re_pana",  "al_caal", "cv_ccvi", "cs_ring", 
                           "ed_phind", "ga_porb", "ie_nesc", "ip_pism",
                           "se_cvcs",  "sb_pvdr", "ss_pasa", "pz_pobr" 
                            )

# Filtrar las variables de interes en la base de datos
bd_filtro <- bd[, variables_correlacion]

# Calcular la matriz de correlacion
matriz_correlacion <- cor(bd_filtro, use = "pairwise.complete.obs")

# Generar el correlograma
ggcorrplot(matriz_correlacion, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma: Población analfabeta vs variables socioeconomicas",
           colors = c("red", "white", "blue"))

Objetivo 2

Una vez definidas las variables del apartado anterior para probar el modelo de regresión lineal, con el objetivo de identificar las variables predictoras más significativas que contribuyen la cantidad de población con analfabetismo (re_pana). Esto se utiliza el método stepwise que garantiza una selección óptima de variables, considerando criterios estadísticos que definen la probabilidad de obtener los resultados observados si estas no tuvieran ningún efecto en el modelo (i.e. Criterio de Información de Akaike y el valor de p). Este proceso permitió reducir el modelo inicial que incluía todas las variables consideradas relevantes en el análisis preliminar, optimizando el ajuste estadístico mediante la inclusión o exclusión de variables.

# Preparar el modelo inicial (modelo nulo) y completo
modelo_nulo <- lm(re_pana  ~ 1, data = bd) 

# Ajustar el modelo completo de regresian lineal
modelo_completo <- lm(re_pana ~ 
                        al_caal + cv_ccvi +  cs_ring + ga_porb + ip_pism +
                        pz_pobr + se_cvcs + sb_pvdr +  ss_pasa +
                        ie_nesc + ed_phind, data = bd)

# Mostrar un resumen del modelo
summary(modelo_completo)
## 
## Call:
## lm(formula = re_pana ~ al_caal + cv_ccvi + cs_ring + ga_porb + 
##     ip_pism + pz_pobr + se_cvcs + sb_pvdr + ss_pasa + ie_nesc + 
##     ed_phind, data = bd)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -49146 -15421  -4800  14628  48014 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -2.994e+05  1.111e+05  -2.695   0.0139 *  
## al_caal      5.028e+03  5.623e+04   0.089   0.9296    
## cv_ccvi     -2.081e+04  3.725e+04  -0.559   0.5826    
## cs_ring      1.681e+03  1.479e+03   1.137   0.2692    
## ga_porb      2.820e+02  2.275e+03   0.124   0.9026    
## ip_pism      5.337e+02  8.342e+02   0.640   0.5296    
## pz_pobr     -2.262e-03  9.690e-03  -0.233   0.8178    
## se_cvcs      1.857e+05  1.001e+05   1.855   0.0783 .  
## sb_pvdr      2.305e+03  1.626e+03   1.418   0.1716    
## ss_pasa     -2.849e+03  1.844e+03  -1.545   0.1380    
## ie_nesc      1.959e+01  3.258e+00   6.013 7.04e-06 ***
## ed_phind    -7.675e+02  2.527e+03  -0.304   0.7645    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 28540 on 20 degrees of freedom
## Multiple R-squared:  0.9742, Adjusted R-squared:   0.96 
## F-statistic: 68.55 on 11 and 20 DF,  p-value: 2.1e-13
# Aplicar la seleccion stepwise
modelo_stepwise <- step(modelo_nulo, 
                        scope = list(lower = modelo_nulo, upper = modelo_completo), 
                        direction = "both")  # "both" para hacia adelante y hacia atras
## Start:  AIC=760.53
## re_pana ~ 1
## 
##            Df  Sum of Sq        RSS    AIC
## + ie_nesc   1 5.5825e+11 7.2262e+10 693.21
## + pz_pobr   1 4.2638e+11 2.0414e+11 726.44
## + ss_pasa   1 3.7197e+11 2.5855e+11 734.00
## + al_caal   1 3.6460e+11 2.6592e+11 734.90
## + se_cvcs   1 3.2479e+11 3.0572e+11 739.37
## + cs_ring   1 3.1313e+11 3.1739e+11 740.57
## + ed_phind  1 3.0558e+11 3.2493e+11 741.32
## + sb_pvdr   1 2.9107e+11 3.3944e+11 742.71
## + ga_porb   1 2.5469e+11 3.7583e+11 745.97
## + cv_ccvi   1 2.4887e+11 3.8165e+11 746.46
## + ip_pism   1 1.8640e+11 4.4412e+11 751.32
## <none>                   6.3052e+11 760.53
## 
## Step:  AIC=693.21
## re_pana ~ ie_nesc
## 
##            Df  Sum of Sq        RSS    AIC
## + cs_ring   1 4.4712e+10 2.7550e+10 664.35
## + al_caal   1 4.4351e+10 2.7910e+10 664.77
## + sb_pvdr   1 4.4211e+10 2.8051e+10 664.93
## + se_cvcs   1 4.3963e+10 2.8299e+10 665.21
## + ed_phind  1 3.8462e+10 3.3799e+10 670.90
## + cv_ccvi   1 3.3041e+10 3.9220e+10 675.66
## + ga_porb   1 2.6195e+10 4.6067e+10 680.80
## + ip_pism   1 2.2964e+10 4.9297e+10 682.97
## + ss_pasa   1 1.2679e+10 5.9583e+10 689.04
## <none>                   7.2262e+10 693.21
## + pz_pobr   1 3.0481e+09 6.9214e+10 693.83
## - ie_nesc   1 5.5825e+11 6.3052e+11 760.53
## 
## Step:  AIC=664.35
## re_pana ~ ie_nesc + cs_ring
## 
##            Df  Sum of Sq        RSS    AIC
## + se_cvcs   1 6.4535e+09 2.1096e+10 657.81
## + sb_pvdr   1 5.4075e+09 2.2142e+10 659.36
## + al_caal   1 5.3936e+09 2.2156e+10 659.38
## + cv_ccvi   1 3.4739e+09 2.4076e+10 662.04
## <none>                   2.7550e+10 664.35
## + ip_pism   1 1.1944e+09 2.6355e+10 664.93
## + ed_phind  1 7.6788e+08 2.6782e+10 665.45
## + ga_porb   1 5.4441e+08 2.7005e+10 665.71
## + ss_pasa   1 9.4836e+07 2.7455e+10 666.24
## + pz_pobr   1 1.4891e+07 2.7535e+10 666.34
## - cs_ring   1 4.4712e+10 7.2262e+10 693.21
## - ie_nesc   1 2.8984e+11 3.1739e+11 740.57
## 
## Step:  AIC=657.81
## re_pana ~ ie_nesc + cs_ring + se_cvcs
## 
##            Df  Sum of Sq        RSS    AIC
## + sb_pvdr   1 2.1040e+09 1.8992e+10 656.45
## + ss_pasa   1 1.8713e+09 1.9225e+10 656.84
## <none>                   2.1096e+10 657.81
## + ip_pism   1 5.4641e+08 2.0550e+10 658.97
## + ed_phind  1 2.8620e+08 2.0810e+10 659.37
## + ga_porb   1 2.8314e+08 2.0813e+10 659.38
## + al_caal   1 2.5399e+08 2.0842e+10 659.42
## + cv_ccvi   1 4.2118e+07 2.1054e+10 659.75
## + pz_pobr   1 2.3874e+06 2.1094e+10 659.81
## - se_cvcs   1 6.4535e+09 2.7550e+10 664.35
## - cs_ring   1 7.2031e+09 2.8299e+10 665.21
## - ie_nesc   1 2.5548e+11 2.7658e+11 738.16
## 
## Step:  AIC=656.45
## re_pana ~ ie_nesc + cs_ring + se_cvcs + sb_pvdr
## 
##            Df  Sum of Sq        RSS    AIC
## + ss_pasa   1 1.9864e+09 1.7006e+10 654.91
## <none>                   1.8992e+10 656.45
## - sb_pvdr   1 2.1040e+09 2.1096e+10 657.81
## + pz_pobr   1 2.2190e+08 1.8770e+10 658.07
## + ga_porb   1 1.5646e+08 1.8836e+10 658.18
## + ip_pism   1 8.2388e+07 1.8910e+10 658.31
## - cs_ring   1 2.4593e+09 2.1451e+10 658.35
## + cv_ccvi   1 5.5783e+07 1.8936e+10 658.36
## + al_caal   1 3.6430e+07 1.8956e+10 658.39
## + ed_phind  1 2.1328e+07 1.8971e+10 658.41
## - se_cvcs   1 3.1500e+09 2.2142e+10 659.36
## - ie_nesc   1 2.5404e+11 2.7303e+11 739.75
## 
## Step:  AIC=654.91
## re_pana ~ ie_nesc + cs_ring + se_cvcs + sb_pvdr + ss_pasa
## 
##            Df  Sum of Sq        RSS    AIC
## <none>                   1.7006e+10 654.91
## + ip_pism   1 2.5511e+08 1.6751e+10 656.43
## - ss_pasa   1 1.9864e+09 1.8992e+10 656.45
## + cv_ccvi   1 1.7085e+08 1.6835e+10 656.59
## + ed_phind  1 6.8377e+07 1.6937e+10 656.79
## - sb_pvdr   1 2.2190e+09 1.9225e+10 656.84
## + pz_pobr   1 2.1556e+07 1.6984e+10 656.87
## + ga_porb   1 1.2538e+07 1.6993e+10 656.89
## + al_caal   1 9.1998e+06 1.6996e+10 656.90
## - cs_ring   1 2.2574e+09 1.9263e+10 656.90
## - se_cvcs   1 5.0679e+09 2.2074e+10 661.26
## - ie_nesc   1 1.9444e+11 2.1144e+11 733.57
# Resumen del modelo stepwise
summary(modelo_stepwise)
## 
## Call:
## lm(formula = re_pana ~ ie_nesc + cs_ring + se_cvcs + sb_pvdr + 
##     ss_pasa, data = bd)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -48087 -13295  -2828  16690  50917 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -2.710e+05  8.124e+04  -3.336  0.00257 ** 
## ie_nesc      1.891e+01  1.097e+00  17.242 9.49e-16 ***
## cs_ring      1.710e+03  9.203e+02   1.858  0.07456 .  
## se_cvcs      1.587e+05  5.703e+04   2.784  0.00989 ** 
## sb_pvdr      2.084e+03  1.132e+03   1.842  0.07692 .  
## ss_pasa     -2.582e+03  1.482e+03  -1.743  0.09321 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 25570 on 26 degrees of freedom
## Multiple R-squared:  0.973,  Adjusted R-squared:  0.9678 
## F-statistic: 187.6 on 5 and 26 DF,  p-value: < 2.2e-16
# Variables seleccionadas
modelo_stepwise$coefficients
##  (Intercept)      ie_nesc      cs_ring      se_cvcs      sb_pvdr      ss_pasa 
## -270979.3671      18.9109    1709.6803  158738.9580    2084.4612   -2582.0758
# Extraer los nombres de las variables seleccionadas en el modelo stepwise
variables_seleccionadas <- names(coef(modelo_stepwise))[-1]  # Excluye el intercepto

# Filtrar las descripciones correspondientes en dic_bd
descripciones <- dic_bd[dic_bd$variable %in% variables_seleccionadas, c("variable", "descripcion")]

# Mostrar la tabla en un formato mas legible
kable(descripciones, format = "html", table.attr = "style='width:100%;'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F) %>%
  scroll_box(width = "100%", height = "300px")
variable descripcion
cs_ring Razón de ingreso
ie_nesc Numero de escuelas por estado
se_cvcs Carencias promedio vulnerables por carencia social 2020
sb_pvdr Porcentaje de viviendas que no disponen de refrigerador
ss_pasa Porcentaje de poblacion carencia por acceso a los servicios de salud
# Generar predicciones del modelo
predicciones <- predict(modelo_stepwise)

# Crear el grafico: valores reales vs predicciones
plot(bd$re_ptot, predicciones, 
     main = "Prediccion vs Valores Observados", 
     xlab = "Valores Observados (re_ptot)", 
     ylab = "Valores Predichos", 
     col = "blue", 
     pch = 20)
abline(0, 1, col = "red")  # Linea de referencia

# Filtrar la base de datos para incluir solo las variables seleccionadas
var_sel <- bd[, variables_seleccionadas]

# Calcular la matriz de correlacion
mc_rez <- round(cor(var_sel, use = "pairwise.complete.obs"),2)

# Generar el correlograma
ggcorrplot(mc_rez, 
           type = "lower", 
           lab = TRUE, 
           title = "Correlograma variables signficativas vs rezago educativo",
           colors = c("red", "white", "blue"))

# Guardar la matriz en un archivo para futuras consultas
#write.csv(mc_rez, paste0(dibas, "rezago_matriz_correlacion.csv"))

Objetivo 3

Para la identificación de los estados con mayor brecha educativa y socioeconómica.De acuerdo con las variables definidas en el modelo de regresión lineal. Se utilizaron las consultas en SQL representadas en los mapas.