Capítulo 7 Pool de Datos en Panel y Matrices de Transición

Reiniciar R

7.1 Datos De Panel

7.1.1 Introducción

En esta clase veremos como construir un pool de datos de panel utilizando múltiples bases de la EPH. El ejercicio consiste en analizar las transiciones individuales entre las distintas categorías y estados ocupacionales. Trabajaremos con un caso sencillo, sin reclasificar a la población en más que las categorías definidas por la EPH. A su vez, para maximizar la cantidad de casos del ejercicio utilizando las bases recientemente publicadas, trabajaremos con transiciones entre trimestres (Aunque en la práctica suelen realizarse paneles anuales para observar más movilidad)

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

library(tidyverse, warn = FALSE)

Levantamos las Bases Individuales de 4 trimestres.

individual.216 <- read.table("Fuentes/usu_individual_t216.txt", sep=";", dec=",", header = TRUE, fill = TRUE)
individual.316 <- read.table("Fuentes/usu_individual_t316.txt", sep=";", dec=",", header = TRUE, fill = TRUE)
individual.416 <- read.table("Fuentes/usu_individual_t416.txt", sep=";", dec=",", header = TRUE, fill = TRUE)
individual.117 <- read.table("Fuentes/usu_individual_t117.txt", sep=";", dec=",", header = TRUE, fill = TRUE)

7.1.2 Pasos para la construccion del Panel

  1. Creamos un Vector que contenga unicamente las variables de interés, para recortar luego la base con la funcion select.
  2. Unimos todas las bases con la función bind_rows, seleccionando solo las variables del vector.
  3. Filtramos de la base los casos de no respuesta y acotaremos en este ejercicio el analisis a la población entre 18 y 65 años.
  4. Creamos las categorías de análisis que deseamos observar en distintos perídos.
  5. Armamos un identificador ordinal para los registros de cada trimestre.
  6. Replicamos el dataframe construido y le cambiamos los nombres a todas las variables, a excepción de las que usaremos para identificar a un mismo individuo ( CODUSU, NRO_HOGAR, COMPONENTE).
  7. En la base replicada, modificamos el identificador ordinal en función de la amplitud que deseamos en las observaciones de panel. En nuestro caso como uniremos registros con distancia de 1 trimestre, le restamos 1 a cada valor
  8. Unimos ambas bases con la funcion inner_join que solo nos dejará registros que en ambas bases contengan los mismos CODUSU, NRO_HOGAR, COMPONENTE e identificador ordinal.
  9. Creamos la columna para las consistencias, y luego filtramos la base para eliminar los registros inconsistentes
#Paso 1
var.ind <- c('CODUSU','NRO_HOGAR','COMPONENTE', 'ANO4','TRIMESTRE','ESTADO','CAT_OCUP','PONDERA', 'CH04', 'CH06','P21','PP3E_TOT')

#Paso 2  
Bases_Continua <- bind_rows(
  individual.216  %>% select(var.ind),
  individual.316  %>% select(var.ind),
  individual.416  %>% select(var.ind),
  individual.117  %>% select(var.ind))
#Pasos 3  y 4
Bases_Continua <-  Bases_Continua %>% 
      filter(CH06 %in% c(18:65),ESTADO !=0) %>% 
      mutate(Categoria = case_when(ESTADO %in%  c(3,4)~"Inactivos",
                                   ESTADO   ==  2 ~"Desocupados",
                                   ESTADO   ==  1 & CAT_OCUP == 1 ~"Patrones",
                                   ESTADO   ==  1 & CAT_OCUP == 2 ~"Cuenta Propistas",
                                   ESTADO   ==  1 & CAT_OCUP == 3 ~"Asalariados",
                                   ESTADO   ==  1 & CAT_OCUP == 4 ~"Trabajador familiar s/r",
                              TRUE ~ "Otros"))
#Paso  5
Bases_Continua <- Bases_Continua %>% 
    mutate(Trimestre = paste(ANO4, TRIMESTRE, sep="_")) %>% 
    arrange(Trimestre) %>% 
    mutate(Id_Trimestre = match(Trimestre,unique(Trimestre)))

#Paso 6
Bases_Continua_Replica <- Bases_Continua

names(Bases_Continua_Replica)
##  [1] "CODUSU"       "NRO_HOGAR"    "COMPONENTE"   "ANO4"        
##  [5] "TRIMESTRE"    "ESTADO"       "CAT_OCUP"     "PONDERA"     
##  [9] "CH04"         "CH06"         "P21"          "PP3E_TOT"    
## [13] "Categoria"    "Trimestre"    "Id_Trimestre"
names(Bases_Continua_Replica)[4:(length(Bases_Continua_Replica)-1)] <- 
  paste0(names(Bases_Continua_Replica)[4:(length(Bases_Continua_Replica)-1)],"_t1")

names(Bases_Continua_Replica)
##  [1] "CODUSU"       "NRO_HOGAR"    "COMPONENTE"   "ANO4_t1"     
##  [5] "TRIMESTRE_t1" "ESTADO_t1"    "CAT_OCUP_t1"  "PONDERA_t1"  
##  [9] "CH04_t1"      "CH06_t1"      "P21_t1"       "PP3E_TOT_t1" 
## [13] "Categoria_t1" "Trimestre_t1" "Id_Trimestre"
#Paso 7
Bases_Continua_Replica$Id_Trimestre <- Bases_Continua_Replica$Id_Trimestre - 1
#Pasos 8 y 9
Panel_Continua <- inner_join(Bases_Continua,Bases_Continua_Replica)
Panel_Continua <- Panel_Continua %>% 
    mutate(Consistencia = case_when(abs(CH06_t1-CH06) > 2 |
                                    CH04 != CH04_t1 ~ "inconsistente",
                                    TRUE ~ "consistente")) %>% 
    filter(Consistencia == "consistente")

7.2 Matrices de transición

7.2.1 Calculo de probabilidades de transición.

Realizaremos un breve ejercicio para identificar la magnitud relativa de las transiciones entre las distintas categorías ocupacionales. Para ello calculamos la suma ponderada de la cantidad de casos observados para cada posible combinación de Cateogria y Categoria_t1. Luego calcularemos la probabilidad de encontrarse en categoría en t1, condicional a haber pertenecido a las distintas categorías en t0.

Categorias_transiciones <- Panel_Continua %>% 
  #filter(Categoria != Categoria_t1) %>% 
  group_by(Categoria,Categoria_t1) %>% 
  summarise(frec_muestral = n(),
            frecuencia = sum((PONDERA+PONDERA_t1)/2)) %>% 
  ungroup() %>% 
  group_by(Categoria) %>% 
  mutate(Prob_salida = frecuencia/sum(frecuencia))

Categorias_transiciones[1:10,]
## # A tibble: 10 x 5
## # Groups:   Categoria [2]
##    Categoria       Categoria_t1        frec_muestral frecuencia Prob_salida
##    <chr>           <chr>                       <int>      <dbl>       <dbl>
##  1 Asalariados     Asalariados                 18227   8215874.    0.869   
##  2 Asalariados     Cuenta Propistas              778    374916.    0.0397  
##  3 Asalariados     Desocupados                   503    297061     0.0314  
##  4 Asalariados     Inactivos                    1250    507510     0.0537  
##  5 Asalariados     Patrones                      115     54242     0.00574 
##  6 Asalariados     Trabajador familia…            14      4002.    0.000423
##  7 Cuenta Propist… Asalariados                   758    398875     0.154   
##  8 Cuenta Propist… Cuenta Propistas             3627   1663297     0.643   
##  9 Cuenta Propist… Desocupados                   210    133810.    0.0517  
## 10 Cuenta Propist… Inactivos                     569    250491     0.0969

Notese que la linea comentada en el medio de la cadena de pipes, nos permitiría iterar rapidamente sobre el procedimiento anterior agregando un filtro. En este ejemplo, podríamos recalcular las proporciones únicamente para aquellas personas que presentan un movimiento de categoría

7.2.2 Gráfico de Matriz de Transición

library(ggthemes)
ggplot(Categorias_transiciones, aes(x = Categoria_t1, 
                                    y = Categoria, fill = Prob_salida,
                                    label =round(Prob_salida*100,2))) +
  labs(title = "Probabilidades de Transicion de hacia las distintas Categorías")+
  geom_tile()+
  geom_text()+
  scale_fill_gradient(low = "grey100", high = "grey30")+
  theme_tufte()

7.3 Ejercicios Para prácticar

  • Levantar todas las bases individuales de EPH que se encuentran en la carpeta Fuentes
  • Crear un vector llamado Variables que contenga los nombres de las siguientes variables de interés: - ANO4,TRIMESTRE,CODUSU,NRO_HOGAR,COMPONENTE,ESTADO,CH04,PONDERA
  • Acotar la Base únicamente a las variables de interés, utilizando el vector Variables

  • Replicar los procedimientos vistos en clase para el armado del panel de observaciones inter-trimestrales y luego calcular: - ¿Cuántos casos (muestrales y ponderados) tenemos en nuestro pool de datos en panel? - ¿Cuántos casos muestrales tenemos por cada trimestre en nuestro pool de datos? ¿Qué porcentaje de los registros totales de un trimestre representa? - ¿Cuántos casos son inconsistentes controlando por sexo en cada trimestre? Calcularlo en términos absolutos y porcentuales