Variables de Ingreso en la Casen
Generación y revisión de tablas de contingencia sobre 4 categorías de ingreso: aplicación al estudio de la población inmigrante.
Abstract
Ya identificamos las 4 variables más relevantes referidas al Ingreso en la Casen en un artículo previo. Hemos generado y revisado las ttcc para el set de categorías Comuna-Sexo-Etnia-Alfabetismo (ver aquí). Ahora, revisamos y corregimos las tablas de contingencia para el set Comuna-Sexo-Migra-Alfabetismo.
Recordemos que las variables que consideramos más relevantes y que por lo tanto utilizaremos son:
variable de ingreso | ||||
---|---|---|---|---|
Ingreso total | Ingreso autónomo | Ingreso del trabajo | Ingreso de la ocupación principal | |
año | ||||
2017 | ytotcor | yautcor | ytrabajocor | yoprcor |
2015 | ytotcor | yautcor | ytrabajocor | yoprcor |
2013 | ytotcor | yautcor | ytrabajocor | yoprcor |
2011 | ytotaj | yautaj | ytrabaj | yopraj |
2009 | ytotaj | yautaj | ytrabaj | yopraj |
2006 | ytotaj | yautaj | ytrabaj | yopraj |
En este artículo se hará una revisión a las tablas de contingencia generadas sobre el set de categorías: Comuna-Sexo-Migra-Alfabetismo, y en específico, se corregirá para homologar entre los años la categoría de respuesta a la pregunta: ¿Sabe Leer?
var_ytotaj <- readRDS("variables_ingreso_migra/ytotaj_migra.rds")
var_yautaj <- readRDS("variables_ingreso_migra/yautaj_migra.rds")
var_yopraj <- readRDS("variables_ingreso_migra/yopraj_migra.rds")
var_ytrabaj <- readRDS("variables_ingreso_migra/ytrabaj_migra.rds")
A la respuesta de la pregunta ¿Sabe leer?, la Casen del 2011 entrega 4 categorías de respuesta. Éstas categorías no son constantes pues se le agregan otras o son modificadas en las Casen posteriores. En nuestra tabla de contingencia relacionada al ingreso YTOTAJ, éstas categorías se distribuyen en los siguientes porcentajes:
Primero veamos el contenido de la ttcc en cuestión.
head(var_ytotaj,5)%>%
kbl()%>%
kable_classic(full_width = F, html_font = "Cambria")
Comuna | Alfabetismo | Migración | Sexo | Promedio del Ingreso | Desviación standard | Gini | Año | Código |
---|---|---|---|---|---|---|---|---|
Alhué | Sí, lee y escribe | Perú | Mujer | 62120 | NA | 0.0000000 | 2011 | 13502 |
Alhué | Sí, lee y escribe | Ecuador | Mujer | 287965 | NA | 0.0000000 | 2011 | 13502 |
Alhué | Sí, lee y escribe | Argentina | Mujer | 214305 | 38855.52 | 0.0641026 | 2011 | 13502 |
Alhué | Sí, lee y escribe | Argentina | Hombre | 58535 | 72641.08 | 0.4387546 | 2011 | 13502 |
Alto Biobío | Sí, lee y escribe | Argentina | Mujer | 307720 | NA | 0.0000000 | 2011 | 08314 |
alfa_gene <- function(n){
x<-switch(n,"2011","2013","2015","2017")
for(i in x){
var <- filter(var_ytotaj, var_ytotaj$Año == x)
a <- nrow(var)
my_summary_data <- var %>%
group_by(Alfabetismo) %>%
summarise(Porcentaje = n()*100/a)
print(my_summary_data)
return(my_summary_data)
}
}
Al revisar los porcentajes de las categorías presentes en la tabla de contingencia anterior, nos encontramos con que la totalidad estadistica pertenece a la categoría “Sí, lee y escribe”. Si bien esto no indica frecuencias de individuos sino que de categorías, de todas maneras revela que la población inmigrante es mas letrada que la nacional pues excluímos promedios de ingreso iguales a 0. La creación automática de categorías con R, que excluye los promedios iguales a 0 nos entrega sólo las categorías que existen, y estas categorias existentes revelan que casi la totalidad de la población inmigrante sabe leer y escribir.
Desplequemos las categorías de respuestas de la pregunta ¿Sabe Leer? de la tabla de contingencia relativa a ingresos totales:
for (n in 1:4){
alfa_gene(n)
}
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 4 x 2
## Alfabetismo Porcentaje
## <fct> <dbl>
## 1 Sí, lee y escribe 95.3
## 2 No, sólo lee 1.67
## 3 No, sólo escribe 0.139
## 4 No, ninguno 2.92
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 4 x 2
## Alfabetismo Porcentaje
## <fct> <dbl>
## 1 Sí, lee y escribe 94.7
## 2 No, sólo lee 2.53
## 3 No, sólo escribe 0.267
## 4 No, ninguno 2.53
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 3 x 2
## Alfabetismo Porcentaje
## <fct> <dbl>
## 1 Sí, lee y escribe 97.3
## 2 No, sólo lee 1.35
## 3 No, ninguno 1.35
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 5 x 2
## Alfabetismo Porcentaje
## <fct> <dbl>
## 1 Sí, lee y escribe 94.5
## 2 No, sólo lee 1.75
## 3 No, sólo escribe 0.973
## 4 No, ninguno 2.63
## 5 No sabe/responde 0.195
Generemos a continuación la totalidad de categorías de respuesta a la pregunta en cuestión en la ttcc de ingresos totales:
unicos <- unique(var_ytotaj$Alfabetismo)
unicos <- as.data.frame(unicos)
unicos
## unicos
## 1 Sí, lee y escribe
## 2 No, ninguno
## 3 No, sólo lee
## 4 No, sólo escribe
## 5 No sabe/responde
A continuación tenemos el diccionario que leeremos para hacer el merge con el que generaremos una nueva columna con nuestras categorías correctas. Luego podremos borrar el campo original.
alfabetismo <- read_xlsx("alfabetismo_unicos.xlsx")
head(alfabetismo,9)%>%
kbl()%>%
kable_classic(full_width = F, html_font = "Cambria")
Alfabetismo | cat_alfa |
---|---|
Sí | Sí |
No | No |
No sabe /Sin dato | NS/NR |
Sí, lee y escribe | Sí |
No, sólo lee | No |
No, ninguno | No |
No, sólo escribe | No |
NS/NR | NS/NR |
No sabe/responde | NS/NR |
Ahora corregimos nuestras 4 ttcc relacionadas a los 4 tipos de ingreso fundamentales de la Casen:
nuevas_cat = merge( x = var_ytotaj, y = alfabetismo, by = "Alfabetismo", all.x = TRUE)
ytotaj_mig_alf_corr <- nuevas_cat[,c(-1)]
head(ytotaj_mig_alf_corr,5)%>%
kbl()%>%
kable_classic(full_width = F, html_font = "Cambria")
Comuna | Migración | Sexo | Promedio del Ingreso | Desviación standard | Gini | Año | Código | cat_alfa |
---|---|---|---|---|---|---|---|---|
Iquique | Bolivia | Hombre | 274167 | NA | 0 | 2017 | 01101 | NS/NR |
Antofagasta | Bolivia | Mujer | 120000 | NA | 0 | 2017 | 02101 | NS/NR |
Aysén | Argentina | Mujer | 105350 | NA | 0 | 2013 | 11201 | No |
Alto Hospicio | Bolivia | Mujer | 150000 | NA | 0 | 2011 | 01107 | No |
Alto Hospicio | Bolivia | Hombre | 290000 | NA | 0 | 2015 | 01107 | No |
# saveRDS(ytotaj_mig_alf_corr,"variables_ingreso_migra/ytotaj_mig_alf_corr.rds")
nuevas_cat = merge( x = var_yautaj, y = alfabetismo, by = "Alfabetismo", all.x = TRUE)
yautaj_mig_alf_corr <- nuevas_cat[,c(-1)]
head(yautaj_mig_alf_corr,5)%>%
kbl()%>%
kable_classic(full_width = F, html_font = "Cambria")
Comuna | Migración | Sexo | Promedio del Ingreso | Desviación standard | Gini | Año | Código | cat_alfa |
---|---|---|---|---|---|---|---|---|
Antofagasta | Bolivia | Mujer | 120000 | NA | 0 | 2017 | 02101 | NS/NR |
Iquique | Bolivia | Hombre | 274167 | NA | 0 | 2017 | 01101 | NS/NR |
Yerbas Buenas | Haití | Hombre | 300000 | NA | 0 | 2017 | 07408 | No |
Alto Hospicio | Bolivia | Mujer | 150000 | NA | 0 | 2011 | 01107 | No |
Antofagasta | España | Mujer | 160000 | NA | 0 | 2013 | 02101 | No |
# saveRDS(yautaj_mig_alf_corr,"variables_ingreso_migra/yautaj_mig_alf_corr.rds")
nuevas_cat = merge( x = var_yopraj, y = alfabetismo, by = "Alfabetismo", all.x = TRUE)
yopraj_mig_alf_corr <- nuevas_cat[,c(-1)]
head(yopraj_mig_alf_corr,5)%>%
kbl()%>%
kable_classic(full_width = F, html_font = "Cambria")
Comuna | Migración | Sexo | Promedio del Ingreso | Desviación standard | Gini | Año | Código | cat_alfa |
---|---|---|---|---|---|---|---|---|
Antofagasta | Bolivia | Mujer | 120000 | NA | 0.000 | 2017 | 02101 | NS/NR |
Iquique | Bolivia | Hombre | 270000 | NA | 0.000 | 2017 | 01101 | NS/NR |
Cunco | No contesta | Hombre | 64000 | 22627.42 | 0.125 | 2015 | 09103 | No |
Natales | Argentina | Hombre | 197820 | NA | 0.000 | 2011 | 12401 | No |
Putre | Israel | Hombre | 90000 | NA | 0.000 | 2013 | 15201 | No |
# saveRDS(yopraj_mig_alf_corr,"variables_ingreso_migra/yopraj_mig_alf_corr.rds")
nuevas_cat = merge( x = var_ytrabaj, y = alfabetismo, by = "Alfabetismo", all.x = TRUE)
ytrabaj_mig_alf_corr <- nuevas_cat[,c(-1)]
head(ytrabaj_mig_alf_corr,5)%>%
kbl()%>%
kable_classic(full_width = F, html_font = "Cambria")
Comuna | Migración | Sexo | Promedio del Ingreso | Desviación standard | Gini | Año | Código | cat_alfa |
---|---|---|---|---|---|---|---|---|
Iquique | Bolivia | Hombre | 270000 | NA | 0 | 2017 | 01101 | NS/NR |
Antofagasta | Bolivia | Mujer | 120000 | NA | 0 | 2017 | 02101 | NS/NR |
Putre | Bolivia | Mujer | 220000 | NA | 0 | 2017 | 15201 | No |
Putre | Israel | Hombre | 90000 | NA | 0 | 2013 | 15201 | No |
Graneros | Bolivia | Hombre | 300000 | NA | 0 | 2017 | 06106 | No |
# saveRDS(ytrabaj_mig_alf_corr,"variables_ingreso_migra/ytrabaj_mig_alf_corr.rds")
Corregimos tres tipos de respuesta diferentes pero que hacen referencia a lo mismo.
categorias <- read_xlsx("paises.xlsx")
paises_cat = merge( x = ytotaj_mig_alf_corr, y = categorias, by = "Migración", all.x = TRUE)
ytotaj_mig_alf_corr <- paises_cat[,c(-1)]
head(ytotaj_mig_alf_corr,5)
## Comuna Sexo Promedio del Ingreso Desviación standard Gini Año
## 1 Purranque Hombre 410200.0 NA 0.000000000 2011
## 2 Coyhaique Mujer 250000.0 NA 0.000000000 2017
## 3 Copiapó Hombre 260000.0 NA 0.000000000 2011
## 4 Las Condes Mujer 446666.7 10137.66 0.009120896 2015
## 5 Cartagena Mujer 121352.0 NA 0.000000000 2011
## Código cat_alfa cat_paises
## 1 10303 Sí Alemania
## 2 11101 No Alemania
## 3 03101 Sí Alemania
## 4 13114 Sí Alemania
## 5 05603 Sí Alemania
saveRDS(ytotaj_mig_alf_corr,"variables_ingreso_migra/ytotaj_mig_alf_corr.rds")
write_xlsx(ytotaj_mig_alf_corr,"variables_ingreso_migra/ytotaj_mig_alf_corr.xlsx")
categorias <- read_xlsx("paises.xlsx")
paises_cat = merge( x = yautaj_mig_alf_corr, y = categorias, by = "Migración", all.x = TRUE)
yautaj_mig_alf_corr <- paises_cat[,c(-1)]
head(yautaj_mig_alf_corr,5)
## Comuna Sexo Promedio del Ingreso Desviación standard Gini Año Código
## 1 Pucón Mujer 256667 NA 0 2011 09115
## 2 Colbún Hombre 451220 NA 0 2011 07402
## 3 Vitacura Mujer 450000 NA 0 2011 13132
## 4 Vitacura Mujer 600000 NA 0 2017 13132
## 5 Providencia Mujer 500000 NA 0 2011 13123
## cat_alfa cat_paises
## 1 Sí Alemania
## 2 Sí Alemania
## 3 Sí Alemania
## 4 Sí Alemania
## 5 Sí Alemania
saveRDS(yautaj_mig_alf_corr,"variables_ingreso_migra/yautaj_mig_alf_corr.rds")
write_xlsx(yautaj_mig_alf_corr,"variables_ingreso_migra/yautaj_mig_alf.xlsx")
categorias <- read_xlsx("paises.xlsx")
paises_cat = merge( x = yopraj_mig_alf_corr, y = categorias, by = "Migración", all.x = TRUE)
yopraj_mig_alf_corr <- paises_cat[,c(-1)]
head(yopraj_mig_alf_corr,5)
## Comuna Sexo Promedio del Ingreso Desviación standard Gini Año
## 1 Coelemu Mujer 500000 NA 0.00000000 2017
## 2 Purranque Mujer 512750 NA 0.00000000 2011
## 3 Valdivia Mujer 397425 18066.58 0.01607221 2011
## 4 Las Condes Mujer 200000 NA 0.00000000 2015
## 5 Villarrica Hombre 500000 NA 0.00000000 2013
## Código cat_alfa cat_paises
## 1 16203 Sí Alemania
## 2 10303 Sí Alemania
## 3 14101 Sí Alemania
## 4 13114 Sí Alemania
## 5 09120 Sí Alemania
saveRDS(yopraj_mig_alf_corr,"variables_ingreso_migra/yopraj_mig_alf_corr.rds")
write_xlsx(yopraj_mig_alf_corr,"variables_ingreso_migra/yopraj_mig_alf_corr.xlsx")
categorias <- read_xlsx("paises.xlsx")
paises_cat = merge( x = ytrabaj_mig_alf_corr, y = categorias, by = "Migración", all.x = TRUE)
ytrabaj_mig_alf_corr <- paises_cat[,c(-1)]
head(ytrabaj_mig_alf_corr,5)
## Comuna Sexo Promedio del Ingreso Desviación standard Gini Año Código
## 1 Colbún Hombre 451220 NA 0 2011 07402
## 2 Coelemu Mujer 500000 NA 0 2017 16203
## 3 Viña del Mar Mujer 500000 NA 0 2013 05109
## 4 La Florida Mujer 64000 NA 0 2013 13110
## 5 Cartagena Mujer 121352 NA 0 2011 05603
## cat_alfa cat_paises
## 1 Sí Alemania
## 2 Sí Alemania
## 3 Sí Alemania
## 4 Sí Alemania
## 5 Sí Alemania
saveRDS(ytrabaj_mig_alf_corr,"variables_ingreso_migra/ytrabaj_mig_alf_corr.rds")
write_xlsx(ytrabaj_mig_alf_corr,"variables_ingreso_migra/ytrabaj_mig_alf_corr.xlsx")
Se supone que los inmigrantes del primer mundo deben tener ingresos superiores a los que provienen de un país pobre del tercero.
ytotaj_filtro11 <- filter(ytotaj_mig_alf_corr, ytotaj_mig_alf_corr$Año == 2011)
ytotaj_filtro13 <- filter(yautaj_mig_alf_corr, yautaj_mig_alf_corr$Año == 2013)
ytotaj_filtro15 <- filter(yopraj_mig_alf_corr, yopraj_mig_alf_corr$Año == 2015)
ytotaj_filtro17 <- filter(ytrabaj_mig_alf_corr, ytrabaj_mig_alf_corr$Año == 2017)
eliminated<- ytotaj_mig_alf_corr
a <- eliminated$`Promedio del Ingreso`
b <- eliminated$Comuna
c <- eliminated$Año
promedios_ytotaj <-aggregate(a, by=list(b, c), FUN = mean , na.rm = TRUE)
fig <- plot_ly(promedios_ytotaj, x = ~promedios_ytotaj$Group.2, y = ~promedios_ytotaj$mean.a, color= ~promedios_ytotaj$Group.1, type = 'scatter', mode = 'lines')%>%
layout(title = "Evolución del ingreso total por año por comuna en la poblacion inmigrante",
xaxis = list(title = "Año"), yaxis= list(title = "Ingreso total"))
fig
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
# promedios_ytotaj_comuna <- filter(promedios_ytotaj, promedios_ytotaj$Group.1=="Iquique")
#
# fit <- lm(mean.a ~ Group.2, data = promedios_ytotaj_comuna)
#
# promedios_ytotaj_comuna %>% plot_ly(x = ~Group.2) %>% add_markers(y = ~mean.a) %>% add_lines(x =~Group.2, y = fitted(fit))
#
# # promedios_ytotaj_comuna%>%plot_ly(x= ~promedios_ytotaj_comuna$Group.2)%>%add_markers(y = ~Ozone)
Si queremos graficar el promedio del ingreso para una comuna a lo largo de los años solo debemos tener un valor para ese año, por lo que debemos aplicar un promedio de los promedios de los ingresos
eliminated<- yautaj_mig_alf_corr
a <- eliminated$`Promedio del Ingreso`
b <- eliminated$Comuna
c <- eliminated$Año
promedios_yautaj <-aggregate(a, by=list(b, c), FUN = mean , na.rm = TRUE)
fig <- plot_ly(promedios_yautaj, x = ~promedios_yautaj$Group.2, y = ~promedios_yautaj$mean.a, color= ~promedios_yautaj$Group.1, type = 'scatter', mode = 'lines')
fig
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
Si queremos graficar el promedio del ingreso para una comuna a lo largo de los años solo debemos tener un valor para ese año, por lo que debemos aplicar un promedio de los promedios de los ingresos
eliminated<- yopraj_mig_alf_corr
a <- eliminated$`Promedio del Ingreso`
b <- eliminated$Comuna
c <- eliminated$Año
promedios_yopraj <-aggregate(a, by=list(b, c), FUN = mean , na.rm = TRUE)
fig <- plot_ly(promedios_yopraj, x = ~promedios_yopraj$Group.2, y = ~promedios_yopraj$mean.a, color= ~promedios_yopraj$Group.1, type = 'scatter', mode = 'lines')
fig
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
Si queremos graficar el promedio del ingreso para una comuna a lo largo de los años solo debemos tener un valor para ese año, por lo que debemos aplicar un promedio de los promedios de los ingresos
eliminated<- ytrabaj_mig_alf_corr
a <- eliminated$`Promedio del Ingreso`
b <- eliminated$Comuna
c <- eliminated$Año
promedios_ytrabaj <-aggregate(a, by=list(b, c), FUN = mean , na.rm = TRUE)
fig <- plot_ly(promedios_ytrabaj, x = ~promedios_ytrabaj$Group.2, y = ~promedios_ytrabaj$mean.a, color= ~promedios_ytrabaj$Group.1, type = 'scatter', mode = 'lines')
fig
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
Histograma de la distribución de los ingresos
fig <- plot_ly(alpha = 0.6)
fig <- fig %>% add_histogram(x = ~promedios_ytotaj$mean.a, name = "ytotaj")
fig <- fig %>% add_histogram(x = ~promedios_yautaj$mean.a, name = "yautaj")
fig <- fig %>% add_histogram(x = ~promedios_yopraj$mean.a, name = "yopraj")
fig <- fig %>% add_histogram(x = ~promedios_ytrabaj$mean.a, name = "ytrabaj")
fig <- fig %>% layout(barmode = "overlay")
fig
# set1 <- readRDS("variables_ingreso_migra/ytotaj_mig_alf_corr.rds")
# set2 <- readRDS("variables_ingreso_migra/yautaj_mig_alf_corr.rds")
# set3 <- readRDS("variables_ingreso_migra/yopraj_mig_alf_corr.rds")
# set4 <- readRDS("variables_ingreso_migra/ytrabaj_mig_alf_corr.rds")
# write_xlsx(set1,"variables_ingreso_migra/ytotaj_mig_alf_corr.xlsx")
# write_xlsx(set2,"variables_ingreso_migra/yautaj_mig_alf_corr.xlsx")
# write_xlsx(set3,"variables_ingreso_migra/yopraj_mig_alf_corr.xlsx")
# write_xlsx(set4,"variables_ingreso_migra/ytrabaj_mig_alf_corr.xlsx")