Para el 2015 se detecta una anomalía.
Fuentes de datos:
Proyección base 2017 Estimaciones y proyecciones 2002-2035, comunas:
https://www.ine.cl/estadisticas/sociales/demografia-y-vitales/proyecciones-de-poblacion
poblacion_chilena <- read.csv2('poblacion_chilena.csv', stringsAsFactors=FALSE)
saveRDS(poblacion_chilena, file = "poblacion_chilena.rds")
pob_chilena <- readRDS("poblacion_chilena.rds")
Visualicemos sus cuatro primeras líneas:
head(pob_chilena,4)
## Region Nombre.Region Provincia Nombre.Provincia Comuna Nombre.Comuna
## 1 1 Tarapacá 11 Iquique 1101 Iquique
## 2 1 Tarapacá 11 Iquique 1101 Iquique
## 3 1 Tarapacá 11 Iquique 1101 Iquique
## 4 1 Tarapacá 11 Iquique 1101 Iquique
## Sexo.1.Hombre.2.Mujer Edad Poblacion.2002 Poblacion.2003 Poblacion.2004
## 1 1 0 1469 1395 1392
## 2 1 1 1472 1379 1342
## 3 1 2 1461 1377 1323
## 4 1 3 1464 1376 1329
## Poblacion.2005 Poblacion.2006 Poblacion.2007 Poblacion.2008 Poblacion.2009
## 1 1376 1360 1409 1466 1550
## 2 1360 1360 1350 1402 1461
## 3 1310 1342 1348 1342 1395
## 4 1298 1299 1337 1345 1340
## Poblacion.2010 Poblacion.2011 Poblacion.2012 Poblacion.2013 Poblacion.2014
## 1 1583 1615 1608 1590 1596
## 2 1547 1582 1615 1605 1588
## 3 1455 1543 1580 1608 1600
## 4 1394 1454 1541 1574 1600
## Poblacion.2015 Poblacion.2016 Poblacion.2017 Poblacion.2018 Poblacion.2019
## 1 1588 1546 1435 1442 1491
## 2 1591 1586 1543 1449 1460
## 3 1583 1584 1583 1556 1470
## 4 1588 1570 1576 1590 1576
## Poblacion.2020 Poblacion.2021 Poblacion.2022 Poblacion.2023 Poblacion.2024
## 1 1550 1576 1575 1564 1553
## 2 1507 1550 1567 1565 1553
## 3 1481 1508 1538 1554 1552
## 4 1490 1478 1492 1520 1535
## Poblacion.2025 Poblacion.2026 Poblacion.2027 Poblacion.2028 Poblacion.2029
## 1 1534 1518 1500 1483 1466
## 2 1539 1523 1507 1489 1470
## 3 1541 1526 1509 1492 1477
## 4 1532 1521 1508 1491 1474
## Poblacion.2030 Poblacion.2031 Poblacion.2032 Poblacion.2033 Poblacion.2034
## 1 1446 1441 1425 1410 1395
## 2 1454 1434 1429 1413 1397
## 3 1458 1440 1420 1412 1401
## 4 1457 1439 1422 1401 1395
## Poblacion.2035
## 1 1378
## 2 1383
## 3 1383
## 4 1380
Ésta información la tenemos desglosada por sexo y edad, pero la queremos simplemente agregada a nivel de comuna y año.
pob_por_comuna_ine_2006 <- aggregate(pob_chilena$Poblacion.2006, by=list(Comuna=pob_chilena$Nombre.Comuna), FUN=sum)
pob_por_comuna_ine_2009 <- aggregate(pob_chilena$Poblacion.2009, by=list(Comuna=pob_chilena$Nombre.Comuna), FUN=sum)
pob_por_comuna_ine_2011 <- aggregate(pob_chilena$Poblacion.2011, by=list(Comuna=pob_chilena$Nombre.Comuna), FUN=sum)
pob_por_comuna_ine_2013 <- aggregate(pob_chilena$Poblacion.2013, by=list(Comuna=pob_chilena$Nombre.Comuna), FUN=sum)
pob_por_comuna_ine_2015 <- aggregate(pob_chilena$Poblacion.2015, by=list(Comuna=pob_chilena$Nombre.Comuna), FUN=sum)
pob_por_comuna_ine_2017 <- aggregate(pob_chilena$Poblacion.2017, by=list(Comuna=pob_chilena$Nombre.Comuna), FUN=sum)
Despleguemos la población para las primeras 4 comunas del dataset para el 2017:
head(pob_por_comuna_ine_2017,4)
## Comuna sum.pob_chilena$Poblacion.2017
## 1 Algarrobo 14221
## 2 Alhué 6835
## 3 Alto Biobío 6719
## 4 Alto del Carmen 5575
Una vez listos estos datasets, vamos a construir tablas de contingencia relativas a la clasificación de las personas según su situación de pobreza y sexo y a comparar las sumas totales de estos resultados (que ya están expandidos) con el de la población total comunal. Deben aproximarse.
Actualmente la poblacion esta disminuyendo?
sum(pob_por_comuna_ine_2006[,2])
## [1] 16347890
sum(pob_por_comuna_ine_2009[,2])
## [1] 16881078
sum(pob_por_comuna_ine_2011[,2])
## [1] 17254159
sum(pob_por_comuna_ine_2013[,2])
## [1] 17611902
sum(pob_por_comuna_ine_2015[,2])
## [1] 17971423
sum(pob_por_comuna_ine_2017[,2])
## [1] 18419192
En general no, pero Canela y Carahue si, no es absurdo pensar que disminuye en algunas actualmente.
Tablas de contingencia para el 2006
Leemos nuestra base de datos Casen 2006
dataset2006 <- readRDS("dataset2006.rds")
Debemos corregir los códigos para que podamos hacer la homologación con los actuales. Primero extraemos los códigos asociados a las comunas de la Casen del 2006:
data_code <-dataset2006[ , c("seg", "comuna")]
names(data_code)[2] <- "unlist.dataset2006.comuna."
data_code <- distinct(data_code , unlist.dataset2006.comuna., .keep_all = TRUE)
data_code <- data_code %>% mutate(codigo = case_when(as.integer(seg / 10000000) == 0 ~ as.integer(seg / 1000)
, as.integer(seg / 10000000) == 1 ~ as.integer(seg / 1000)
))
data_code <- subset( data_code, select = -seg )
Veamos sus primeras 4 filas:
head(data_code, 4)
## unlist.dataset2006.comuna. codigo
## 1 iquique 1101
## 2 camiña 1102
## 3 colchane 1103
## 4 huara 1104
Reasignamos los códigos correspondientes al año 2017 que ameriten serlos:
# camiña
data_code[2,2]<-1402
# nos equivocamos en Coihaique:
data_code[269,2]<-11101
data_code[270,2]<-11201
data_code[8,2]<-15101
data_code[178,2]<-16102
data_code[9,2]<-15102
data_code[177,2]<-16101
data_code[182,2]<-16103
data_code[96,2]<-6303
data_code[179,2]<-16202
data_code[180,2]<-16203
data_code[181,2]<-16302
data_code[3,2]<-1403
data_code[287,2]<-13104
data_code[261,2]<-14102
data_code[183,2]<-16104
data_code[262,2]<-14202
data_code[11,2]<-15202
data_code[4,2]<-1404
data_code[292,2]<-13110
data_code[263,2]<-14201
data_code[264,2]<-14203
data_code[265,2]<-14103
data_code[66,2]<-5802
data_code[266,2]<-14104
data_code[267,2]<-14105
data_code[268,2]<-14106
data_code[89,2]<-6110
data_code[184,2]<-16204
data_code[185,2]<-16303
data_code[68,2]<-5803
data_code[271,2]<-14107
data_code[272,2]<-14108
data_code[186,2]<-16105
data_code[5,2]<-1405
data_code[187,2]<-16106
data_code[188,2]<-16205
data_code[6,2]<-1401
data_code[10,2]<-15201
data_code[246,2]<-16107
data_code[49,2]<-5801
data_code[92,2]<-6114
data_code[190,2]<-16201
data_code[191,2]<-16206
data_code[273,2]<-14204
data_code[192,2]<-16301
data_code[193,2]<-16304
data_code[194,2]<-16108
data_code[195,2]<-16305
data_code[286,2]<-13505
data_code[196,2]<-16207
data_code[260,2]<-14101
data_code[51,2]<-5804
data_code[197,2]<-16109
Despleguemos las primeras 4 filas:
head(data_code,4)
## unlist.dataset2006.comuna. codigo
## 1 iquique 1101
## 2 camiña 1402
## 3 colchane 1403
## 4 huara 1404
Obtenemos las categorias y la cantidad de personas que caen dentro de la columna llamada “Corte - pobreza-” de la Casen 2006:
table(dataset2006$corte)
##
## indigente pobre no indigente no pobre
## 10450 31092 226966
10450+31092+226966
[1] 268508
La cantidad de encuestados en la Casen 2006 fue: 268873
La disparidad proviene de datos NA.
sum(is.na(dataset2006$corte))
## [1] 365
268508 + 365 = 268873
Lanzamos la tabla de frecuencias por sexo, corte y comuna para el 2006:
cross_tab = xtabs(dataset2006$expc ~ unlist(dataset2006$comuna) + unlist(dataset2006$corte) + unlist(dataset2006$sexo), aggregate(dataset2006$expc ~ unlist(dataset2006$comuna) + unlist(dataset2006$corte) + unlist(dataset2006$sexo), dataset2006, mean))
tabla <- as.data.frame(cross_tab)
d <-tabla[!(tabla$Freq == 0),]
d$anio <- "2006"
Despleguemos los primeros 12 elementos:
head(d,12)
## unlist.dataset2006.comuna. unlist.dataset2006.corte.
## 1 iquique indigente
## 2 camiña indigente
## 3 colchane indigente
## 4 huara indigente
## 5 pica indigente
## 6 pozo almonte indigente
## 7 alto hospicio indigente
## 8 arica indigente
## 9 camarones indigente
## 10 putre indigente
## 11 general lagos indigente
## 12 antofagasta indigente
## unlist.dataset2006.sexo. Freq anio
## 1 hombre 710 2006
## 2 hombre 15 2006
## 3 hombre 156 2006
## 4 hombre 58 2006
## 5 hombre 114 2006
## 6 hombre 20 2006
## 7 hombre 2171 2006
## 8 hombre 2816 2006
## 9 hombre 3 2006
## 10 hombre 3 2006
## 11 hombre 30 2006
## 12 hombre 4170 2006
Hacemos el merge con la data de la misma tabla, Casen del 2006, con lo que el error asociado es cero. Asociamos los códigos actualizados a la tabla de contingencia de forma perfecta:
df = merge( x = d, y = data_code, by = "unlist.dataset2006.comuna.", all.x = TRUE)
head(df,4)
## unlist.dataset2006.comuna. unlist.dataset2006.corte. unlist.dataset2006.sexo.
## 1 aisén indigente hombre
## 2 aisén no pobre hombre
## 3 aisén pobre no indigente hombre
## 4 aisén pobre no indigente mujer
## Freq anio codigo
## 1 270 2006 11201
## 2 10935 2006 11201
## 3 134 2006 11201
## 4 268 2006 11201
Sumemos las frecuencias de todas las categorias por comuna para tener la poblacion agrupada de las frecuencias:
pobttcc_por_comuna_s_p_2006 <- aggregate(df$Freq, by=list(Comuna=df$unlist.dataset2006.comuna.), FUN=sum)
pobttcc_por_comuna_s_p_2006<- pobttcc_por_comuna_s_p_2006 %>% mutate(Comuna = str_squish(Comuna))
head(pobttcc_por_comuna_s_p_2006,4)
## Comuna sum.df$Freq
## 1 iquique 175033
## 2 camiña 1073
## 3 colchane 1282
## 4 huara 2768
Observe la cantidad de comunas desplegadas:
nrow(pobttcc_por_comuna_s_p_2006)
## [1] 335
Queremos verificar que la población total de Putre coincida con la suma de la población dividida por categorías en la tabla de contingencia:
# obtenemos la data desagregada
d <- df[df$unlist.dataset2006.comuna. == "putre ", ]
d
## unlist.dataset2006.comuna. unlist.dataset2006.corte.
## 1410 putre indigente
## 1411 putre pobre no indigente
## 1412 putre pobre no indigente
## 1413 putre no pobre
## 1414 putre indigente
## 1415 putre no pobre
## unlist.dataset2006.sexo. Freq anio codigo
## 1410 hombre 3 2006 15201
## 1411 hombre 47 2006 15201
## 1412 mujer 45 2006 15201
## 1413 hombre 420 2006 15201
## 1414 mujer 1 2006 15201
## 1415 mujer 419 2006 15201
# Obtenemos la data agrupada por categoria de pobreza
d_2006 <- aggregate(d$Freq, by=list(Comuna=d$unlist.dataset2006.corte.), FUN=sum)
d_2006
## Comuna sum.d$Freq
## 1 indigente 4
## 2 pobre no indigente 92
## 3 no pobre 839
Nuestra estimacion de pobreza para Putre para el 2006 es del 10,27 %, el que nos entrega el reporte estadistico de la biblioteca nacional es de 10,3
Fuente:
Reporte Estadístico Comunal PUTRE Abril 2008 Sistema Integrado de Información Territorial Biblioteca del Congreso Nacional
Suma de las frecuencias de clasificacion por pobreza para Putre el 2006.
d <- pobttcc_por_comuna_s_p_2006[pobttcc_por_comuna_s_p_2006$Comuna == "putre", ]
d
## Comuna sum.df$Freq
## 10 putre 935
Este resultado por comuna debe coincidir con la poblacion total comunal pues fueron introducidos los factores de expansion correspondientes:
Cual fue la poblacion de Putre el 2006?
d <- pob_por_comuna_ine_2006[pob_por_comuna_ine_2006$Comuna == "Putre", ]
d
## Comuna sum.pob_chilena$Poblacion.2006
## 245 Putre 2212
Y en total para el 2006?
sum(pobttcc_por_comuna_s_p_2006[,2])
## [1] 16115034
sum(pob_por_comuna_ine_2006[,2])
## [1] 16347890
dataset2009 <- readRDS("dataset2009.rds")
Debemos corregir los codigos para que podamos hacer la homologacion a los actuales Primero extraemos los códigos asociados a las comunas de la Casen del 2006:
data_code <- dataset2009[ , c("segmento", "comuna")]
names(data_code)[2] <- "unlist.dataset2009.comuna."
data_code <- distinct(data_code ,unlist.dataset2009.comuna., .keep_all = TRUE)
data_code <- data_code %>% mutate(unlist.a. = str_squish(unlist.dataset2009.comuna.))
data_code <- data_code %>% mutate(codigo = case_when(as.integer(segmento / 10000000) == 0 ~ as.integer(segmento / 1000)
, as.integer(segmento / 10000000) == 1 ~ as.integer(segmento / 1000)
))
data_code <- subset( data_code, select = -segmento )
# nos equivocamos en Coihaique:
data_code[269,2]<-11101
data_code[253,2]<-16102
data_code[149,2]<-16101
data_code[150,2]<-16103
data_code[305,2]<-16202
data_code[306,2]<-16203
data_code[44,2]<-16302
data_code[45,2]<-16104
data_code[106,2]<-5802
data_code[332,2]<-16204
data_code[46,2]<-16303
data_code[107,2]<-5803
data_code[47,2]<-16105
data_code[48,2]<-16106
data_code[307,2]<-16205
data_code[254,2]<-16107
data_code[98,2]<-5801
data_code[308,2]<-16201
data_code[309,2]<-16206
data_code[49,2]<-16301
data_code[310,2]<-16304
data_code[311,2]<-16108
data_code[255,2]<-16305
data_code[256,2]<-16207
data_code[99,2]<-5804
data_code[312,2]<-16109
head(data_code, 4)
## unlist.dataset2009.comuna. unlist.a. codigo
## 1 <NA> <NA> NA
## 2 caldera caldera 3102
## 3 iquique iquique 1101
## 4 tierra amarilla tierra amarilla 3103
Obtenemos las categorias y la cantidad de personas que caen dentro de cada categoria de pobreza:
table(dataset2009$corte)
##
## indigente pobre no indigente no pobre
## 10893 30362 205527
10893 + 30362 + 205527 [1] 246782
La cantidad de encuestados en la Casen 2009 fue: 246924
La disparidad proviene de datos NA.
sum(is.na(dataset2009$corte))
## [1] 143
Lanzamos la tabla de frecuencias por sexo, corte y comuna para el 2009:
cross_tab = xtabs(dataset2009$expc ~ unlist(dataset2009$comuna) + unlist(dataset2009$corte) + unlist(dataset2009$sexo), aggregate(dataset2009$expc ~ unlist(dataset2009$comuna) + unlist(dataset2009$corte) + unlist(dataset2009$sexo), dataset2009, mean))
tabla <- as.data.frame(cross_tab)
d <-tabla[!(tabla$Freq == 0),]
d$anio <- "2009"
head( d,4)
## unlist.dataset2009.comuna. unlist.dataset2009.corte. unlist.dataset2009.sexo.
## 1 iquique indigente hombre
## 2 alto hospicio indigente hombre
## 3 pozo almonte indigente hombre
## 4 camiña indigente hombre
## Freq anio
## 1 1439 2009
## 2 1348 2009
## 3 290 2009
## 4 30 2009
Hacemos el merge con la data de la misma tabla, Casen del 2009, con lo que minimizamos el error. Asociamos los codigos actualizados correctamente:
df = merge( x = d, y = data_code, by = "unlist.dataset2009.comuna.", all.x = TRUE)
head(df,10)
## unlist.dataset2009.comuna. unlist.dataset2009.corte.
## 1 algarrobo pobre no indigente
## 2 algarrobo indigente
## 3 algarrobo pobre no indigente
## 4 algarrobo indigente
## 5 algarrobo no pobre
## 6 algarrobo no pobre
## 7 alhué indigente
## 8 alhué pobre no indigente
## 9 alhué indigente
## 10 alhué no pobre
## unlist.dataset2009.sexo. Freq anio unlist.a. codigo
## 1 mujer 222 2009 algarrobo 5602
## 2 mujer 56 2009 algarrobo 5602
## 3 hombre 168 2009 algarrobo 5602
## 4 hombre 42 2009 algarrobo 5602
## 5 mujer 5797 2009 algarrobo 5602
## 6 hombre 5906 2009 algarrobo 5602
## 7 mujer 100 2009 alhué 13502
## 8 mujer 75 2009 alhué 13502
## 9 hombre 69 2009 alhué 13502
## 10 mujer 1978 2009 alhué 13502
Sumemos las frecuencias de todas las categorias por comuna para tener la poblacion agrupada de las frecuencias:
pob_por_comuna <- aggregate(df$Freq, by=list(Comuna=df$unlist.dataset2009.comuna.), FUN=sum)
pob_por_comuna <- pob_por_comuna %>% mutate(Comuna = str_squish(Comuna))
head(pob_por_comuna,4)
## Comuna sum.df$Freq
## 1 iquique 177657
## 2 alto hospicio 86707
## 3 pozo almonte 12545
## 4 camiña 996
Observe la cantidad de comunas desplegadas:
nrow(pob_por_comuna)
## [1] 334
Este resultado por comuna debe coincidir con la poblacion total comunal pues fueron introducidos los factores de expansion correspondientes:
1 Coincide para Putre?
d <- pob_por_comuna[pob_por_comuna$Comuna == "putre", ]
d
## Comuna sum.df$Freq
## 333 putre 1020
Cual fue la poblacion de Putre el 2006?
d <- pob_por_comuna_ine_2009[pob_por_comuna_ine_2006$Comuna == "Putre", ]
d
## Comuna sum.pob_chilena$Poblacion.2009
## 245 Putre 2255
Y en total para el 2009?
sum(pob_por_comuna[,2])
## [1] 16584521
sum(pob_por_comuna_ine_2009[,2])
## [1] 16881078
Debemos corregir los codigos para que podamos hacer la homologacion a los actuales Primero extraemos los códigos asociados a las comunas de la Casen del 2015:
dataset2015 <- readRDS("dataset2015.rds")
data_code <- dataset2015 [ , c("folio", "comuna")]
names(data_code)[2] <- "a"
data_code <- distinct(data_code , a, .keep_all = TRUE)
data_code <- data_code %>% mutate(a = str_squish(a))
data_code <- data_code %>% mutate(codigo = case_when(as.integer(folio / 10000000000) == 0 ~ as.integer(folio/ 10000000)
, as.integer(folio / 10000000000) <17 ~ as.integer(folio / 10000000)
))
data_cod <- subset( data_code, select = -folio )
# nos equivocamos en Coihaique:
data_code[269,2]<-11101
data_cod[171,2]<-16101
data_cod[172,2]<-16102
data_cod[173,2]<-16202
data_cod[174,2]<-16203
data_cod[175,2]<-16302
data_cod[176,2]<-16103
data_cod[177,2]<-16104
data_cod[178,2]<-16204
data_cod[179,2]<-16303
data_cod[180,2]<-16105
data_cod[181,2]<-16106
data_cod[182,2]<-16205
data_cod[183,2]<-16107
data_cod[184,2]<-16201
data_cod[185,2]<-16206
data_cod[186,2]<-16301
data_cod[187,2]<-16304
data_cod[188,2]<-16108
data_cod[189,2]<-16305
data_cod[190,2]<-16207
data_cod[191,2]<-16109
head(data_cod,4)
## a codigo
## 1 iquique 1101
## 2 alto hospicio 1107
## 3 pozo almonte 1401
## 4 camiña 1402
cross_tab = xtabs(dataset2015$expc ~ unlist(dataset2015$comuna) + unlist(dataset2015$pobreza) + unlist(dataset2015$sexo), aggregate(dataset2015$expc ~ unlist(dataset2015$comuna) + unlist(dataset2015$pobreza) + unlist(dataset2015$sexo), dataset2015, mean))
tabla <- as.data.frame(cross_tab)
d <-tabla[!(tabla$Freq == 0),]
d$anio <- "2015"
names(d)[1] <- "a"
head(d,4)
## a unlist.dataset2015.pobreza. unlist.dataset2015.sexo. Freq anio
## 1 iquique pobres extremos hombre 1314 2015
## 2 alto hospicio pobres extremos hombre 944 2015
## 3 pozo almonte pobres extremos hombre 225 2015
## 7 antofagasta pobres extremos hombre 1973 2015
df = merge( x = d, y = data_cod, by = "a", all.x = TRUE)
head(df,4)
## a unlist.dataset2015.pobreza. unlist.dataset2015.sexo. Freq anio
## 1 alto hospicio no pobres hombre 54090 2015
## 2 alto hospicio pobres no extremos mujer 3732 2015
## 3 alto hospicio pobres extremos mujer 1526 2015
## 4 alto hospicio no pobres mujer 50962 2015
## codigo
## 1 1107
## 2 1107
## 3 1107
## 4 1107
Sumemos las frecuencias de todas las categorias por comuna para tener la poblacion agrupada de las frecuencias:
pob_por_comuna <- aggregate(df$Freq, by=list(Comuna=df$a), FUN=sum)
head(pob_por_comuna,4)
## Comuna sum.df$Freq
## 1 iquique 178087
## 2 alto hospicio 114820
## 3 pozo almonte 14671
## 4 antofagasta 376378
Observe la cantidad de comunas desplegadas:
nrow(pob_por_comuna)
## [1] 139
Cual fue la poblacion de Antofagasta el 2015?
d <- pob_por_comuna_ine_2015[pob_por_comuna_ine_2015$Comuna == "Antofagasta", ]
d
## Comuna sum.pob_chilena$Poblacion.2015
## 10 Antofagasta 369028
Y en total para el 2015?
sum(pob_por_comuna[,2])
## [1] 14102859
sum(pob_por_comuna_ine_2015[,2])
## [1] 17971423
sum(is.na(dataset2015$pobreza))
## [1] 255
El proceso de homologación de códigos comunales a los actuales es perfecta a excepción de Coihaique.
Los factores de expansi[on no deben interpretarse como exactos, sino que como una aproximación. Mientras más pequeña es la población, mayor error. Sin embargo la aproximación a la población total debe ser mucho más precisa, como nos dió en el caso del 2006:
sum(pobttcc_por_comuna_s_p_2006[,2])
## [1] 16115034
sum(pob_por_comuna_ine_2006[,2])
## [1] 16347890
Un 1% o 2% de error es tolerable.
La tabla de frecuencias arroja 139 comunas para la selección elegida para el 2015. Ahora averiguaremos por qué.