# Estimación de Pobreza e Indigencia

En esta vignette mostraremos como utilizar las funciones `get_poverty_lines()` y `calculate_poverty()` para calcular la pobreza aproximando la metodología oficial de INDEC.

Primero cargamos el paquete `eph` junto con otros paquetes que serán de utilidad

    knitr::opts_chunk$set(warning = FALSE, message = FALSE)
    library(eph)
    library(tidyverse)
    #> ── Attaching packages ────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
    #> ✓ tibble  3.0.1     ✓ stringr 1.4.0
    #> ✓ readr   1.3.1     ✓ forcats 0.5.0
    #> ── Conflicts ───────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
    #> x dplyr::filter() masks stats::filter()
    #> x dplyr::lag()    masks stats::lag()
    library(lubridate)
    #>
    #> Attaching package: 'lubridate'
    #> The following objects are masked from 'package:base':
    #>
    #>     date, intersect, setdiff, union

Luego descargamos los datos que utilizaremos. Para ello, debemos tener en cuenta que la metodología de pobreza de (INDEC, 2016) utiliza canastas basicas alimentarias (CBA) y totales (CBT) regionales, que INDEC publica dentro de los comunicados de pobreza. Para dejarlo claro, la función `get_poverty_lines()` permite descargar las dos series de CBA-CBT.

1. La CBA-CBT del Gran Buenos Aires, que INDEC publica mensualmente
2. Las canastas regionales, que se publican en los informes semestrales de pobreza. Estas canastas tienen una composición diferente siguiendo los hábitos de consumo de cada lugar, pero se calculan con precios de GBA y se multiplican por los coeficientes de Paridad de Poder de Compra (PPCC))1.

El parametro `regionales` de la función `get_poverty_lines()` define cual de las dos canastas se descarga.

Además, con la función `get_microdata()` descargamos las bases de todos los trimestres entre 2016 y 2019. Dado que son muchas bases y no utilizaremos todas las variables, utilizamos el parametro `vars` para hacer un pre filtro de la base y no sobrecargar la memoria. A su vez, dado que la descarga y filtrado de las bases consume mucho tiempo, utilizamos el parámetro `destfile` para guardar la descarga en un archivo, y que la próxima vez que se ejecute la función cargue este archivo, de forma mucho más rápida (en la computadora donde se construyó la vignette, la primera corrida tarda 100 seg y las siguientes 0.5 seg!)

    canastas_regionales <- get_poverty_lines(regional = TRUE)
    bases <- get_microdata(year = 2016:2019,
                           trimester = 1:4,
                           type =  'individual',
                           vars = c("ANO4", "TRIMESTRE", "REGION", "CODUSU", "NRO_HOGAR", "CH04", "CH06", "ITF", "PONDIH", "PP07H","PP04D_COD"),
                           destfile = 'bases_eph.rds')

Con la función `unnest()` agrupamos todas las bases, y con `calculate_poverty()` y los datos que descargamos calculamos la pobreza. El parámetro `print_summary=TRUE` le indica a la función que deseamos imprimir un cuadro de las tasas de pobreza e indigencia por período. Sin embargo, en la tabla `bases_pobreza` contamos ahora con la variable `situación` que indica si el hogar es `pobre`, `indigente` o `no_pobre`. Si la variable es `NA` es porque al menos un miembro del hogar no declaró el ingreso (y por lo tanto no se sabe el Ingreso Total Familiar).

    bases <- bases %>% unnest(cols = c(microdata))
    bases_pobreza <- calculate_poverty(bases, canastas_regionales, print_summary = TRUE)
    #> # A tibble: 15 x 4
    #> # Groups:   ANO4 [4]
    #>     ANO4 TRIMESTRE Tasa_pobreza Tasa_indigencia
    #>    <int>     <int>        <dbl>           <dbl>
    #>  1  2016         2        0.322          0.0620
    #>  2  2016         3        0.307          0.0662
    #>  3  2016         4        0.300          0.0568
    #>  4  2017         1        0.277          0.0613
    #>  5  2017         2        0.293          0.0618
    #>  6  2017         3        0.249          0.0505
    #>  7  2017         4        0.263          0.0447
    #>  8  2018         1        0.256          0.0492
    #>  9  2018         2        0.290          0.0484
    #> 10  2018         3        0.281          0.0596
    #> 11  2018         4        0.355          0.0737
    #> 12  2019         1        0.342          0.0709
    #> 13  2019         2        0.364          0.0812
    #> 14  2019         3        0.331          0.0762
    #> 15  2019         4        0.383          0.0866
    bases_pobreza
    #> # A tibble: 877,305 x 20
    #>     year trimester wave  type   ANO4 TRIMESTRE REGION CODUSU NRO_HOGAR  CH04
    #>    <int>     <int> <lgl> <fct> <int>     <int>  <dbl> <chr>      <int> <dbl>
    #>  1  2017         1 NA    indi…  2017         1     43 TQRMN…         1     2
    #>  2  2017         1 NA    indi…  2017         1     43 TQRMN…         1     2
    #>  3  2017         1 NA    indi…  2017         1     43 TQRMN…         1     1
    #>  4  2017         1 NA    indi…  2017         1     43 TQRMN…         1     2
    #>  5  2017         1 NA    indi…  2017         1     43 TQRMN…         1     1
    #>  6  2017         1 NA    indi…  2017         1     43 TQRMN…         1     2
    #>  7  2017         1 NA    indi…  2017         1     43 TQRMN…         1     2
    #>  8  2017         1 NA    indi…  2017         1     43 TQRMN…         1     1
    #>  9  2017         1 NA    indi…  2017         1     43 TQRMN…         1     1
    #> 10  2017         1 NA    indi…  2017         1     43 TQRMN…         1     2
    #> # … with 877,295 more rows, and 10 more variables: CH06 <dbl>, ITF <int>,
    #> #   PONDIH <int>, PP07H <int>, PP04D_COD <chr>, region <chr>,
    #> #   adequi_hogar <dbl>, CBA_hogar <dbl>, CBT_hogar <dbl>, situacion <chr>

## Comparación con los resultados oficiales.

Descargamos las tasas de pobreza e indigencia oficiales que guardamos en nuestro repositorio holatam/data.

    pobreza_oficial <- read_csv('https://raw.githubusercontent.com/holatam/data/master/eph/canasta/pobreza_oficial.csv')
    pobreza_oficial <- pobreza_oficial %>%
      mutate(periodo = parse_date_time(paste0(ANO4,'-',SEMESTRE*2), 'Y.q')) %>%
      select(periodo,pobreza_oficial=tasa_pobreza, indigencia_oficial = tasa_indigencia)
    pobreza_oficial
    #> # A tibble: 7 x 3
    #>   periodo             pobreza_oficial indigencia_oficial
    #>   <dttm>                        <dbl>              <dbl>
    #> 1 2016-10-01 00:00:00           0.303              0.061
    #> 2 2017-04-01 00:00:00           0.286              0.062
    #> 3 2017-10-01 00:00:00           0.257              0.048
    #> 4 2018-04-01 00:00:00           0.273              0.049
    #> 5 2018-10-01 00:00:00           0.32               0.067
    #> 6 2019-04-01 00:00:00           0.354              0.077
    #> 7 2019-10-01 00:00:00           0.355              0.08

Reutilizamos el código dentro de la función `calculate_poverty()` que calcula las tasas de pobreza e indigencia para comparar los resultados. Nótese que no es un promedio simple, sino un promedio ponderado por la variable `PONDIH`.

    Pobreza_resumen <- bases_pobreza %>%
      group_by(ANO4,TRIMESTRE) %>%
      summarise(Tasa_pobreza    = sum(PONDIH[situacion %in% c('pobre', 'indigente')],na.rm = TRUE)/sum(PONDIH,na.rm = TRUE),
                Tasa_indigencia = sum(PONDIH[situacion == 'indigente'],na.rm = TRUE)/sum(PONDIH,na.rm = TRUE),
                .groups= 'drop') %>%
      mutate(periodo = parse_date_time(paste0(ANO4,'-',TRIMESTRE), 'Y.q')) %>%
      select(periodo,pobreza_estimada = Tasa_pobreza, indigencia_estimada = Tasa_indigencia)

    Pobreza_resumen <- Pobreza_resumen %>%
      left_join(pobreza_oficial,by = "periodo") %>%
      pivot_longer(cols = pobreza_estimada:indigencia_oficial, names_to = c('tipo','grupo'), values_to = 'valor', names_sep = '_',values_drop_na = TRUE)

A continuación mostramos un gráfico que compara los resultados:

- como segmentos colorados, nuestro cálculo trimestral de la pobreza
- la pobreza oficial se calcula a nivel semestral, y se representa como un punto en el medio del semestre correspondiente.

Se puede ver que la pobreza oficial se ubica en todos los períodos como un punto entre los dos trimestres que la componen (es decir los segmentos a su izquierda y derecha).

    Pobreza_resumen <- Pobreza_resumen %>%
      group_by(tipo, grupo) %>%
      mutate(x = lag(periodo),
             y = lag(valor))

    ggplot(Pobreza_resumen, aes(periodo, valor,color=grupo))+
      geom_step(data = Pobreza_resumen %>% filter(grupo=='estimada'), linetype='dashed')+
      geom_segment(data = Pobreza_resumen %>% filter(grupo=='estimada'),
                   aes(x = x, y = y, xend = periodo, yend = y), size=1)+
      geom_point(data = Pobreza_resumen %>% filter(grupo=='oficial'), size= 3)+
      facet_wrap(tipo~., scales = 'free')+
      theme_minimal()+
      theme(legend.position = 'bottom')

Dado que la estimación que realizamos con las bases trimestrales es consistente con los resultados oficiales, podemos aprovechar que contamos con la identificación de la condición de los individuos, para realizar otro tipo de estimaciones.

Por ejemplo, podemos utilizar la variable `PP04D_COD` con el código de ocupación, y la función `organize_cno()` para extraer la calificación del puesto. Luego, podemos estudiar las tasas de pobreza e indigencia según la calificación del trabajo. De esta forma, vemos que tanto pobreza como indigencia son más altas entre los trabajadores no calificados, siguiendo los operativos, los técnicos y finalmente los trabajadores profesionales, con tasas más bajas.

    pobreza_calificacion <- bases_pobreza %>%
      filter(!is.na(situacion), !is.na(PP04D_COD))%>%
      organize_cno(.) %>%
      filter(CALIFICACION %in% c('No calificados','Operativos','Técnicos','Profesionales')) %>%
      group_by(year,trimester,CALIFICACION) %>%
      summarise(pobreza    = sum(PONDIH[situacion %in% c('pobre', 'indigente')],na.rm = TRUE)/sum(PONDIH,na.rm = TRUE),
                indigencia = sum(PONDIH[situacion == 'indigente'],na.rm = TRUE)/sum(PONDIH,na.rm = TRUE),
                .groups= 'drop')

    pobreza_calificacion %>%
      mutate(periodo = parse_date_time(paste0(year,'-',trimester), 'Y.q')) %>%
      pivot_longer(cols = pobreza:indigencia, names_to = c('tipo'), values_to = 'tasa') %>%
      ggplot(aes(periodo,tasa, fill=tipo))+
      geom_col(position = position_dodge())+
      facet_wrap(.~CALIFICACION)+
      theme_minimal()+
      theme(legend.position = 'bottom')

A su vez, podemos analizar la relación entre la pobreza y la precariedad laboral. Utilizando la variable `PP07H`, que indica si se perciben descuentos jubilatorios o no (un proxy común para la precariedad laboral), podemos comparar la incidencia de la pobreza y la indigencia entre trabajadores precarios y formales. Como puede verse en el siguiente gráfico, las diferencias son significativas en ambos indicadores.

    pobreza_informalidad <- bases_pobreza %>%
      filter(!is.na(situacion), PP07H %in% 1:2) %>%
      group_by(year,trimester,PP07H) %>%
      summarise(pobreza    = sum(PONDIH[situacion %in% c('pobre', 'indigente')],na.rm = TRUE)/sum(PONDIH,na.rm = TRUE),
                indigencia = sum(PONDIH[situacion == 'indigente'],na.rm = TRUE)/sum(PONDIH,na.rm = TRUE),
                .groups= 'drop')

    pobreza_informalidad %>%
        mutate(periodo = parse_date_time(paste0(year,'-',trimester), 'Y.q'),
               descuento_jubilatorio = case_when(PP07H==1 ~ "Si",
                                                 TRUE ~ "No")) %>%
      pivot_longer(cols = pobreza:indigencia, names_to = c('tipo'), values_to = 'tasa') %>%
      ggplot(aes(periodo,tasa, color=descuento_jubilatorio))+
      #geom_col(position = position_dodge())+
      geom_point(size=2)+
      geom_smooth()+
      facet_wrap(tipo~., scales = 'free', ncol = 1)+
      theme_minimal()+
      theme(legend.position = 'bottom',
            text = element_text(size = 14))

# Comparación de canastas

Como se mencionó más arriba, las canastas utilizadas para calular la pobreza tienen una definición regional, pero se valorizan con precios de GBA. A continuación, se realiza una pequeña comparación de las mismas.

## Canasta Básica Alimentaria

Primero calculamos el cociente de las canastas de las regiones respecto a la de GBA.

    relativos_cba <- canastas_regionales %>%
      select(-CBT, -codigo) %>%
      pivot_wider(names_from = region,values_from = CBA) %>%
      mutate_at(.vars = c('Cuyo','Noreste','Noroeste','Pampeana','Patagonia'), ~ .x/GBA) %>%
      mutate(GBA = GBA/GBA,
             periodo = parse_date_time(periodo, 'Y.q')) #paso a formato fecha los trimestres
    relativos_cba
    #> # A tibble: 17 x 7
    #>    periodo              Cuyo   GBA Noreste Noroeste Pampeana Patagonia
    #>    <dttm>              <dbl> <dbl>   <dbl>    <dbl>    <dbl>     <dbl>
    #>  1 2015-10-01 00:00:00 0.896     1   0.912    0.882    1.00       1.03
    #>  2 2016-01-01 00:00:00 0.895     1   0.906    0.879    1.00       1.03
    #>  3 2016-04-01 00:00:00 0.896     1   0.900    0.878    1.00       1.03
    #>  4 2016-07-01 00:00:00 0.896     1   0.898    0.874    0.995      1.03
    #>  5 2016-10-01 00:00:00 0.894     1   0.893    0.869    0.994      1.03
    #>  6 2017-01-01 00:00:00 0.894     1   0.890    0.863    0.993      1.03
    #>  7 2017-04-01 00:00:00 0.894     1   0.892    0.868    0.992      1.03
    #>  8 2017-07-01 00:00:00 0.892     1   0.888    0.868    0.993      1.03
    #>  9 2017-10-01 00:00:00 0.894     1   0.891    0.871    0.996      1.03
    #> 10 2018-01-01 00:00:00 0.894     1   0.892    0.871    0.995      1.03
    #> 11 2018-04-01 00:00:00 0.891     1   0.891    0.866    0.989      1.03
    #> 12 2018-07-01 00:00:00 0.896     1   0.894    0.873    0.992      1.03
    #> 13 2018-10-01 00:00:00 0.894     1   0.890    0.867    0.991      1.03
    #> 14 2019-01-01 00:00:00 0.889     1   0.887    0.865    0.990      1.03
    #> 15 2019-04-01 00:00:00 0.886     1   0.885    0.866    0.986      1.02
    #> 16 2019-07-01 00:00:00 0.889     1   0.894    0.871    0.988      1.04
    #> 17 2019-10-01 00:00:00 0.893     1   0.898    0.874    0.992      1.04

Como se dijo, luego de valorizarse con precios de GBA, se multiplican por el PPCC. A contiuación mostramos la evolución de las canastas según

- PPCC (es un único valor por región calculado en 2001)
- efecto total (las canastas que se publican en el informe de pobreza)
- efecto composición (efecto total dividido por el PPCC, para anular el efecto del mismo, y estudiar exclusivamente la diferencia por definición de las canastas)

Se puede observar que si bien todas las canastas tienen por composición un mayor valor que la canasta de GBA, al multiplicarlas por el PPPC tan sólo la región Patagónica conserva una canasta con mayor valor.

    ppcc = data.frame(
    region = c('Cuyo','GBA','Noreste','Noroeste','Pampeana','Patagonia'),
    ppcc = c(.872,1,.886,.865,.904,.949)
    )

    relativos_cba %>%
      pivot_longer(cols = Cuyo:Patagonia,names_to = 'region', values_to = 'relativo') %>%
      left_join(ppcc, by =c('region')) %>%
      mutate(relativo_normalizado = relativo/ppcc) %>%
      pivot_longer(names_to = 'grupo', cols = c('relativo', 'relativo_normalizado','ppcc'),values_to = 'valor') %>%
      mutate(grupo = fct_recode(grupo,'efecto total'='relativo','efecto composición' ='relativo_normalizado')) %>%
      ggplot(aes(periodo,valor, color=region,group=region)) +
      geom_line()+
      facet_wrap(.~grupo)+
      theme_minimal()+
      theme(legend.position = 'bottom')

## Canasta Básica Total

    relativos_cbt <- canastas_regionales %>%
      select(-CBA, -codigo) %>%
      pivot_wider(names_from = region,values_from = CBT) %>%
      mutate_at(.vars = c('Cuyo','Noreste','Noroeste','Pampeana','Patagonia'), ~ .x/GBA) %>%
      mutate(GBA = GBA/GBA,
             periodo = parse_date_time(periodo, 'Y.q')) #paso a formato fecha los trimestres
    relativos_cbt
    #> # A tibble: 17 x 7
    #>    periodo              Cuyo   GBA Noreste Noroeste Pampeana Patagonia
    #>    <dttm>              <dbl> <dbl>   <dbl>    <dbl>    <dbl>     <dbl>
    #>  1 2015-10-01 00:00:00 0.951     1   0.852    0.816    1.00       1.17
    #>  2 2016-01-01 00:00:00 0.953     1   0.849    0.816    1.00       1.17
    #>  3 2016-04-01 00:00:00 0.955     1   0.844    0.815    1.00       1.17
    #>  4 2016-07-01 00:00:00 0.955     1   0.842    0.812    0.995      1.17
    #>  5 2016-10-01 00:00:00 0.952     1   0.836    0.806    0.994      1.17
    #>  6 2017-01-01 00:00:00 0.952     1   0.834    0.801    0.993      1.17
    #>  7 2017-04-01 00:00:00 0.951     1   0.835    0.805    0.991      1.17
    #>  8 2017-07-01 00:00:00 0.951     1   0.833    0.807    0.993      1.16
    #>  9 2017-10-01 00:00:00 0.953     1   0.836    0.810    0.996      1.17
    #> 10 2018-01-01 00:00:00 0.951     1   0.835    0.808    0.995      1.17
    #> 11 2018-04-01 00:00:00 0.948     1   0.833    0.803    0.989      1.17
    #> 12 2018-07-01 00:00:00 0.953     1   0.837    0.810    0.992      1.17
    #> 13 2018-10-01 00:00:00 0.952     1   0.833    0.805    0.991      1.17
    #> 14 2019-01-01 00:00:00 0.946     1   0.831    0.804    0.990      1.17
    #> 15 2019-04-01 00:00:00 0.945     1   0.830    0.804    0.986      1.16
    #> 16 2019-07-01 00:00:00 0.946     1   0.837    0.808    0.988      1.18
    #> 17 2019-10-01 00:00:00 0.950     1   0.841    0.811    0.991      1.18

Los resultados son similares analizando la CBT.

    relativos_cbt %>%
      pivot_longer(cols = Cuyo:Patagonia,names_to = 'region', values_to = 'relativo') %>%
      left_join(ppcc, by =c('region')) %>%
      mutate(relativo_normalizado = relativo/ppcc) %>%
      pivot_longer(names_to = 'grupo', cols = c('relativo', 'relativo_normalizado','ppcc'),values_to = 'valor') %>%
      mutate(grupo = fct_recode(grupo,'efecto total'='relativo','efecto composición' ='relativo_normalizado')) %>%
      ggplot(aes(periodo,valor, color=region,group=region)) +
      geom_line()+
      facet_wrap(.~grupo)+
      theme_minimal()+
      theme(legend.position = 'bottom')

Dado que la CBT no se calcula valorizando una canasta, sino multiplicando a la CBA por la Inversa del Coeficiente de Engel (ICE), el gráfico anterior (dado que no es idéntico al de CBA) indica que hay una diferencia en los ICE de las regiones. Efectivamente, la metodología de pobreza indica que el ICE se calcula a nivel región.

## Inversa del Coeficiente de Engel

Por lo tanto, realizamos la misma comparación para el ICE, calculado a partir de las CBA y CBT.

    relativos_ice <- canastas_regionales %>%
      group_by(region, periodo) %>%
      mutate(ice = CBT/CBA) %>%
      select(-CBA,-CBT, -codigo) %>%
      pivot_wider(names_from = region,values_from = ice) %>%
      mutate_at(.vars = c('Cuyo','Noreste','Noroeste','Pampeana','Patagonia'), ~ .x/GBA) %>%
      mutate(GBA = GBA/GBA,
             periodo = parse_date_time(periodo, 'Y.q')) #paso a formato fecha los trimestres
    relativos_ice
    #> # A tibble: 17 x 7
    #> # Groups:   periodo [17]
    #>    periodo              Cuyo   GBA Noreste Noroeste Pampeana Patagonia
    #>    <dttm>              <dbl> <dbl>   <dbl>    <dbl>    <dbl>     <dbl>
    #>  1 2015-10-01 00:00:00  1.06     1   0.934    0.925    1.00       1.13
    #>  2 2016-01-01 00:00:00  1.06     1   0.936    0.928    1.00       1.13
    #>  3 2016-04-01 00:00:00  1.07     1   0.937    0.929    1.00       1.14
    #>  4 2016-07-01 00:00:00  1.07     1   0.938    0.929    1.00       1.14
    #>  5 2016-10-01 00:00:00  1.07     1   0.936    0.928    1.00       1.14
    #>  6 2017-01-01 00:00:00  1.06     1   0.937    0.928    1.00       1.13
    #>  7 2017-04-01 00:00:00  1.06     1   0.936    0.928    0.999      1.14
    #>  8 2017-07-01 00:00:00  1.07     1   0.937    0.929    1.00       1.14
    #>  9 2017-10-01 00:00:00  1.07     1   0.938    0.930    1.00       1.14
    #> 10 2018-01-01 00:00:00  1.06     1   0.936    0.928    1.00       1.13
    #> 11 2018-04-01 00:00:00  1.06     1   0.935    0.927    1.00       1.13
    #> 12 2018-07-01 00:00:00  1.06     1   0.936    0.928    1.00       1.14
    #> 13 2018-10-01 00:00:00  1.06     1   0.936    0.928    1.00       1.13
    #> 14 2019-01-01 00:00:00  1.06     1   0.937    0.929    1.00       1.14
    #> 15 2019-04-01 00:00:00  1.07     1   0.937    0.928    1.00       1.13
    #> 16 2019-07-01 00:00:00  1.06     1   0.936    0.928    1.00       1.14
    #> 17 2019-10-01 00:00:00  1.06     1   0.936    0.928    0.999      1.13

    relativos_ice %>%
      pivot_longer(cols = Cuyo:Patagonia,names_to = 'region', values_to = 'relativo') %>%
      left_join(ppcc, by =c('region')) %>%
      ggplot(aes(periodo,relativo, color=region,group=region)) +
      geom_line()+
      theme_minimal()+
      theme(legend.position = 'bottom')

Si bien existe una clara diferencia de nivel, las variaciones dentro del período son marginales.

1. el motivo de esto es que al momento del primer calculo de pobreza en 2016 el IPC nacional se encontraba en construcción↩