Estimación de la tasa de alfabetismo para la Casen 2020

A nivel de comunas.

VE-CC-AJ

DataIntelligence
Fecha: 03-09-2021

1 Introducción

Por alguna razón, la Casen del año 2020 no contiene la categoría “sabe leer y escribir?”, por lo que tuvimos que desarrollar una metodología que nos permitiera estimarla. La información que necesitamos es que a nivel de individuo cada uno de ellos responda si o no sabe leer y escribir, pero esto es imposible. solo podemos hacer una estimación con una regresión lineal a nivel de comunas, lo que no nos sirve para lanzar tablas de contingencia.

1.1 Lectura de bases de datos Casen

dataset_06 <<- readRDS("C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/casen/casen_2006_c.rds")
dataset_06 <- mutate_if(dataset_06, is.factor, as.character)
dataset_09 <<- readRDS("C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/casen/casen_2009_c.rds")
dataset_09 <- mutate_if(dataset_09, is.factor, as.character)
dataset_11 <<- readRDS("C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/casen/casen_2011_c.rds")
dataset_11 <- mutate_if(dataset_11, is.factor, as.character)
dataset_13 <<- readRDS("C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/casen/casen_2013_c.rds")
dataset_13 <- mutate_if(dataset_13, is.factor, as.character)
dataset_15 <<- readRDS("C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/casen/casen_2015_c.rds")
dataset_15 <- mutate_if(dataset_15, is.factor, as.character)
dataset_17 <<- readRDS("C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/casen/casen_2017_c.rds")
dataset_17 <- mutate_if(dataset_17, is.factor, as.character)
dataset_20 <<- readRDS("C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/casen/casen_2020.rds")
dataset_20 <- mutate_if(dataset_20, is.factor, as.character)

1.1.1 Homologación de alfabetismo

dataset_06$E1[dataset_06$E1 == "No sabe /Sin dato"] <- NA

dataset_11$e1[dataset_11$e1 == "Sí, lee y escribe"] <- "Sí"
dataset_11$e1[dataset_11$e1 == "No, sólo lee"] <- "No"
dataset_11$e1[dataset_11$e1 == "No, ninguno"] <- "No"
dataset_11$e1[dataset_11$e1 == "No, sólo escribe"] <- "No"

dataset_13$e1[dataset_13$e1 == "Sí, lee y escribe"] <- "Sí"
dataset_13$e1[dataset_13$e1 == "No, ninguno"] <- "No"
dataset_13$e1[dataset_13$e1 == "No, sólo lee"] <- "No"
dataset_13$e1[dataset_13$e1 == "No, sólo escribe"] <- "No"
dataset_13$e1[dataset_13$e1 == "NS/NR"] <- NA

dataset_15$e1[dataset_15$e1 == "Sí, lee y escribe"] <- "Sí"
dataset_15$e1[dataset_15$e1 == "No, ninguno"] <- "No"
dataset_15$e1[dataset_15$e1 == "No, sólo lee"] <- "No"
dataset_15$e1[dataset_15$e1 == "No, sólo escribe"] <- "No"

dataset_17$e1[dataset_17$e1 == "Sí, lee y escribe"] <- "Sí"
dataset_17$e1[dataset_17$e1 == "No, sólo lee"] <- "No"
dataset_17$e1[dataset_17$e1 == "No, ninguno"] <- "No"
dataset_17$e1[dataset_17$e1 == "No sabe/responde"] <- NA
dataset_17$e1[dataset_17$e1 == "No, sólo escribe"] <- "No"

1.1.2 Generacion de frecuencias para la variable de alfabetismo

tabla_matp1 <-xtabs(dataset_06$EXPC ~COMUNA+E1, data = dataset_06)
tabla_matp2 <-xtabs(dataset_09$EXPC ~COMUNA+E1, data = dataset_09)
tabla_matp3 <-xtabs(dataset_11$expc_full ~comuna+e1, data = dataset_11)
tabla_matp4 <-xtabs(dataset_13$expc ~comuna+e1, data = dataset_13)
tabla_matp5 <-xtabs(dataset_15$expc_todas ~comuna+e1, data = dataset_15)
tabla_matp6 <-xtabs(dataset_17$expc ~comuna+e1, data = dataset_17)

1.1.3 Converimos las matrices en dataframe

tabla_matp1 <- as.data.frame(tabla_matp1)
tabla_matp1$anio <- 2006
names(tabla_matp1)[1] <- "comuna"
names(tabla_matp1)[2] <- "e1"
tabla_matp2 <- as.data.frame(tabla_matp2)
tabla_matp2$anio <- 2009
names(tabla_matp2)[1] <- "comuna"
names(tabla_matp2)[2] <- "e1"

tabla_matp3 <- as.data.frame(tabla_matp3)
tabla_matp3$anio <- 2011
tabla_matp4 <- as.data.frame(tabla_matp4)
tabla_matp4$anio <- 2013
tabla_matp5 <- as.data.frame(tabla_matp5)
tabla_matp5$anio <- 2015
tabla_matp6 <- as.data.frame(tabla_matp6)
tabla_matp6$anio <- 2017

alfabestismo_06 <- tabla_matp1
alfabestismo_09 <- tabla_matp2
alfabestismo_11 <- tabla_matp3
alfabestismo_13 <- tabla_matp4
alfabestismo_15 <- tabla_matp5
alfabestismo_17 <- tabla_matp6 

1.1.4 Se obtiene el total de poblacion comunal por año

union_pob <- readRDS("union_pob_2.rds")

p06 <- union_pob[,c("Poblacion_2006","sum.poblacion$`Poblacion 2006`")]
p09 <- union_pob[,c("Poblacion_2009","sum.poblacion$`Poblacion 2009`")]
p11 <- union_pob[,c("Poblacion_2011","sum.poblacion$`Poblacion 2011`")]
p13 <- union_pob[,c("Poblacion_2013","sum.poblacion$`Poblacion 2013`")]
p15 <- union_pob[,c("Poblacion_2015","sum.poblacion$`Poblacion 2015`")]
p17 <- union_pob[,c("Poblacion_2017","sum.poblacion$`Poblacion 2017`")]
p20 <- union_pob[,c("Poblacion_2020","sum.poblacion$`Poblacion 2020`")]


colnames(p06) <- c("codigo Comuna", "poblacion total")
colnames(p09) <- c("codigo Comuna", "poblacion total")
colnames(p11) <- c("codigo Comuna", "poblacion total")
colnames(p13) <- c("codigo Comuna", "poblacion total")
colnames(p15) <- c("codigo Comuna", "poblacion total")
colnames(p17) <- c("codigo Comuna", "poblacion total")
colnames(p20) <- c("codigo Comuna", "poblacion total")

p06$año <- 2006
p09$año <- 2009
p11$año <- 2011
p13$año <- 2013
p15$año <- 2015
p17$año <- 2017
p20$año <- 2020

tabla_pob <- rbind(p06,p09,p11,p13,p15,p17)

1.1.5 Se agrega el nombre de comuna a los códigos

codigos_comunales <- readRDS(file = "C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/codigos_comunales_2006.rds") 
names(codigos_comunales)[1] <- "codigo Comuna"
names(codigos_comunales)[2] <- "comuna" 
b1 = merge(x = alfabestismo_06, y = codigos_comunales, by="comuna" )
 
tabla_06 = merge(x = b1, y = p06, by = "codigo Comuna", all.x = TRUE)

codigos_comunales <- readRDS(file = "C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/codigos_comunales_2009.rds") 
names(codigos_comunales)[1] <- "codigo Comuna"
names(codigos_comunales)[2] <- "comuna" 
b2 = merge(x = alfabestismo_09, y = codigos_comunales, by="comuna" )
 
tabla_09 = merge(x = b2, y = p09, by = "codigo Comuna", all.x = TRUE)

codigos_comunales <- readRDS(file = "C:/Users/enamo/Desktop/Shiny-R/Casen_en_pandemia_2020/codigos_comunales_2011-2017.rds") 
names(codigos_comunales)[1] <- "codigo Comuna"
names(codigos_comunales)[2] <- "comuna" 
b3 = merge(x = alfabestismo_11, y = codigos_comunales, by="comuna" ) 
b4 = merge(x = alfabestismo_13, y = codigos_comunales, by="comuna" ) 
b5 = merge(x = alfabestismo_15, y = codigos_comunales, by="comuna" ) 
b6 = merge(x = alfabestismo_17, y = codigos_comunales, by="comuna" ) 

tabla_11 = merge(x = b3, y = p11, by = "codigo Comuna", all.x = TRUE)
tabla_13 = merge(x = b4, y = p13, by = "codigo Comuna", all.x = TRUE)
tabla_15 = merge(x = b5, y = p15, by = "codigo Comuna", all.x = TRUE)
tabla_17 = merge(x = b6, y = p17, by = "codigo Comuna", all.x = TRUE)

1.1.6 Calculamos el porcentaje poblacional de las comunas

tabla_u <- rbind(tabla_06,tabla_09,tabla_11,tabla_13,tabla_15,tabla_17)
tabla_u <- mutate_if(tabla_u, is.factor, as.character)
tabla_u$porcentaje <- tabla_u$Freq*100/(tabla_u$`poblacion total`)
datatable(tabla_u, 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))

1.1.7 Se aplica la regresion lineal para poder calcular el porcentaje de alfabetismo con categoria de respuesta para la Casen de 2020

df_2020_si <- data.frame()
for (jj in unique(tabla_u$`codigo Comuna`)) {

tabla_u_f <- filter(tabla_u,tabla_u$`codigo Comuna`== jj )
tabla_u_f <- filter(tabla_u_f,tabla_u_f$e1 =="Sí")
mod1 <- lm(porcentaje ~ anio, data=tabla_u_f)
e1_2020 <- mod1$coefficients[1] + mod1$coefficients[2]*2020
df_e1_2020 <- data.frame(
  "codigo Comuna" = jj,
  "e1" = "Sí",
  "porcentaje" = as.numeric(e1_2020)
)  
df_2020_si <- rbind(df_2020_si,df_e1_2020)
}
datatable(df_2020_si, 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))

1.1.8 Se aplica la regresion lineal para poder calcular el porcentaje de alfabetismo con categoria de respuesta NO para la Casen de 2020

df_2020_no <- data.frame()
for (jj in unique(tabla_u$`codigo Comuna`)) {

tabla_u_f <- filter(tabla_u,tabla_u$`codigo Comuna`== jj )
tabla_u_f <- filter(tabla_u_f,tabla_u_f$e1 =="No")
mod1 <- lm(porcentaje ~ anio, data=tabla_u_f)
e1_2020 <- mod1$coefficients[1] + mod1$coefficients[2]*2020
df_e1_2020 <- data.frame(
  "codigo Comuna" = jj,
  "e1" = "No",
  "porcentaje" = as.numeric(e1_2020)
)  
df_2020_no <- rbind(df_2020_no,df_e1_2020)
}
datatable(df_2020_no, 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))

1.1.9 Se agrega la poblacion total a la tabla de porcentajes de alfabetismo del 2020

df_2020_si_no <- rbind(df_2020_si,df_2020_no)
names(df_2020_si_no)[1] <- "codigo Comuna"
df_2020_si_no2 = merge(x=df_2020_si_no, y=p20, by="codigo Comuna")

datatable(df_2020_si_no2, 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))

Las tablas de contingencia las hacemos considerendo un registro por persona de la muestra, pero nuestro metodo que nos permite estimar el alfabetismo solo lo alcanzamos al nivel de comuna.

Nosotros al aplicar las tablas de contingencia la aplicamos a los registros totales de la Casen por lo que la estimacion del parametro e1 en 2020 lo tenemos que aplicar por igual en todas las comunas

datatable(tabla_u, 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))