date: 02-08-2021
1 Resumen
Iniciaremos expandiendo los ingresos promedios (multiplicación del ingreso promedio mensual comunal y los habitantes de la misma comuna) obtenidos de la CASEN 2017 sobre la categoría de respuesta: “Escolaridad” del CENSO de personas del 2017, que fue la categoría de respuesta que más alto correlacionó con los ingresos expandidos, ambos a nivel comunal y ambos a nivel URBANO.
En este trabajo continuaremos con el análisis sobre el Chile urbano pero de manera parcial-regional. Automatizaremos para seleccionar el mejor modelo que maximice el coeficiente de determinación, y sobre tal modelo ejecutaremos la variable independiente para obtener nuestros ingresos estimados y los ingresos medios por zona.
Aplicamos un criterio para evitar que los ingresos promedio estimados por zona salgan de limites razonables
1.1 Variable CENSO
Necesitamos calcular las frecuencias a nivel censal de las respuestas correspondientes a la categoría: Escolaridad del Censo de personas. Recordemos que ésta fué la más alta correlación en relación a los ingresos expandidos (ver aquí).
1.1.1 Lectura y tratamiento de la tabla censal de personas
Leemos la tabla Censo 2017 de personas que ya tiene integrada la clave zonal:
<- readRDS("censo_personas_con_clave_17") tabla_con_clave
Se aplica un ciclo for a una función fn_reg para una region sobre los 8 modelos existentes para elegir el que posea el mayor coeficiente de determinación, y con una condición if, dentro, validamos que los coeficientes de la regresión sean estadisticamente significativos.
for (ff in 1:16) {
fn_reg(ff)
}
## [1] "------"
## [1] "region 1"
## [1] "log-log"
##
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.50687 -0.16130 -0.00176 0.14035 1.87748
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.05199 0.07067 198.8 <2e-16 ***
## log(Freq.x) 0.96185 0.01480 65.0 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4302 on 152 degrees of freedom
## (43 observations deleted due to missingness)
## Multiple R-squared: 0.9653, Adjusted R-squared: 0.965
## F-statistic: 4225 on 1 and 152 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 2"
## [1] "log-log"
##
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.28129 -0.22751 0.07178 0.23656 1.09884
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.87272 0.07725 179.57 <2e-16 ***
## log(Freq.x) 0.95189 0.01507 63.14 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4125 on 130 degrees of freedom
## (132 observations deleted due to missingness)
## Multiple R-squared: 0.9684, Adjusted R-squared: 0.9682
## F-statistic: 3987 on 1 and 130 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 3"
## [1] "log-log"
##
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.87110 -0.22328 0.00864 0.21298 2.85636
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.05754 0.05873 239.35 <2e-16 ***
## log(Freq.x) 0.94293 0.01318 71.52 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.435 on 231 degrees of freedom
## (31 observations deleted due to missingness)
## Multiple R-squared: 0.9568, Adjusted R-squared: 0.9566
## F-statistic: 5115 on 1 and 231 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 4"
## [1] "raíz-raíz"
##
## Call:
## lm(formula = sqrt(multipob) ~ sqrt(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6241.5 -651.3 -112.7 506.5 8113.1
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 832.862 58.769 14.17 <2e-16 ***
## sqrt(Freq.x) 856.795 3.954 216.68 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1251 on 850 degrees of freedom
## Multiple R-squared: 0.9822, Adjusted R-squared: 0.9822
## F-statistic: 4.695e+04 on 1 and 850 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 5"
## [1] "raíz-raíz"
##
## Call:
## lm(formula = sqrt(multipob) ~ sqrt(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6114.7 -820.5 -198.5 634.4 11856.1
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 668.629 85.784 7.794 1.55e-14 ***
## sqrt(Freq.x) 943.983 4.637 203.569 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1629 on 1049 degrees of freedom
## (189 observations deleted due to missingness)
## Multiple R-squared: 0.9753, Adjusted R-squared: 0.9753
## F-statistic: 4.144e+04 on 1 and 1049 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 6"
## [1] "raíz-raíz"
##
## Call:
## lm(formula = sqrt(multipob) ~ sqrt(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4336.7 -658.1 -99.8 495.3 13021.6
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 724.350 58.968 12.28 <2e-16 ***
## sqrt(Freq.x) 965.711 4.231 228.27 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1296 on 1093 degrees of freedom
## Multiple R-squared: 0.9795, Adjusted R-squared: 0.9794
## F-statistic: 5.211e+04 on 1 and 1093 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 7"
## [1] "raíz-raíz"
##
## Call:
## lm(formula = sqrt(multipob) ~ sqrt(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5502.4 -648.8 -117.2 532.3 15206.6
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 692.037 48.228 14.35 <2e-16 ***
## sqrt(Freq.x) 915.281 3.887 235.46 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1346 on 1547 degrees of freedom
## Multiple R-squared: 0.9729, Adjusted R-squared: 0.9728
## F-statistic: 5.544e+04 on 1 and 1547 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 8"
## [1] "raíz-raíz"
##
## Call:
## lm(formula = sqrt(multipob) ~ sqrt(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10820.6 -689.8 -113.8 577.3 8973.7
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 832.520 53.000 15.71 <2e-16 ***
## sqrt(Freq.x) 870.626 3.762 231.44 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1424 on 1371 degrees of freedom
## (118 observations deleted due to missingness)
## Multiple R-squared: 0.975, Adjusted R-squared: 0.975
## F-statistic: 5.356e+04 on 1 and 1371 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 9"
## [1] "raíz-raíz"
##
## Call:
## lm(formula = sqrt(multipob) ~ sqrt(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7389.5 -678.6 -142.6 510.8 10283.2
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 900.872 37.443 24.06 <2e-16 ***
## sqrt(Freq.x) 814.636 3.547 229.65 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1218 on 1923 degrees of freedom
## Multiple R-squared: 0.9648, Adjusted R-squared: 0.9648
## F-statistic: 5.274e+04 on 1 and 1923 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 10"
## [1] "raíz-raíz"
##
## Call:
## lm(formula = sqrt(multipob) ~ sqrt(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4760.5 -667.8 -105.3 472.9 9360.8
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 972.671 44.178 22.02 <2e-16 ***
## sqrt(Freq.x) 848.974 3.941 215.43 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1205 on 1377 degrees of freedom
## (108 observations deleted due to missingness)
## Multiple R-squared: 0.9712, Adjusted R-squared: 0.9712
## F-statistic: 4.641e+04 on 1 and 1377 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 11"
## [1] "raíz-raíz"
##
## Call:
## lm(formula = sqrt(multipob) ~ sqrt(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2604.3 -655.6 -100.3 547.2 4630.6
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 341.508 94.180 3.626 0.000359 ***
## sqrt(Freq.x) 1017.631 9.571 106.328 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1046 on 215 degrees of freedom
## (18 observations deleted due to missingness)
## Multiple R-squared: 0.9813, Adjusted R-squared: 0.9813
## F-statistic: 1.131e+04 on 1 and 215 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 12"
## [1] "log-log"
##
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.24264 -0.16517 0.00359 0.20103 2.41149
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.56706 0.08648 168.44 <2e-16 ***
## log(Freq.x) 0.87991 0.01801 48.85 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4799 on 118 degrees of freedom
## (78 observations deleted due to missingness)
## Multiple R-squared: 0.9529, Adjusted R-squared: 0.9525
## F-statistic: 2386 on 1 and 118 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 13"
## [1] "log-log"
##
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.19323 -0.20402 -0.03615 0.16156 1.63449
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.294782 0.035035 408.0 <2e-16 ***
## log(Freq.x) 0.929090 0.006746 137.7 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3366 on 776 degrees of freedom
## (1645 observations deleted due to missingness)
## Multiple R-squared: 0.9607, Adjusted R-squared: 0.9606
## F-statistic: 1.897e+04 on 1 and 776 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 14"
## [1] "raíz-raíz"
##
## Call:
## lm(formula = sqrt(multipob) ~ sqrt(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3407.8 -591.3 -102.5 477.1 9672.8
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 794.282 53.008 14.98 <2e-16 ***
## sqrt(Freq.x) 875.924 4.836 181.14 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1057 on 725 degrees of freedom
## Multiple R-squared: 0.9784, Adjusted R-squared: 0.9784
## F-statistic: 3.281e+04 on 1 and 725 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 15"
## [1] "log-log"
##
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.13160 -0.10597 -0.01099 0.13525 0.73068
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.56959 0.06852 198.05 <2e-16 ***
## log(Freq.x) 1.02441 0.01221 83.89 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2722 on 112 degrees of freedom
## (14 observations deleted due to missingness)
## Multiple R-squared: 0.9843, Adjusted R-squared: 0.9842
## F-statistic: 7037 on 1 and 112 DF, p-value: < 2.2e-16
##
## [1] "------"
## [1] "region 16"
## [1] "raíz-raíz"
##
## Call:
## lm(formula = sqrt(multipob) ~ sqrt(Freq.x), data = h_y_m_comuna_corr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6098.9 -542.2 -71.3 502.1 10412.0
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 582.702 45.259 12.88 <2e-16 ***
## sqrt(Freq.x) 890.931 4.575 194.73 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1107 on 1081 degrees of freedom
## Multiple R-squared: 0.9723, Adjusted R-squared: 0.9723
## F-statistic: 3.792e+04 on 1 and 1081 DF, p-value: < 2.2e-16
1.2 Tablas de trabajo (sobre la cual se calcula la ecuación de regresión)
<- dir("tablas_regiones_r", pattern = "*.xlsx")
archivos <- as.data.frame(archivos)
archivos <- filter(archivos, grepl("tabla_de_trabajo_multipob_region", archivos) )
archivos <- as.vector(archivos$archivos)
archivos <- data.frame()
receptaculo
for (n in archivos) {
<- paste0("tablas_regiones_r/",n)
direcciones <- read_xlsx(direcciones)
cargado
<- str_replace_all(direcciones, "tablas_regiones_r/tabla_de_trabajo_multipob_","")
region <- str_replace_all(region, "_rural.xlsx","")
region
$region <- paste0(region,"_r")
cargado
<- rbind(receptaculo, cargado)
receptaculo
}
write_xlsx(receptaculo,"tablas_regiones_r/uniones/Tablas_de_trabajo_r.xlsx")
datatable(head(receptaculo,100),filter = 'bottom',class = 'cell-border stripe',
options = list(
pageLength = 5,
autoWidth = TRUE
))
1.3 Tabla de regresión lineal
<- dir("tablas_regiones_r", pattern = "*.xlsx")
archivos <- as.data.frame(archivos)
archivos <- filter(archivos, grepl("tabla_de_trabajo_region", archivos) )
archivos <- as.vector(archivos$archivos)
archivos
<- data.frame()
receptaculo
for (n in archivos) {
<- paste0("tablas_regiones_r/",n)
direcciones <- read_xlsx(direcciones)
cargado
<- str_replace_all(direcciones, "tablas_regiones_r/tabla_de_trabajo_","")
region <- str_replace_all(region, "_r.xlsx","")
region
$region <- paste0(region,"_r")
cargado
<- rbind(receptaculo, cargado)
receptaculo
} write_xlsx(receptaculo,"tablas_regiones_r/uniones/Tabla_de_regresión_lineal_r.xlsx")
datatable(head(receptaculo,100),filter = 'bottom',class = 'cell-border stripe',
options = list(
pageLength = 5,
autoWidth = TRUE
))
1.4 Tablas de estadisticas zonales
<- dir("tablas_regiones_r", pattern = "*.xlsx")
archivos <- as.data.frame(archivos)
archivos <- filter(archivos, grepl("estadisticos_finales_region", archivos) )
archivos <- as.vector(archivos$archivos)
archivos
<- data.frame()
receptaculo
for (n in archivos) {
<- paste0("tablas_regiones_r/",n)
direcciones <- read_xlsx(direcciones)
cargado <- cargado[,-c(2,3,4,5,6)]
cargado <- filter(cargado, cargado$mean != 'is.na')
cargado
<- str_replace_all(direcciones, "tablas_regiones_r/estadisticos_finales_","")
region <- str_replace_all(region, "_r.xlsx","")
region
$region <- paste0(region,"_r")
cargado
<- rbind(receptaculo, cargado)
receptaculo
}<- read_xlsx(direcciones)
cargado2 <- cargado2[,c(1,2,3,4,5,6)]
cargado2
<- merge(x = cargado2, y = receptaculo, by = "código", all.x = TRUE)
receptaculo2u write_xlsx(receptaculo2u,"tablas_regiones_r/uniones/Tablas_de_estadisticas_zonales_r.xlsx")
datatable(head(receptaculo2u,100),filter = 'bottom',class = 'cell-border stripe',
options = list(
pageLength = 5,
autoWidth = TRUE
))
2 Verificación.
Por un lado hemos construido nuestro campo ingreso medio zona de una sola vez a nivel nacional, en este trabajo lo hemos hecho parcialmente por region, por lo que en teoria debiesemos haber obtenido estimaciones mas cercanas a la realidad, como metodo de prueba haremos lo siguiente:
Tendremos una tabla con cuatro campos:
- clave
- promedio_i
- ing_medio_zona_nacional
- ing_medio_zona_regional
<- read.dbf("tabla_de_trabajo_escolaridad.dbf")
tabla_nacional names(tabla_nacional)[14] <- "ingresos_medios_zona"
<- read_xlsx("tablas_regiones_r/uniones/Tabla_de_regresión_lineal_r.xlsx")
tabla_zonal names(tabla_zonal)[14] <- "ingresos_medios_zonales_parciales"
<- merge(x= tabla_nacional, y= tabla_zonal, by= "clave", all.x = TRUE)
tabla_comprobar <- tabla_comprobar[,c(1,6,14,27)]
tabla_comprobar
datatable(head(tabla_comprobar,100),filter = 'bottom',class = 'cell-border stripe',
options = list(
pageLength = 5,
autoWidth = TRUE
))
$totales <- abs(tabla_comprobar$ingresos_medios_zona - tabla_comprobar$promedio_i.x)
tabla_comprobar
$parciales <- abs(tabla_comprobar$ingresos_medios_zonales_parciales - tabla_comprobar$promedio_i.x)
tabla_comprobar
datatable(head(tabla_comprobar,100),filter = 'bottom',class = 'cell-border stripe',
options = list(
pageLength = 5,
autoWidth = TRUE
))
sum(tabla_comprobar$totales, na.rm = TRUE)
## [1] 626045864
sum(tabla_comprobar$parciales, na.rm = TRUE)
## [1] 735424352
length(tabla_comprobar$totales)
## [1] 10005
length(tabla_comprobar$parciales)
## [1] 10005