Las notas del presente curso fueron elaboradas originalmente por Diego Kozlowski y Guido Weksler. En las sucesivas modificaciones colaboraron: Natsumi Shokida y Matías Lioni
Reiniciar R
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 publicados.
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)
#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" "TRIMESTRE"
[6] "ESTADO" "CAT_OCUP" "PONDERA" "CH04" "CH06"
[11] "P21" "PP3E_TOT" "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" "TRIMESTRE_t1"
[6] "ESTADO_t1" "CAT_OCUP_t1" "PONDERA_t1" "CH04_t1" "CH06_t1"
[11] "P21_t1" "PP3E_TOT_t1" "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")
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.
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
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()