Capítulo 8 RMarkdown

8.1 Introducción

El objetivo de esta clase es comenzar a trabajar utilizando los formatos RNotebook y/o RMarkdown para realizar reportes compilados directamente en RStudio, de forma tal que nuestro trabajo pueda quedar documentado y ser fácilmente compartido con otras personas.

Mientras que en la clase presencial trabajamos bajo la modalidad de código en vivo, en las presentes notas de clase se replican los ejercicios propuestos.

En lugar de abrir un R Script, en esta ocasión abriremos un nuevo documento del tipo R Notebook o R Markdown.

Cargamos la librería tidyverse con la cual trabajaremos para procesar la información

library(tidyverse)

Asentamos en la variable date el trimestre correspondiente a la información utilizada.

date <- "1er trimestre 2017"

De esta forma, cuando presentemos los resultados de nuestro análisis, podremos contar automáticamente con las etiquetas para los cuadros, gráficos y comentarios. Por ejemplo:

Todos los datos refieren a los 31 aglomerados urbanos relevados en la EPH y en esta ocasión corresponden al 1er trimestre 2017.

8.2 Organización de los datos

Cargamos la base individual del 1er trimestre 2017.

base_individual <- read.table("Fuentes/usu_individual_t117.txt", sep=";", dec=",", header = TRUE, fill = TRUE)

Modificamos la variable CH04 de la base de datos, de forma tal que se llame Sexo y contenga los valores Varones y Mujeres. De este modo los resultados se presentarán de forma más amena a su lectura.

base_individual <- base_individual %>% 
  mutate(Sexo = as.character(CH04),
         Sexo = case_when(Sexo=="1" ~ "Varones",
                          Sexo=="2" ~ "Mujeres"))

Construimos la variable NIVEL_EDUCATIVO, colapsando sus categorías en cuatro niveles.

base_individual <- base_individual %>% 
  mutate(NIVEL_EDUCATIVO = case_when(NIVEL_ED %in% c(1, 7) ~ "Sin Instrucción",
                                     NIVEL_ED %in% c(2, 3) ~ "Primaria",
                                     NIVEL_ED %in% c(4, 5) ~ "Secundaria",
                                     NIVEL_ED == 6         ~ "Superior",
                                     NIVEL_ED == 9         ~ "NS/NR"),
         NIVEL_EDUCATIVO = factor(NIVEL_EDUCATIVO, 
                                  levels = c("Sin Instrucción", 
                                             "Primaria", 
                                             "Secundaria", 
                                             "Superior")))

8.3 Tasas básicas de Mercado de trabajo

En esta instancia realizamos un ejercicio similar a los ya presentados en el curso. Calculamos las tasas de Actividad, Empleo y Desocupación, pero para cada uno de los sexos.

Si queremos mostrar la tabla resultante, debemos configurar el chunk de código de forma tal que el output sea “Show output only” (en caso de querer ocultar las líneas de código), o “Show code and output” (en caso de querer compartir también el código).

tabla1.1 <- base_individual %>% 
  filter(CH06 >= 14) %>% 
  group_by(Sexo) %>% 
  summarise(Poblacion         = sum(PONDERA),
            Ocupados          = sum(PONDERA[ESTADO == 1]),
            Desocupados       = sum(PONDERA[ESTADO == 2]),
            PEA               = Ocupados + Desocupados,
            'Tasa Actividad'    = round(PEA/Poblacion*100, 1),
            'Tasa Empleo'       = round(Ocupados/Poblacion*100, 1),
            'Tasa Desocupación' = round(Desocupados/PEA*100, 1)) %>% 
  select(-c(2:5)) %>% 
  gather(Indicadores, Valor, 2:4) %>% 
  spread(., Sexo, Valor)

tabla1.1
## # A tibble: 3 x 3
##   Indicadores       Mujeres Varones
##   <chr>               <dbl>   <dbl>
## 1 Tasa Actividad       46.1    69.6
## 2 Tasa Desocupación    10.2     8.5
## 3 Tasa Empleo          41.4    63.7

Lo mismo sucede en el caso de los gráficos:

Gráfico 1. Población de 14 años y más. Tasas de Actividad y de Empleo por sexo. Total de aglomerados urbanos. 1er trimestre 2017.

tabla1.2_graf <- tabla1.1 %>% 
  filter(Indicadores %in% c("Tasa Actividad", "Tasa Empleo")) %>% 
  gather(., Sexo, porcentaje, 2:3)

ggplot(tabla1.2_graf, 
       aes(x = '', porcentaje, 
           fill = Sexo, 
           group= Sexo, 
           label = paste0(porcentaje, "%"))) +
  geom_col(position = "dodge") +
  geom_text(position = position_dodge(width = .9), vjust =2, size = 6) +
  theme_void() +
  facet_grid(~Indicadores) +
  labs(caption = "Fuente: Elaboración propia en base a EPH-INDEC")

8.4 Empleo no registrado

Calculamos a continuación la tasa de empleo no registrado en el caso de las asalariadas mujeres y de los asalariados varones.

tabla2.1 <- base_individual %>% 
  filter(ESTADO==1,
         CAT_OCUP==3) %>% 
  group_by(Sexo) %>% 
  summarise("Proporción de no Registrados" =
              round(sum(PONDERA[PP07H==2])/sum(PONDERA)*100, 1))

inline_1 <- tabla2.1$`Proporción de no Registrados`[tabla2.1$Sexo == "Mujeres"]
inline_2 <- tabla2.1$`Proporción de no Registrados`[tabla2.1$Sexo == "Varones"]

tabla2.1
## # A tibble: 2 x 2
##   Sexo    `Proporción de no Registrados`
##   <chr>                            <dbl>
## 1 Mujeres                           35.1
## 2 Varones                           31.9

Hay un 35.1% de las asalariadas a quienes sus empleadores no inscriben en la seguridad social, mientras que para los asalariados varones esta tasa de no registro es del 31.9%.

8.5 Brechas de ingresos

8.5.1 Brecha de ingresos totales mensuales

tabla3.1 <- base_individual %>% 
  filter(P47T > 0) %>% 
  group_by(Sexo) %>% 
  summarise(Media.ITI = round(weighted.mean(P47T, PONDII), 1)) %>% 
  spread(., Sexo, Media.ITI) %>% 
  mutate("Brecha del Ingreso Total Individual" = round(((Varones-Mujeres)/Varones)*100, 1))

inline_3 <- tabla3.1$`Brecha del Ingreso Total Individual`

tabla3.1
## # A tibble: 1 x 3
##   Mujeres Varones `Brecha del Ingreso Total Individual`
##     <dbl>   <dbl>                                 <dbl>
## 1  10708.  14687.                                  27.1

Observando los ingresos totales individuales de toda la población, se observa que la brecha entre varones y mujeres en este caso es de 27.1 puntos porcentuales. Es decir, contemplando todos los ingresos que se perciben, sean de origen laboral o no laboral (como jubilaciones y pensiones, cuotas alimentarias, subsidios, etc.), las mujeres perciben ingresos que, en promedio, son un 27.1% menores que los de los varones.

8.5.1.1 Ejercicio: Calcular la brecha de ingresos mensuales de las/os ocupadas/os

# Resolución

tabla4.1 <- base_individual %>% 
  filter(ESTADO == 1) %>% 
  group_by(Sexo) %>% 
  summarise(Media.IOP = round(weighted.mean(P21, PONDIIO), 1)) %>% 
  spread(., Sexo, Media.IOP) %>% 
  mutate("Brecha de ingresos de la ocup. princ." = round(((Varones-Mujeres)/Varones)*100, 1))

inline_4 <- tabla4.1$`Brecha de ingresos de la ocupación principal`
inline_5 <- tabla4.1$`Media de ingresos de las Mujeres`
inline_6 <- tabla4.1$`Media de ingresos de los Varones`

tabla4.1
## # A tibble: 1 x 3
##   Mujeres Varones `Brecha de ingresos de la ocup. princ.`
##     <dbl>   <dbl>                                   <dbl>
## 1    9965  13218.                                    24.6

Simultáneamente, en el mercado de trabajo, las mujeres ganan en promedio un % menos que los varones ( vs. ). Estos datos corresponden a la totalidad de ocupadas/os, cualquiera sea su categoría ocupacional, calificación o jerarquía, y observando en este caso los ingresos provenientes de la ocupación principal.

8.5.2 Brecha de ingresos mensuales por nivel educativo

Antes de calcular la brecha de los ingresos mensuales para cada nivel educativo, veremos la distribución que presenta cada uno de los sexos respecto de esta variable.

tabla5.1 <- base_individual %>% 
  filter(ESTADO == 1, !is.na(NIVEL_EDUCATIVO)) %>% 
  group_by(Sexo) %>%
  mutate(Frecuencia = sum(PONDERA)) %>% 
  group_by(Sexo, NIVEL_EDUCATIVO) %>% 
  summarise(Tasa = round(sum(PONDERA)/unique(Frecuencia)*100, 1)) %>% 
  spread(., Sexo, Tasa) %>% 
  rename("Nivel Educativo" = NIVEL_EDUCATIVO, "% de Mujeres" = Mujeres, "% de Varones" = Varones)

tabla5.1
## # A tibble: 4 x 3
##   `Nivel Educativo` `% de Mujeres` `% de Varones`
##   <fct>                      <dbl>          <dbl>
## 1 Sin Instrucción              3.6            5.1
## 2 Primaria                    23.4           37.2
## 3 Secundaria                  41.6           41.1
## 4 Superior                    31.4           16.5

Calculamos el promedio de ingresos mensuales y horarios para cada combinación de Sexo y NIVELEDUCATIVO.

tabla5.2 <- base_individual %>% 
  filter(ESTADO == 1, 
         PP3E_TOT > 0,
         PP3E_TOT != 999,
         !is.na(NIVEL_EDUCATIVO)) %>% 
  group_by(Sexo, NIVEL_EDUCATIVO) %>% 
  summarise(IOP_hr = round(weighted.mean(P21/(PP3E_TOT * 30 / 7), PONDIIO), 2),
            IOP_mensual  = round(weighted.mean(P21, PONDIIO), 2)) %>% 
  arrange(NIVEL_EDUCATIVO, Sexo)

8.5.3 Brecha de ingresos mensuales y horarios por nivel educativo

Presentamos los ingresos promedios y la brecha correspondientes a los ingresos mensuales.

tabla5.2.1 <- tabla5.2 %>% 
  select(-IOP_hr) %>% 
  spread(., Sexo, IOP_mensual) %>% 
  mutate(brecha = paste0(round((Varones-Mujeres)/Varones*100, 1), "%"))

tabla5.2.1
## # A tibble: 4 x 4
##   NIVEL_EDUCATIVO Mujeres Varones brecha
##   <fct>             <dbl>   <dbl> <chr> 
## 1 Sin Instrucción   5030.   8640. 41.8% 
## 2 Primaria          5853.   9969. 41.3% 
## 3 Secundaria        9025.  13505  33.2% 
## 4 Superior         15369.  21135. 27.3%

Presentamos los datos de montos y brecha correspondientes al ingreso por horas de las/os ocupadas/os, de acuerdo a su sexo y nivel educativo.

tabla5.2.2 <- tabla5.2 %>% 
  select(-IOP_mensual) %>% 
  spread(., Sexo, IOP_hr) %>% 
  mutate(brecha = paste0(round((Varones-Mujeres)/Varones*100, 1), "%"))

tabla5.2.2
## # A tibble: 4 x 4
##   NIVEL_EDUCATIVO Mujeres Varones brecha
##   <fct>             <dbl>   <dbl> <chr> 
## 1 Sin Instrucción    46.0    54.8 16.1% 
## 2 Primaria           54.6    58.9 7.2%  
## 3 Secundaria         68.9    79.3 13.1% 
## 4 Superior          118.    134.  12%

8.6 Horas semanales trabajadas

Finalmente, podemos indagar sobre los determinantes de la diferencia entre las brechas de ingresos mensuales y las brechas de ingresos horarios. Para eso, podemos ver la diferencia entre las horas que ofrecen los varones y las mujeres semanalmente en el mercado de trabajo.

horas <- base_individual %>% 
  filter(ESTADO == 1, 
         PP3E_TOT > 0,
         PP3E_TOT != 999) %>% 
  group_by(Sexo) %>% 
  summarise("Horas semanales trabajadas" = 
              round(weighted.mean(PP3E_TOT, PONDIIO), 2))

horas
## # A tibble: 2 x 2
##   Sexo    `Horas semanales trabajadas`
##   <chr>                          <dbl>
## 1 Mujeres                         32.6
## 2 Varones                         42.1