Consignas

Ejercicio Práctico N° 2

A partir de la última base de microdatos disponible de la Encuesta Permanente de Hogares (EPH) calcular para Total 31 Aglomerados Urbanos las siguientes tasas desagregadas del mercado laboral: 1. Tasa de Actividad para: a) Hombres entre 25 y 65 años. b) Mujeres entre 25 y 65 años. c) Hombres entre 16 y 24 años. d) Hombres/Mujeres de más de 65 años.

  1. Tasa de Desempleo para:
  1. Hombres entre 18 y 30 años.
  2. Mujeres entre 25 y 40 años.
  1. Intervalos de Confianza De los anteriores resultados seleccione 3 tasas/indicadores y construya los intervalos de confianza (limites inferior y superior) de las respectivas estimaciones.

Código del ejercicio

Ej.: \(CV(TasaDeDesempleo) = \sqrt{CV(PEA)^2+CV(desempleados)^2}\) \(DS(TasaDeDesempleo) = TasaDeDesempleo * CV(TasaDeDesempleo)/100\) \(LimInf(TasaDeDesempleo) = TasaDeDesempleo-DS(TasaDeDesempleo)*1.64\)

Hacer click en el botón para ver el código con comentarios

library(eph)
library(tidyverse)

# cargo la tabla con los errores muestrales de la EPH
error201403TotalAglom <- read_csv(file = "~/Descargas/EPH/error201403TotalAglom.csv")

# construyo una función para facilitar la seleccion del DS o CV de la tabla de errores muestrales
# la funcion selecciona el elemento del vector "resultado" que cumpla la condicion de que
# la distancia entre el valor de referencia y el valor estimado es la mínima para el conjunto de elementos

closest <- function(valor, referencia, resultado = referencia) {
    resultado[which.min(abs(referencia-valor))]
}

#TP 2 CALCULO DE TASAS

#cargo la ultima eph individual disponible
eph202001 <- get_microdata(year = 2020, trimester = 1, type = "individual",
                           vars = c("CH04", "CH06", "ESTADO", "PONDERA"))

#etiqueto las variables
eph202001 <- organize_labels(eph202001)

# calculo de valores para varones y mujeres de 25 a 65 años
grupo25a65 <- eph202001 %>% 
    #filtro por edad y selecciono solo grupo etario deseado
    filter(CH06 >= 25 & CH06<= 65) %>% 
    #divido por genero para calcular por separado cada grupo
    group_by(genero = as_factor(CH04)) %>% 
    #summarise envuelve los calculos deseados
    summarise(edad = "25 a 65", #creo una columna edad para tener a mano la referencia,
              PEA = sum(PONDERA[ESTADO == 1 | ESTADO == 2]), #calculo PEA bruto como suma de la ponderacion de casos que
              # cumplan ESTADO == ocupado ó ESTADO == desocupado
              totalPoblacion = sum(PONDERA), #procedimiento analogo para el total
              tasaActividad = round(PEA/totalPoblacion*100,2), #calculo la tasa y redondeo a 2 digitos
              CVppPEA = closest(PEA,
                                error201403TotalAglom$estimacion,
                                error201403TotalAglom$CVpp), #acá use la función definida arriba para alla el CV
              # la funcion devuelve el CV que corresponde al valor de referencia más cercano a la estimación realizada
              CVpptotal = closest(totalPoblacion,
                                  error201403TotalAglom$estimacion,
                                  error201403TotalAglom$CVpp), #idem anterior
              CVtasaActividad = round(sqrt((CVppPEA)^2+(CVpptotal)^2),2), #calculo el CV de la tasa como la
              # raiz cuadrada de a suma de los cuadrados de los coeficientes de variacion de las estimaciones que componen la tasa
              # según el manual de error de la EPH.
              DStasaActividad = round(tasaActividad*CVtasaActividad/100,2) 
              #calculo la DS de la tasa como el producto entre la tasa de actividad y su CV, redondeo a 2 digits
              )

#para el resto de los casos se repite el procedimiento
varon16a24 <- eph202001 %>% 
    filter(CH04 == 01,CH06 >= 16 & CH06<= 24) %>% 
    summarise(genero = "Varon",
        edad = "16 a 24",
              PEA = sum(PONDERA[ESTADO == 1 | ESTADO == 2]),
              totalPoblacion = sum(PONDERA),
              tasaActividad = round(PEA/totalPoblacion*100,2),
              CVppPEA = closest(PEA,
                                error201403TotalAglom$estimacion,
                                error201403TotalAglom$CVpp),
              CVpptotal = closest(totalPoblacion,
                                  error201403TotalAglom$estimacion,
                                  error201403TotalAglom$CVpp),
              CVtasaActividad = round(sqrt((CVppPEA)^2+(CVpptotal)^2),2),
              DStasaActividad = round(tasaActividad*CVtasaActividad/100,2)) 

grupo66ymas <- eph202001 %>% 
    filter(CH06 >= 66) %>% 
    summarise(genero = "Varon + Mujer" ,
              edad = "66 y más",
              PEA = sum(PONDERA[ESTADO == 1 | ESTADO == 2]),
              totalPoblacion = sum(PONDERA),
              tasaActividad = round(PEA/totalPoblacion*100,2),
              CVppPEA = closest(PEA,
                                error201403TotalAglom$estimacion,
                                error201403TotalAglom$CVpp),
              CVpptotal = closest(totalPoblacion,
                                  error201403TotalAglom$estimacion,
                                  error201403TotalAglom$CVpp),
              CVtasaActividad = round(sqrt((CVppPEA)^2+(CVpptotal)^2),2),
              DStasaActividad = round(tasaActividad*CVtasaActividad/100,2)) 

#esta tabla y la siguiente es para desempleo
varon18a30 <- eph202001 %>% 
    filter(CH06 >= 18 & CH06<=30, CH04 == 01) %>% 
    summarise(genero = "Varon",
              edad = "18 a 30",
              desempleo = sum(PONDERA[ESTADO == 2]),
              PEA = sum(PONDERA[ESTADO == 1 | ESTADO == 2]),
              tasaDesempleo = round(desempleo/PEA*100,2),
              CVppdesempleo = closest(desempleo,
                                  error201403TotalAglom$estimacion,
                                  error201403TotalAglom$CVpp),
              CVppPEA = closest(PEA,
                                error201403TotalAglom$estimacion,
                                error201403TotalAglom$CVpp),
              CVtasaDesempleo = round(sqrt((CVppPEA)^2+(CVppdesempleo)^2),2),
              DStasaDesempleo = round(tasaDesempleo*CVtasaDesempleo/100,2)) 

mujer25a40 <- eph202001 %>% 
    filter(CH06 >= 25 & CH06<=40, CH04 == 02) %>% 
    summarise(genero ="Mujer", edad = "25 a 40",
              desempleo = sum(PONDERA[ESTADO == 2]),
              PEA = sum(PONDERA[ESTADO == 1 | ESTADO == 2]),
              tasaDesempleo = round(desempleo/PEA*100,2),
              CVppdesempleo = closest(desempleo,
                                      error201403TotalAglom$estimacion,
                                      error201403TotalAglom$CVpp),
              CVppPEA = closest(PEA,
                                error201403TotalAglom$estimacion,
                                error201403TotalAglom$CVpp),
              CVtasaDesempleo = round(sqrt((CVppPEA)^2+(CVppdesempleo)^2),2),
              DStasaDesempleo = round(tasaDesempleo*CVtasaDesempleo/100,2)) 

#reuno en una sola tabla todo lo calculado para actividad
tablaResumenActividad <- bind_rows(grupo25a65, varon16a24, grupo66ymas)

#a partir de esa tabla calculo los limites inferio y superior para un 90% de confianza
tablaConfianzaActividad <- tablaResumenActividad %>% 
    select(genero, edad, DStasaActividad,tasaActividad) %>% 
    mutate(
        LiTasaActividad = round(tasaActividad - DStasaActividad*1.64,2),
        LsTasaActividad = round(tasaActividad + DStasaActividad*1.64,2)
    )

#hago lo mismo para desempleo
tablaResumenDesempleo <-  bind_rows(varon18a30, mujer25a40)
tablaConfianzaDesempleo <- tablaResumenDesempleo %>% 
    select(genero, edad, DStasaDesempleo,tasaDesempleo) %>% 
    mutate(
        LiTasaDesempleo = round(tasaDesempleo - DStasaDesempleo *1.64,2),
        LsTasaDesempleo = round(tasaDesempleo + DStasaDesempleo *1.64,2)
    )

Tablas del ejercicio

Tabla 1. PEA, Total Poblacion y Tasa de Actividad.

tablaResumenActividad %>% 
    knitr::kable(format = "html", format.args = list(big.mark = ",")) %>% 
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover", "responsive"))
genero edad PEA totalPoblacion tasaActividad CVppPEA CVpptotal CVtasaActividad DStasaActividad
Varon 25 a 65 6,093,076 6,829,463 89.22 1.5 1.5 2.12 1.89
Mujer 25 a 65 4,981,276 7,486,139 66.54 1.5 1.5 2.12 1.41
Varon 16 a 24 1,014,206 2,099,233 48.31 3.4 1.9 3.89 1.88
Varon + Mujer 66 y más 540,541 3,498,623 15.45 5.3 1.5 5.51 0.85

Tabla 2. Tasa de Actividad con IC de 90%.

tablaConfianzaActividad %>% 
    knitr::kable(format = "html", format.args = list(big.mark = ",")) %>% 
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover", "responsive"))
genero edad DStasaActividad tasaActividad LiTasaActividad LsTasaActividad
Varon 25 a 65 1.89 89.22 86.12 92.32
Mujer 25 a 65 1.41 66.54 64.23 68.85
Varon 16 a 24 1.88 48.31 45.23 51.39
Varon + Mujer 66 y más 0.85 15.45 14.06 16.84

Tabla 3. Desempleo, PEA y Tasa de Desempleo.

tablaResumenDesempleo %>% 
    knitr::kable(format = "html", format.args = list(big.mark = ",")) %>% 
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover", "responsive"))
genero edad desempleo PEA tasaDesempleo CVppdesempleo CVppPEA CVtasaDesempleo DStasaDesempleo
Varon 18 a 30 371,223 2,135,098 17.39 7.5 1.9 7.74 1.35
Mujer 25 a 40 250,651 2,285,768 10.97 9.8 1.8 9.96 1.09

Tabla 4. Tasa de Desempleo con IC de 90%.

tablaConfianzaDesempleo %>% 
    knitr::kable(format = "html", format.args = list(big.mark = ",")) %>% 
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover", "responsive"))
genero edad DStasaDesempleo tasaDesempleo LiTasaDesempleo LsTasaDesempleo
Varon 18 a 30 1.35 17.39 15.18 19.60
Mujer 25 a 40 1.09 10.97 9.18 12.76