Modelización de datos con EPH.

El objetivo de este trabajo es lograr presentar dos modelos que puedan predecir una variable objetivo propuesta desde la diplomatura. El dataset con el que se trabajó esta compuesto por un subconjuto de datos de la EPH correspondientes al segundo cuatrimestre 2020. La variable dependiente o objetivo es P21: Ingreso de la ocupación principal. En busca de cumplir el objetivo previamente planteando se dividió el trabajo en dos secciones. En la primera parte realizaremos un anÔlisis exploratorio de las variables incluidas en el dataste. En la segunda sección presentaremos los modelos, compararemos los resultados y justificaremos la elección de uno de ellos.

1 - Wrangeling y exploración del datase

library(tidyverse)
library(caret)
library(ggplot2)
library(ggthemes)
library(GGally)
library(ggridges)

options(scipen=999)
Base<-read.csv("01_2020_II_eph_ocupados.csv")

Base<- Base %>% 
  mutate(NIVEL_ED = case_when( NIVEL_ED == "Primaria completa"~ "Primaria comp.",
                               NIVEL_ED == "Primaria incompleta (incluye educacion especial)"~"Primaria incom",
                               NIVEL_ED == "Secundaria completa" ~ "Secundaria comp.",
                               NIVEL_ED == "Secundaria incompleta" ~ "Secundaria incom",
                               NIVEL_ED == "Superior universitaria completa" ~"Sup. universitaria comp.",
                               NIVEL_ED == "Superior universitaria incompleta"~  "Sup. universitaria incom.",
                               NIVEL_ED == "Sin instruccion" ~ "Sin instruccion")) %>% 
  mutate( NIVEL_ED = fct_relevel(NIVEL_ED, c("Sin instruccion","Primaria incom","Primaria comp.","Secundaria incom","Secundaria comp.", "Sup. universitaria incom.","Sup. universitaria comp."))) %>%
  mutate( CH03 = fct_relevel(CH03, c("Jefe/a","Conyuge / Pareja",   "Hijo/a Hijastro/a",    "Yerno/Nuera",  "Nietro/a", "Madre/Padre","Suegro/a","Hermano/a","Otros Familiares", "No familiares"))) %>%
  mutate(CH07  = str_replace(CH07, "[?]","")) %>% 
  mutate(PP04A  = str_replace(PP04A, "...","")) %>% 
  mutate(CATEGORIA = str_replace_all(CATEGORIA, "ó", "ó")) %>% 
  mutate(CATEGORIA = str_replace_all(CATEGORIA, "é", "é")) %>% 
  mutate(CALIFICACION = str_replace_all(CALIFICACION, "é", "é")) %>% 
  mutate( P21 = str_replace_all(P21, "-9", "0" )) %>% 
  mutate( P21 = as.integer(P21))

La variable objetivo propuesta es el Ingreso de la ocupación principal. SegĆŗn esto corresponde a ingresos laborales provenientes de la ocupación principal( dando cuenta que pueda haber otras ocupaciones del tipo secundaria) hubieren generado ingresos en el mes de referencia. Esto por tanto excluye a todo ingreso no-laboral tal como jubilaciones/pensiones, rentas de la propiedad derivadas de la producción, rentas de la propiedad derivadas de inversiones financieras y transferencias. Esta variable es cuantitativa del tipo continuo. El mĆ”ximo registro de nuestra variable objetivo es de 545.000 pesos y su mĆ­nimo es 0. La media de la distribución es 23.759, la mediana 00.000 y la desviación estĆ”ndar es 24.436. Este anĆ”lisis explotarlo de la distribución variable dependiente puede verse en el grĆ”fico 0 y nos permite concluir que: a- Muchos valores se encuentran localizados sobre la cola izquierda de la distribución, sobre todo sobre la categorĆ­a ā€œ0 ingresosā€ que concentran el 16% de los casos. Desde la media a la izquierda todos los valores se encuentran a un desvió estĆ”ndar. b- A su vez, sobre la cola derecha de la distribución los valores mĆ”ximos se encuentran mĆ”s dispersos. A 1 desvió estĆ”ndar se encuentran el 88% de los casos y a 2 el 96%. el 4% restante

Histograma_p21<-  ggplot(Base, aes( x = P21))+
  geom_histogram(fill= "#393B45")+
  geom_vline(aes(xintercept = mean(P21), colour = "Media"),linetype= "dashed", size = 0.9)+
  geom_vline(aes(xintercept = median(P21), colour = "Mediana"),linetype= "dashed", size = 0.9)+
  scale_color_manual(values =  c("Media" = "#F3B54A", "Mediana" = "#6E7889"))+
  theme_few()+
  labs( x = "Ingreso de la ocupación principal", y = " ", title = 0 )+
  theme(legend.title = element_blank())
Histograma_p21

summary(Base$P21)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       0    6000   20000   23759   35000  545000
quantile(Base$P21, prob=seq(0, 1, length = 101))
##     0%     1%     2%     3%     4%     5%     6%     7%     8%     9%    10% 
##      0      0      0      0      0      0      0      0      0      0      0 
##    11%    12%    13%    14%    15%    16%    17%    18%    19%    20%    21% 
##      0      0      0      0      0      0    600   2000   3000   3600   4000 
##    22%    23%    24%    25%    26%    27%    28%    29%    30%    31%    32% 
##   5000   5000   6000   6000   7000   8000   8000   8500   9000  10000  10000 
##    33%    34%    35%    36%    37%    38%    39%    40%    41%    42%    43% 
##  10000  10700  12000  12000  12800  13500  14956  15000  15000  15000  15000 
##    44%    45%    46%    47%    48%    49%    50%    51%    52%    53%    54% 
##  16000  17000  18000  18000  19000  20000  20000  20000  20000  20000  21600 
##    55%    56%    57%    58%    59%    60%    61%    62%    63%    64%    65% 
##  22410  23000  25000  25000  25000  25000  25000  26000  27000  28000  28000 
##    66%    67%    68%    69%    70%    71%    72%    73%    74%    75%    76% 
##  30000  30000  30000  30000  30000  30000  31000  32000  35000  35000  35000 
##    77%    78%    79%    80%    81%    82%    83%    84%    85%    86%    87% 
##  35000  36000  38000  39000  40000  40000  40000  40000  42000  45000  45000 
##    88%    89%    90%    91%    92%    93%    94%    95%    96%    97%    98% 
##  46000  50000  50000  50000  52000  58000  60000  60000  70000  75000  85000 
##    99%   100% 
## 100000 545000
var(Base$P21)
## [1] 597164562
sd(Base$P21)
## [1] 24436.95

Las variables predictoras o independientes para este parcial son 11, 9 categorías y solo 2 cuantitativas. A continuación se elaboraron 6 grÔficos que muestran la relación entre ellas en busca y la variable que se prentende explicar. Dado los casos extremos existente en la variable P21, se dejaron afuera los registros mayores a 100.000 pesos en busca de mejorar la visualización de la información.

a<-Base %>%
  filter(P21 <= 100000) %>% 
  ggplot(aes( x = NIVEL_ED, y = P21, fill= NIVEL_ED))+
  geom_boxplot()+
  scale_x_discrete(guide = guide_axis(n.dodge=2))+
  scale_fill_manual(values=c("#6ec6ca", #1 
                             "#217CA3", #2
                             '#5A4E4D', #3
                             '#E69F00', #4
                             "#D46c4e", #5
                             "#f9ad6a", #6
                             "#DDD8c4", #7
                             "#a3c9a8", #8
                             "#69a297", #9
                             "#50808e"  #10
                             ))+
  theme_few()+
  labs( x = " ",y= "P21: Ingreso de la ocupación principal", title = 1)+
  theme(legend.position = "none")
a

b<- Base %>%  filter(P21 <= 100000) %>% 
  ggplot ()+
  geom_density_ridges(aes(x= P21, y =  CH03, fill= CH03)) +
  theme_ridges() +
  scale_fill_manual(values=c("#6ec6ca", #1
                             "#217CA3", #2
                             '#5A4E4D', #3
                             '#E69F00', #4
                             "#D46c4e", #5
                             "#f9ad6a", #6
                             "#DDD8c4", #7
                             "#a3c9a8", #8
                             "#69a297", #9
                             "#50808e"  #10
                             ))+
  labs( x ="P21: Ingreso de la ocupación principal", y= "", title = 2)+
  theme(legend.position = "none")
b

c<- Base %>%  filter(P21 <= 100000) %>%
  ggplot(aes(y= P21, x= CH04, fill = CH04))+
  geom_violin(width=1.4)+
  geom_boxplot(width=0.6, color="black", alpha = 0.1)+
  theme_few()+
 scale_fill_manual(values=c( '#5A4E4D', #3
                             '#E69F00', #4
                             "#D46c4e", #5
                             "#f9ad6a", #6
                             "#DDD8c4", #7
                             "#a3c9a8", #8
                             "#69a297", #9
                             "#50808e"  #10
                             ))+
  labs( x ="", y= "P21: Ingreso de la ocupación principal", title = 3)+
  theme(legend.position = "none")
c

d<-Base %>%  filter(P21 <= 100000) %>%
  ggplot(aes(y= P21, x= CH06, color = CH07))+
  geom_point()+
  geom_smooth(method=lm, color = "black" )+
  theme_few()+
  scale_color_manual(values=c('#5A4E4D', #3
                             '#E69F00', #4
                             "#D46c4e", #5
                             "#f9ad6a", #6
                             "#DDD8c4", #7
                             "#a3c9a8", #8
                             "#69a297", #9
                             "#50808e"  #10
                             ))+
  labs( x = "Edad" , y= "P21: Ingreso de la ocupación principal" ,title = 4)+
  theme(legend.position = "bottom", legend.title = element_blank())
d

e<- Base %>% filter( P21 <= 100000,  CAT_OCUP != "Trabajador familiar sin remuneracion") %>% 
  ggplot(aes(y = P21, x = CAT_OCUP, fill= CALIFICACION))+
  geom_bar(position = "dodge",
           stat = "summary",
           fun = "mean")+
  theme_few()+
  scale_fill_manual(values=c('#5A4E4D', #3
                             '#E69F00', #4
                             "#D46c4e", #5
                             "#f9ad6a", #6
                             "#DDD8c4", #7
                             "#a3c9a8", #8
                             "#69a297", #9
                             "#50808e"  #10
                             ))+
  labs( x ="", y= "P21: Ingreso de la ocupación principal" ,title = 5)+
  theme(legend.position = "bottom", legend.title = element_blank())
e

f<- Base %>%  filter(P21 <= 100000, PP3E_TOT <= 100) %>%
  ggplot(aes(y= P21, x=PP3E_TOT, color = PP04A))+
  geom_point()+
  geom_smooth(method=lm )+
  theme_few()+
  scale_color_manual(values=c("#6ec6ca", #1
                             "#217CA3", #2
                             '#5A4E4D', #3
                             '#E69F00', #4
                             "#D46c4e", #5
                             "#f9ad6a", #6
                             "#DDD8c4", #7
                             "#a3c9a8", #8
                             "#69a297", #9
                             "#50808e"  #10
                             ))+
  labs( x ="Horas trabajadas", y= "P21: Ingreso de la ocupación principal", title = 6)+
  theme(legend.position = "bottom", legend.title = element_blank())
f

### 2 - Modelización de datos