Expansión de la CASEN sobre el CENSO de PERSONAS (Nivel parcial regional urbano para el 2017)

Y regresión lineal de ingresos medios por zona sobre frecuencias de respuesta a la pregunta P17: ¿Trabajó por un pago o especie?, cuya correlación (0.8717) resultó la más alta con los ingresos expandidos.

VE-CC-AJ

DataIntelligence

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: “Trabajó por un pago o especie” del campo P17 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 ese 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. Aun no construimos en uno para evitar que excedan valores muy altos.


1.1 Variable CENSO

Necesitamos calcular las frecuencias a nivel censal de las respuestas correspondientes a la categoría: “Trabajó por un pago o especie” del campo P17 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:

tabla_con_clave <- readRDS("censo_personas_con_clave_17")

Se aplica un ciclo for a una función fn_reg para una región 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.

fn_reg <- function(ff){
  
tabla_con_clave_u <- filter(tabla_con_clave, tabla_con_clave$AREA ==1)
tabla_con_clave_u <- filter(tabla_con_clave_u, tabla_con_clave_u$REGION == ff)

tabla_con_clave_f <- tabla_con_clave_u[,-c(1,2,4:31,33:48),drop=F]

codigos <- tabla_con_clave_f$COMUNA
rango <- seq(1:nrow(tabla_con_clave_f))
cadena <- paste("0",codigos[rango], sep = "")
cadena <- substr(cadena,(nchar(cadena)[rango])-(4),6)
codigos <- as.data.frame(codigos)
cadena <- as.data.frame(cadena)
comuna_corr <- cbind(tabla_con_clave_f,cadena)
comuna_corr <- comuna_corr[,-c(1),drop=FALSE]
names(comuna_corr)[3] <- "código" 
 
tabla_con_clave_f <- comuna_corr

claves_con_1 <- filter(tabla_con_clave_f, tabla_con_clave_f$P17 == 1)

con4 <- xtabs(~P17+clave, data=claves_con_1)
con4 <- as.data.frame(con4)

trabajo_001 = merge( x = con4, y =claves_con_1, by = "clave", all.x = TRUE)

trabajo003 <- unique(trabajo_001)
trabajo003 <- trabajo003[,-c(2,4)]

df_2017_2 <- readRDS("Ingresos_expandidos_urbano_17.rds")

comunas_censo_casen_666 = merge( x = trabajo003, y = df_2017_2, by = "código", all.x = TRUE)

tabla_de_prop_pob <- readRDS("tabla_de_prop_pob.rds")
names(tabla_de_prop_pob)[1]  <- "clave"

comunas_censo_casen_6666 = merge( x = comunas_censo_casen_666, y = tabla_de_prop_pob, by = "clave", all.x = TRUE)

comunas_censo_casen_6666$multipob <- comunas_censo_casen_6666$ingresos_expandidos*comunas_censo_casen_6666$p

nombre_1 <- paste0("tablas_regiones/tabla_de_trabajo_multipob_region_",ff,"_urbana.rds")
nombre_2 <- paste0("tablas_regiones/tabla_de_trabajo_multipob_region_",ff,"_urbana.xlsx")

# saveRDS(comunas_censo_casen_6666, nombre_1)
write_xlsx(comunas_censo_casen_6666, nombre_2)

tabla_de_trabajo <<- comunas_censo_casen_6666

################

### 8.1 Modelo cuadrático
linearMod <- lm( multipob~(Freq.x^2) , data=tabla_de_trabajo)
datos <- summary(linearMod)
dato <- datos$adj.r.squared
modelo <- "cuadrático"
sintaxis <- "linearMod <- lm( multi_pob~(Freq.x^2) , data=h_y_m_comuna_corr_01)"
modelos1 <- cbind(modelo,dato,sintaxis)

### 8.2 Modelo cúbico
linearMod <- lm( multipob~(Freq.x^3) , data=tabla_de_trabajo)
datos <- summary(linearMod)
dato <- datos$adj.r.squared
modelo <- "cúbico"
sintaxis <- "linearMod <- lm( multi_pob~(Freq.x^3) , data=h_y_m_comuna_corr_01)"
modelos2 <- cbind(modelo,dato,sintaxis)
 
### 8.3 Modelo logarítmico
linearMod <- lm( multipob~log(Freq.x) , data=tabla_de_trabajo)
datos <- summary(linearMod)
dato <- datos$adj.r.squared
modelo <- "logarítmico"
sintaxis <- "linearMod <- lm( multi_pob~log(Freq.x) , data=h_y_m_comuna_corr_01)"
modelos3 <- cbind(modelo,dato,sintaxis)
 
### 8.5 Modelo con raíz cuadrada 
linearMod <- lm( multipob~sqrt(Freq.x) , data=tabla_de_trabajo)
datos <- summary(linearMod)
dato <- datos$adj.r.squared
modelo <- "raíz cuadrada"
sintaxis <- "linearMod <- lm( multi_pob~sqrt(Freq.x) , data=h_y_m_comuna_corr_01)"
modelos5 <- cbind(modelo,dato,sintaxis)
 
### 8.6 Modelo raíz-raíz
linearMod <- lm( sqrt(multipob)~sqrt(Freq.x) , data=tabla_de_trabajo)
datos <- summary(linearMod)
dato <- datos$adj.r.squared
modelo <- "raíz-raíz"
sintaxis <- "linearMod <- lm( sqrt(multi_pob)~sqrt(Freq.x) , data=h_y_m_comuna_corr_01)"
modelos6 <- cbind(modelo,dato,sintaxis)
 
### 8.7 Modelo log-raíz
linearMod <- lm( log(multipob)~sqrt(Freq.x) , data=tabla_de_trabajo)
datos <- summary(linearMod)
dato <- datos$adj.r.squared
modelo <- "log-raíz"
sintaxis <- "linearMod <- lm( log(multi_pob)~sqrt(Freq.x) , data=h_y_m_comuna_corr_01)"
modelos7 <- cbind(modelo,dato,sintaxis)
 
### 8.8 Modelo raíz-log
linearMod <- lm( sqrt(multipob)~log(Freq.x) , data=tabla_de_trabajo)
datos <- summary(linearMod)
dato <- datos$adj.r.squared
modelo <- "raíz-log"
sintaxis <- "linearMod <- lm( sqrt(multi_pob)~log(Freq.x) , data=h_y_m_comuna_corr_01)"
modelos8 <- cbind(modelo,dato,sintaxis)
 
### 8.9 Modelo log-log
linearMod <- lm( log(multipob)~log(Freq.x) , data=tabla_de_trabajo)
datos <- summary(linearMod)
dato <- datos$adj.r.squared
modelo <- "log-log"
sintaxis <- "linearMod <- lm( log(multi_pob)~log(Freq.x) , data=h_y_m_comuna_corr_01)"
modelos9 <- cbind(modelo,dato,sintaxis)
 
modelos_bind <- rbind(modelos1, modelos2,modelos3,modelos5,modelos6,modelos7,modelos8,modelos9)
modelos_bind <- as.data.frame(modelos_bind)
h_y_m_comuna_corr_01 <<- tabla_de_trabajo


modelos_bind <- cbind(row.names(modelos_bind),modelos_bind)
names(modelos_bind)[1] <- "n"
modelos_bind$dato <- as.numeric(modelos_bind$dato)
modelos_bind <- modelos_bind[order(modelos_bind$dato, decreasing = T ),]


for(i in modelos_bind$n) {
 
  numero <- modelos_bind[i,1]
  numero <- as.numeric(numero)
  
  h_y_m_comuna_corr <- h_y_m_comuna_corr_01
  metodo <- numero
  switch (metodo,
          case = linearMod <- lm( multipob~(Freq.x^2) , data=h_y_m_comuna_corr),
          case = linearMod <- lm( multipob~(Freq.x^3) , data=h_y_m_comuna_corr),
          case = linearMod <- lm( multipob~log(Freq.x) , data=h_y_m_comuna_corr),
          case = linearMod <- lm( multipob~sqrt(Freq.x) , data=h_y_m_comuna_corr),
          case = linearMod <- lm( sqrt(multipob)~sqrt(Freq.x) , data=h_y_m_comuna_corr),
          case = linearMod <- lm( log(multipob)~sqrt(Freq.x) , data=h_y_m_comuna_corr),
          case = linearMod <- lm( sqrt(multipob)~log(Freq.x) , data=h_y_m_comuna_corr),
          case = linearMod <- lm( log(multipob)~log(Freq.x) , data=h_y_m_comuna_corr)
  )
  
  rq <<- summary(linearMod)
  valor1 <- rq$coefficients[8] < 0.001
  valor2 <- rq$coefficients[7] < 0.001
 
  if(valor2 == TRUE & valor1 == TRUE) {
     
    print("------")
    print(paste0("region ", ff))
     
    
    print(modelos_bind[i,2])
    
    print(rq)
    break
    
  } 
} 


aa <- rq$coefficients[1] 
bb <- rq$coefficients[2] 


tabla_de_trabajo$est_ing <- exp(aa+bb*log(tabla_de_trabajo$Freq.x))

tabla_de_trabajo$ing_medio_zona <- tabla_de_trabajo$est_ing /(tabla_de_trabajo$personas  * tabla_de_trabajo$p)

nombre_3 <- paste0("tablas_regiones/tabla_de_trabajo_region_",ff,"_u.xlsx")
nombre_4 <- paste0("tablas_regiones/tabla_de_trabajo_region_",ff,"_u.dbf")

write_xlsx(tabla_de_trabajo, nombre_3)
write.dbf(tabla_de_trabajo, nombre_4)


## Estadísticos

ingresos <- readRDS("Ingresos_expandidos_urbano_17.rds")
kbl(ingresos) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kable_paper() %>%
  scroll_box(width = "100%", height = "300px")

### Promedio

t_de_c <- tabla_de_trabajo %>%
  group_by(código.y) %>%
  summarize(mean = mean(ing_medio_zona, na.rm = TRUE))
names(t_de_c)[1] <- "código"
estadisticos_finales <- merge( x = ingresos, y = t_de_c, by = "código", all.x = TRUE)

### Desviación standard

t_de_c_2 <- tabla_de_trabajo %>%
  group_by(código.y) %>%
  summarize(sd = sd(ing_medio_zona, na.rm = TRUE))
names(t_de_c_2)[1] <- "código"
estadisticos_finales <- merge( x = estadisticos_finales, y = t_de_c_2, by = "código", all.x = TRUE)

### Mínimo

t_de_c_3 <- tabla_de_trabajo %>%
  group_by(código.y) %>%
  summarize(min = min(ing_medio_zona, na.rm = TRUE))
names(t_de_c_3)[1] <- "código"
estadisticos_finales <- merge( x = estadisticos_finales, y = t_de_c_3, by = "código", all.x = TRUE)

### Máximo

t_de_c_4 <- tabla_de_trabajo %>%
  group_by(código.y) %>%
  summarize(max = max(ing_medio_zona, na.rm = TRUE))
names(t_de_c_4)[1] <- "código"
estadisticos_finales <- merge( x = estadisticos_finales, y = t_de_c_4, by = "código", all.x = TRUE)

### Mediana

t_de_c_5 <- tabla_de_trabajo %>%
  group_by(código.y) %>%
  summarize(median = median(ing_medio_zona, na.rm = TRUE))
names(t_de_c_5)[1] <- "código"
estadisticos_finales <- merge( x = estadisticos_finales, y = t_de_c_5, by = "código", all.x = TRUE)

nombre_5 <- paste0("tablas_regiones/estadisticos_finales_region_",ff,"_u.xlsx")
nombre_6 <- paste0("tablas_regiones/estadisticos_finales_region_",ff,"_u.dbf")

write_xlsx(estadisticos_finales, nombre_5)
write.dbf(estadisticos_finales, nombre_6)



}

1.1.2 Generalización a las 16 regiones

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 
## -0.80221 -0.04364  0.00641  0.05831  0.19431 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.13441    0.12089   108.6   <2e-16 ***
## log(Freq.x)  1.06604    0.01671    63.8   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1178 on 82 degrees of freedom
##   (2 observations deleted due to missingness)
## Multiple R-squared:  0.9803, Adjusted R-squared:   0.98 
## F-statistic:  4070 on 1 and 82 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 
## -0.56590 -0.06268 -0.00230  0.09399  0.39941 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.11756    0.12251  107.07   <2e-16 ***
## log(Freq.x)  1.08183    0.01699   63.69   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1548 on 153 degrees of freedom
## Multiple R-squared:  0.9636, Adjusted R-squared:  0.9634 
## F-statistic:  4056 on 1 and 153 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 
## -0.92668 -0.11178  0.03194  0.09412  0.81367 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.33031    0.12599  105.80   <2e-16 ***
## log(Freq.x)  1.04410    0.01846   56.56   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1882 on 86 degrees of freedom
## Multiple R-squared:  0.9738, Adjusted R-squared:  0.9735 
## F-statistic:  3199 on 1 and 86 DF,  p-value: < 2.2e-16
## 
## [1] "------"
## [1] "region 4"
## [1] "log-log"
## 
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.38856 -0.06064  0.00479  0.05465  1.57365 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.24733    0.07055   187.8   <2e-16 ***
## log(Freq.x)  1.03072    0.01024   100.7   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1533 on 192 degrees of freedom
## Multiple R-squared:  0.9814, Adjusted R-squared:  0.9813 
## F-statistic: 1.013e+04 on 1 and 192 DF,  p-value: < 2.2e-16
## 
## [1] "------"
## [1] "region 5"
## [1] "log-log"
## 
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.56585 -0.08191  0.01045  0.09670  0.57219 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.344140   0.033018   404.1   <2e-16 ***
## log(Freq.x)  1.029538   0.005011   205.5   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1508 on 705 degrees of freedom
##   (3 observations deleted due to missingness)
## Multiple R-squared:  0.9836, Adjusted R-squared:  0.9836 
## F-statistic: 4.222e+04 on 1 and 705 DF,  p-value: < 2.2e-16
## 
## [1] "------"
## [1] "region 6"
## [1] "log-log"
## 
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.88841 -0.08568  0.01613  0.08393  0.70457 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.270613   0.037336   355.4   <2e-16 ***
## log(Freq.x)  1.031145   0.005798   177.8   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1622 on 289 degrees of freedom
## Multiple R-squared:  0.9909, Adjusted R-squared:  0.9909 
## F-statistic: 3.162e+04 on 1 and 289 DF,  p-value: < 2.2e-16
## 
## [1] "------"
## [1] "region 7"
## [1] "log-log"
## 
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.56096 -0.09407  0.00022  0.09547  0.58585 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.194444   0.036408   362.4   <2e-16 ***
## log(Freq.x)  1.033460   0.005584   185.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1469 on 314 degrees of freedom
## Multiple R-squared:  0.9909, Adjusted R-squared:  0.9909 
## F-statistic: 3.425e+04 on 1 and 314 DF,  p-value: < 2.2e-16
## 
## [1] "------"
## [1] "region 8"
## [1] "log-log"
## 
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.63018 -0.08073  0.00398  0.09089  0.63829 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.244337   0.038309   345.7   <2e-16 ***
## log(Freq.x)  1.039956   0.005651   184.0   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1406 on 482 degrees of freedom
## Multiple R-squared:  0.986,  Adjusted R-squared:  0.9859 
## F-statistic: 3.386e+04 on 1 and 482 DF,  p-value: < 2.2e-16
## 
## [1] "------"
## [1] "region 9"
## [1] "log-log"
## 
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.52771 -0.07164  0.01152  0.08830  0.51674 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.32733    0.04397   303.1   <2e-16 ***
## log(Freq.x)  1.01354    0.00665   152.4   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1447 on 267 degrees of freedom
## Multiple R-squared:  0.9886, Adjusted R-squared:  0.9886 
## F-statistic: 2.323e+04 on 1 and 267 DF,  p-value: < 2.2e-16
## 
## [1] "------"
## [1] "region 10"
## [1] "log-log"
## 
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.84706 -0.08772  0.01168  0.09073  0.82473 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.121051   0.051700   253.8   <2e-16 ***
## log(Freq.x)  1.039975   0.007657   135.8   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1684 on 219 degrees of freedom
##   (11 observations deleted due to missingness)
## Multiple R-squared:  0.9883, Adjusted R-squared:  0.9882 
## F-statistic: 1.845e+04 on 1 and 219 DF,  p-value: < 2.2e-16
## 
## [1] "------"
## [1] "region 11"
## [1] "log-log"
## 
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.29595 -0.03726  0.01726  0.06128  0.48127 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.09285    0.10484  124.88   <2e-16 ***
## log(Freq.x)  1.04935    0.01612   65.09   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1373 on 38 degrees of freedom
##   (2 observations deleted due to missingness)
## Multiple R-squared:  0.9911, Adjusted R-squared:  0.9909 
## F-statistic:  4237 on 1 and 38 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 
## -0.23886 -0.04641  0.01746  0.05216  0.16409 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.35730    0.10573  126.33   <2e-16 ***
## log(Freq.x)  1.03457    0.01507   68.64   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.08727 on 54 degrees of freedom
##   (2 observations deleted due to missingness)
## Multiple R-squared:  0.9887, Adjusted R-squared:  0.9885 
## F-statistic:  4712 on 1 and 54 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 
## -0.79100 -0.09181 -0.01093  0.08195  0.88476 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.312262   0.032180   413.7   <2e-16 ***
## log(Freq.x)  1.028448   0.004412   233.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1449 on 1912 degrees of freedom
## Multiple R-squared:  0.966,  Adjusted R-squared:  0.966 
## F-statistic: 5.433e+04 on 1 and 1912 DF,  p-value: < 2.2e-16
## 
## [1] "------"
## [1] "region 14"
## [1] "log-log"
## 
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.93296 -0.05082  0.01332  0.08142  0.63231 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.41438    0.07622  175.99   <2e-16 ***
## log(Freq.x)  1.00595    0.01142   88.08   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1722 on 97 degrees of freedom
## Multiple R-squared:  0.9877, Adjusted R-squared:  0.9875 
## F-statistic:  7758 on 1 and 97 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 
## -0.75080 -0.01724  0.03871  0.07371  0.15581 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.02772    0.21270   61.25   <2e-16 ***
## log(Freq.x)  1.07196    0.03069   34.93   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1442 on 72 degrees of freedom
## Multiple R-squared:  0.9443, Adjusted R-squared:  0.9435 
## F-statistic:  1220 on 1 and 72 DF,  p-value: < 2.2e-16
## 
## [1] "------"
## [1] "region 16"
## [1] "log-log"
## 
## Call:
## lm(formula = log(multipob) ~ log(Freq.x), data = h_y_m_comuna_corr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.65630 -0.08931  0.01972  0.08602  0.97258 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.539744   0.058259   232.4   <2e-16 ***
## log(Freq.x)  0.984671   0.009331   105.5   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2005 on 151 degrees of freedom
## Multiple R-squared:  0.9866, Adjusted R-squared:  0.9865 
## F-statistic: 1.114e+04 on 1 and 151 DF,  p-value: < 2.2e-16

1.2 Tablas de trabajo (sobre la cual se calcula la ecuación de regresión)

archivos <- dir("tablas_regiones", pattern = "*.xlsx")
archivos <- as.data.frame(archivos)
archivos <- filter(archivos, grepl("tabla_de_trabajo_multipob_region", archivos) ) 
archivos <- as.vector(archivos$archivos)
receptaculo <- data.frame()

for (n in archivos) {

direcciones <- paste0("tablas_regiones/",n)
cargado <- read_xlsx(direcciones) 

region <- str_replace_all(direcciones, "tablas_regiones/tabla_de_trabajo_multipob_","")
region <- str_replace_all(region, "_urbana.xlsx","")

cargado$region <- paste0(region,"_u")

receptaculo <- rbind(receptaculo, cargado)

}

write_xlsx(receptaculo,"tablas_regiones/uniones/Tablas_de_trabajo_u.xlsx")

datatable(head(receptaculo,100),filter = 'bottom',class = 'cell-border stripe',
          options = list(
            pageLength = 5,
            autoWidth = TRUE
))

1.3 Tabla de regresión lineal

archivos <- dir("tablas_regiones", pattern = "*.xlsx")
archivos <- as.data.frame(archivos)
archivos <- filter(archivos, grepl("tabla_de_trabajo_region", archivos) ) 
archivos <- as.vector(archivos$archivos)
 
receptaculo <- data.frame()

for (n in archivos) {

direcciones <- paste0("tablas_regiones/",n)
cargado <- read_xlsx(direcciones) 

region <- str_replace_all(direcciones, "tablas_regiones/tabla_de_trabajo_","")
region <- str_replace_all(region, "_u.xlsx","")

cargado$region <- paste0(region,"_u")

receptaculo <- rbind(receptaculo, cargado)

} 
write_xlsx(receptaculo,"tablas_regiones/uniones/Tabla_de_regresión_lineal_u.xlsx")

datatable(head(receptaculo,100),filter = 'bottom',class = 'cell-border stripe',
          options = list(
            pageLength = 5,
            autoWidth = TRUE
))

1.4 Tablas de estadisticas zonales

archivos <- dir("tablas_regiones", pattern = "*.xlsx")
archivos <- as.data.frame(archivos)
archivos <- filter(archivos, grepl("estadisticos_finales_region", archivos) ) 
archivos <- as.vector(archivos$archivos)

receptaculo <- data.frame()

for (n in archivos) {

direcciones <- paste0("tablas_regiones/",n)
cargado <- read_xlsx(direcciones)
cargado <- cargado[,-c(2,3,4,5,6)]
cargado <- filter(cargado, cargado$mean != 'is.na')

region <- str_replace_all(direcciones, "tablas_regiones/estadisticos_finales_","")
region <- str_replace_all(region, "_u.xlsx","")

cargado$region <- paste0(region,"_u")

receptaculo <- rbind(receptaculo, cargado)

}
cargado2 <- read_xlsx(direcciones)
cargado2 <- cargado2[,c(1,2,3,4,5,6)]

receptaculo2u <- merge(x = cargado2, y = receptaculo, by = "código", all.x = TRUE)
write_xlsx(receptaculo2u,"tablas_regiones/uniones/Tablas_de_estadisticas_zonales_u.xlsx")

datatable(head(receptaculo2u,100),filter = 'bottom',class = 'cell-border stripe',
          options = list(
            pageLength = 5,
            autoWidth = TRUE
))


Em un trabajo anterior aquí construimos 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:

  1. clave
  2. promedio_i
  3. ing_medio_zona_nacional
  4. ing_medio_zona_regional
tabla_nacional <- read.dbf("tabla_de_trabajo_2 (1).dbf")
names(tabla_nacional)[14] <- "ingresos_medios_zona"
tabla_zonal <- read_xlsx("tablas_regiones/uniones/Tabla_de_regresión_lineal_u.xlsx")
names(tabla_zonal)[14] <- "ingresos_medios_zonales_parciales"
tabla_comprobar <- merge(x= tabla_nacional, y= tabla_zonal, by= "clave", all.x = TRUE)
tabla_comprobar <- tabla_comprobar[,c(1,6,14,27)]

datatable(head(tabla_comprobar,100),filter = 'bottom',class = 'cell-border stripe',
          options = list(
            pageLength = 5,
            autoWidth = TRUE
))
tabla_comprobar$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)

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] 194416972
sum(tabla_comprobar$parciales, na.rm = TRUE)
## [1] 177889562
length(tabla_comprobar$totales)
## [1] 5165
length(tabla_comprobar$parciales)
## [1] 5165