Comprobación de datos de pobreza Casen 2006-2020

Para verificar la exactitud de los gráficos flourish.

VE-CC

DataIntelligence
date: 20-10-2021

1 Introducción

Éste trabajo pertenece a una serie de demostraciones en las que queremos verificar que los datos obtenidos por cuenta propia coincidan con los publicados oficialmente por el gobierno de Chile. Como lo demostraremos esto será así.

No esta demás repetir los problemas con los que nos enfrentamos al estudiar la Casen, que no fueron de codificación, sino de su estructura y de una “corrección” que el gobierno de Chile hizo para el cálculo de la pobreza entre el año 2006 y 2011. Nuestros cálculos originales consideraron las 3 Casens oficiales del 2006, 2009 y 2011, que ni siquiera se aproximaba a las cifras oficiales publicadas por el gobierno. Al considerar las bases de datos “corregidas” el problema fue solucionado.

Si bien en el cálculo de la pobreza, las bases de datos eran consistentes, es decir, tenían el mismo tipo donde debían estar en el cálculo de los ingresos, tuvimos problemas que al principio atribuimos a errores de nuestro propio código pero que resultaron ser error de consistencia en la base de datos del 2020: la única Casen que en vez de contener NA contiene 0. En ninguna parte existe registro de esta situación por lo que lo descubrimos analizando exhaustivamente la Casen del 2020.

Para calcular las cifras de pobreza entre las casen se utilizo interpolación con la función approx de R, con lo que podemos extraer información mas rica que con lo que se podria extraer con una simple regresión lieneal.

Pobreza Nueva Metodología

direccion <- switch(2,"C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/casen/","C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/casen/")

dataset_06 <<- readRDS(paste0(direccion,"casen_2006_c.rds"))
dataset_06 <- mutate_if(dataset_06, is.factor, as.character)
dataset_09 <<- readRDS(paste0(direccion,"casen_2009_c.rds"))
dataset_09 <- mutate_if(dataset_09, is.factor, as.character) 
dataset_11 <<- readRDS(paste0(direccion,"casen_2011_c.rds"))
dataset_11 <- mutate_if(dataset_11, is.factor, as.character) 
dataset_13 <<- readRDS(paste0(direccion,"casen_2013_c.rds"))
dataset_13 <- mutate_if(dataset_13, is.factor, as.character) 
dataset_15 <<- readRDS(paste0(direccion,"casen_2015_c.rds"))
dataset_15 <- mutate_if(dataset_15, is.factor, as.character)
dataset_17 <<- readRDS(paste0(direccion,"casen_2017_c.rds"))
dataset_17 <- mutate_if(dataset_17, is.factor, as.character)
dataset_20 <<- readRDS(paste0(direccion,"casen_2020_c.rds"))
dataset_20 <- mutate_if(dataset_20, is.factor, as.character)

2 Cálculo de la pobreza oficial del gobierno de Chile

La siguiente gráfica muestra la distribución de la pobreza en Chile entre 2006 y 2020 según las cifras oficiales del gobierno de Chile, incluyendo la “corrección” del 2006, 2009 y 2011.

El presente trabajo demostrara que nuestros propios cálculos coinciden con la cifra de la siguiente gráfica:

Pobreza Nueva Metodología

La gráfica se presta para una ligera confusión: el número que se sitúa en la parte superior de cada barra es la suma de pobres y de pobres extremos. los gráficos construídos con nuestras propias bases de datos en flourish coinciden casi exactamente con los calculados por nosotros, la diferencia en flourish es que la categoria pobre es exactamente lo que significa: pobres exclusivamente sin sumarles la pobreza extrema

3 2006

Base de datos Complementaria de Ingresos Nueva Metodología Casen 2006 SPSS

dataset_06$clave <- paste0(dataset_06$SEG,dataset_06$O,dataset_06$F)
MN_2006 <- read.spss("C:/Users/enamo/Desktop/Shiny-R/comprobacion_Abner/Ingresos MN 2006.sav", to.data.frame = TRUE)
MN_2006$clave <- paste0(MN_2006$seg,MN_2006$o,MN_2006$f)

MN_2006_2 <- MN_2006[,c("clave","pobreza_MN")]
dataset_06 <- merge(x= dataset_06, y= MN_2006_2, by="clave")
dataset_06 <- mutate_if(dataset_06, is.factor, as.character)

3.1 Frecuencias

ttcc <- xtabs(dataset_06$EXPC~pobreza_MN, data = dataset_06)
ttcc
## pobreza_MN
##          No pobres    Pobres extremos Pobres no extremos 
##           11424554            2027451            2663366

3.2 Porcentajes

print(c("Pobres extremos",as.numeric(ttcc[2]*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres extremos"  "12.5808521566149"
print(c("Pobres",as.numeric((ttcc[3]+ttcc[2])*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres"          "29.107719580269"

4 2009

Base de datos Complementaria de Ingresos Nueva Metodología Casen 2009 SPSS

dataset_09$clave <- paste0(dataset_09$SEGMENTO,dataset_09$IDVIV,dataset_09$HOGAR,dataset_09$O)
MN_2009 <- read.spss("C:/Users/enamo/Desktop/Shiny-R/comprobacion_Abner/Ingresos MN 2009.sav", to.data.frame = TRUE)
MN_2009$clave <- paste0(MN_2009$SEGMENTO,MN_2009$IDVIV,MN_2009$HOGAR,MN_2009$O)

MN_2009_2 <- MN_2009[,c("clave","pobreza_MN")]
dataset_09 <- merge(x= dataset_09, y= MN_2009_2, by="clave")
dataset_09 <- mutate_if(dataset_09, is.factor, as.character) 

4.1 Frecuencias

ttcc <- xtabs(dataset_09$EXPC~pobreza_MN, data = dataset_09)
ttcc
## pobreza_MN
##          No pobres    Pobres extremos Pobres no extremos 
##           12398130            1630581            2555810

4.2 Porcentajes

print(c("Pobres extremos",as.numeric(ttcc[2]*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres extremos"  "9.83194510109758"
print(c("Pobres",as.numeric((ttcc[2]+ttcc[3])*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres"           "25.2427610058801"

5 2011

Base Complementaria Ingresos Nueva Metodología Casen 2011 (submuestra noviembre 2011-enero 2012) (Base 2011 utilizada para estimaciones de serie Casen) SPSS

dataset_11$clave <- paste0(dataset_11$folio,dataset_11$o)
MN_2011 <- read.spss("C:/Users/enamo/Desktop/Shiny-R/comprobacion_Abner/Ingresos MN 2011.sav", to.data.frame = TRUE)
MN_2011$clave <- paste0(MN_2011$folio,MN_2011$o )

MN_2011_2 <- MN_2011[,c("clave","pobreza_MN")]
dataset_11 <- merge(x= dataset_11, y= MN_2011_2, by="clave")
dataset_11 <- mutate_if(dataset_11, is.factor, as.character) 

5.1 Frecuencias

ttcc <- xtabs(dataset_11$expc_full~pobreza_MN, data = dataset_11)
ttcc
## pobreza_MN
##          No pobres    Pobres extremos Pobres no extremos 
##            8713093             910164            1598941

5.2 Porcentajes

print(c("Pobres extremos",as.numeric(ttcc[2]*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres extremos"  "8.11038978282151"
print(c("Pobres",as.numeric((ttcc[2]+ttcc[3])*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres"           "22.3584096448842"

6 2013

Para 2013 la pobreza con la nueva metodología ya esta incluida en la base de datos oficial

6.1 Frecuencias

ttcc <- xtabs(dataset_13$expc~pobreza_MN, data = dataset_13)
ttcc
## pobreza_MN
##          No pobres    Pobres extremos Pobres no extremos 
##           14745682             776164            1696553

6.2 Porcentajes

print(c("Pobres extremos",as.numeric(ttcc[2]*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres extremos"  "4.50775940318261"
print(c("Pobres",as.numeric((ttcc[2]+ttcc[3])*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres"           "14.3608996399723"

7 2015

Para 2015 la pobreza con la nueva metodología ya esta incluida en la base de datos oficial

7.1 Frecuencias

ttcc <- xtabs(dataset_15$expc_todas ~pobreza, data = dataset_15)
ttcc
## pobreza
##          No pobres    Pobres extremos Pobres no extremos 
##           15466212             616619            1407558

7.2 Porcentajes

print(c("Pobres extremos",as.numeric(ttcc[2]*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres extremos"  "3.52547333281152"
print(c("Pobres",as.numeric((ttcc[2]+ttcc[3])*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres"           "11.5730816507283"

8 2017

Para 2017 la pobreza con la nueva metodología ya esta incluida en la base de datos oficial

8.1 Frecuencias

ttcc <- xtabs(dataset_17$expc~pobreza, data = dataset_17)
ttcc
## pobreza
##          No pobres    Pobres extremos Pobres no extremos 
##           16241747             407536            1099747

8.2 Porcentajes

print(c("Pobres extremos",as.numeric(ttcc[2]*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres extremos"  "2.29610294196359"
print(c("Pobres",as.numeric((ttcc[2]+ttcc[3])*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres"           "8.49219929201765"

9 2020

Para 2020 la pobreza con la nueva metodología ya esta incluida en la base de datos oficial

9.1 Frecuencias

ttcc <- xtabs(dataset_20$expc~pobreza, data = dataset_20)
ttcc
## pobreza
##          No pobres    Pobres extremos Pobres no extremos 
##           17360850             848169            1278243

9.2 Porcentajes

print(c("Pobres extremos",as.numeric(ttcc[2]*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres extremos"  "4.35242775511511"
print(c("Pobres",as.numeric((ttcc[2]+ttcc[3])*100/(ttcc[1]+ttcc[2]+ttcc[3]))))
## [1] "Pobres"           "10.9118048497526"

El porcentaje de pobreza que se calculó coincide con los datos publicados de Casen y también con el gráfico flourish con la diferencia de que en este último los valores están calculados de forma independiente, pero al sumarse coinciden con los datos oficiales de Casen

Pobreza (%) Escala Nacional

10 Tabla madre

En esta tabla se calcula la frecuencia y porcentaje de porcentaje a nivel de comuna

tabla_madre <- readRDS("tabla_madre.rds")
datatable(tabla_madre, extensions = 'Buttons', escape = FALSE, rownames = FALSE,
          options = list(dom = 'Bfrtip',
          buttons = list('colvis', list(extend = 'collection',
          buttons = list(
          list(extend='copy'),
          list(extend='excel',
            filename = 'hitStats'),
          list(extend='pdf',
            filename= 'hitStats')),
          
          text = 'Download')), scrollX = TRUE))%>%
    formatRound(c("porcentaje_pobreza1","porcentaje_pobreza2","porcentaje_pobreza3","porcentaje_pobreza4","porcentaje_pobreza5","porcentaje_pobreza6","porcentaje_pobreza7"), mark = "", digits = 2)
tabla2 <- tabla_madre[,c(3,4)]
 
No_pobre <- filter(tabla2, Pobreza == "No pobre")
np <- sum(No_pobre$Freq1)
 
Pobre <- filter(tabla2, Pobreza == "Pobre")
p <- sum(Pobre$Freq1)

Pobre_extremo <- filter(tabla2, Pobreza == "Pobre extremo")
pe <- sum(Pobre_extremo$Freq1)
print(c("Pobres extremos",as.numeric(pe*100/(np+p+pe))))
## [1] "Pobres extremos"  "11.9416905261062"
print(c("Pobres",as.numeric((p+pe)*100/(np+p+pe))))
## [1] "Pobres"           "28.4461393499999"

11 Tabla interpolación

Calculamos la interpolación del porcentaje de pobreza a nivel de comuna para los años que no están en la Casen

tabla_final <- readRDS("tabla_final.rds")
   
datatable(tabla_final, extensions = 'Buttons', escape = FALSE, rownames = FALSE,
          options = list(dom = 'Bfrtip',
          buttons = list('colvis', list(extend = 'collection',
          buttons = list(
          list(extend='copy'),
          list(extend='excel',
            filename = 'hitStats'),
          list(extend='pdf',
            filename= 'hitStats')),
          
          text = 'Download')), scrollX = TRUE))%>%
    formatRound(c("p2006","p2007","p2008","p2009","p2010","p2011","p2012","p2013","p2014","p2015","p2016","p2017","p2018","p2019","p2020"), mark = "", digits = 2)

12 Tabla con interpolación y frecuencia

Unimos la frecuencia de los años que tenemos en la tabla madre con la tabla de interpolación

tabla_final_2 <- cbind(tabla_final, tabla_madre[,c("Freq1","Freq2","Freq3","Freq4","Freq5","Freq6","Freq7")])
tabla_final_2 <- tabla_final_2[,c("Comuna","Código","Pobreza","Freq1","p2006","p2007","p2008","Freq2","p2009","p2010","Freq3","p2011","p2012","Freq4","p2013","p2014","Freq5","p2015","p2016","Freq6","p2017","p2018","p2019","Freq7","p2020" )]
 
colnames(tabla_final_2) <- c("Comuna","Código","Pobreza","freq_2006","p2006","p2007","p2008","freq_2009","p2009","p2010","freq_2011","p2011","p2012","freq_2013","p2013","p2014","freq_2015","p2015","p2016","freq_2017","p2017","p2018","p2019","freq_2020","p2020")


datatable(tabla_final_2, extensions = 'Buttons', escape = FALSE, rownames = FALSE,
          options = list(dom = 'Bfrtip',
          buttons = list('colvis', list(extend = 'collection',
          buttons = list(
          list(extend='copy'),
          list(extend='excel',
            filename = 'hitStats'),
          list(extend='pdf',
            filename= 'hitStats')),
          
          text = 'Download')), scrollX = TRUE))%>%
    formatRound(c("freq_2006","p2006","p2007","p2008","freq_2009","p2009","p2010","freq_2011","p2011","p2012","freq_2013","p2013","p2014","freq_2015","p2015","p2016","freq_2017","p2017","p2018","p2019","freq_2020","p2020"), mark = "", digits = 2)

Cálculo de pobreza(frecuencias)

tabla2 <- tabla_final_2[,c(3,4,5)]
 
No_pobre <- filter(tabla2, Pobreza == "No pobre")
np <- sum(No_pobre$freq_2006)
 
Pobre <- filter(tabla2, Pobreza == "Pobre")
p <- sum(Pobre$freq_2006)
 
Pobre_extremo <- filter(tabla2, Pobreza == "Pobre extremo")
pe <- sum(Pobre_extremo$freq_2006)
print(c("Pobres extremos",as.numeric(pe*100/(np+p+pe))))
## [1] "Pobres extremos"  "11.9416905261062"
print(c("Pobres",as.numeric((p+pe)*100/(np+p+pe))))
## [1] "Pobres"           "28.4461393499999"

13 Tabla interpolacion nivel nacional

pob_n <- read_xlsx("pobreza_nacional.xlsx")
datatable(pob_n, extensions = 'Buttons', escape = FALSE, rownames = FALSE,
          options = list(dom = 'Bfrtip',
          buttons = list('colvis', list(extend = 'collection',
          buttons = list(
          list(extend='copy'),
          list(extend='excel',
            filename = 'hitStats'),
          list(extend='pdf',
            filename= 'hitStats')),
          
          text = 'Download')), scrollX = TRUE))

Los porcentajes que calculamos los obtuvimos de la tabla anterior, coinciden con los datos publicados por la Casen y la tabla también con los datos del Flourish

Pobreza Escala Nacional

Pobreza Escala Nacional

np <- filter(pob_n, categorias == "No pobre")[,2]
p <- filter(pob_n, categorias == "Pobre")[,2]
pe <- filter(pob_n, categorias == "Pobre extremo")[,2]
print(c("Pobres extremos",as.numeric(pe*100/(np+p+pe))))
## [1] "Pobres extremos"  "12.5808521566149"
print(c("Pobres",as.numeric((p+pe)*100/(np+p+pe))))
## [1] "Pobres"          "29.107719580269"

14 Conclusión

Damos la revisión por concluida. Ya no tenemos más meétodos que implementar ni bases de datos que analizar. Se cumplió el objetivo de la coincidencia del cálculo propio con el oficial.

La casen es un instrumento academico, por lo que solo lo pueden abordar profesionales de las ciencias sociales y programadores, lo que limita su relevancia al desarrollo y evaluación de programas y políticas sociales que los gobiernos de turno decidan implementar.