Estudio de la brecha salarial de genero e impacto de los años de estudio en los salarios

En este análisis se procederá a obtener la base de datos de la encuesta nacional de empleo y subempleo del Ecuador la cual se puede acceder haciendo clic en este enlace https://www.ecuadorencifras.gob.ec/enemdu-2016/ . El motivo de esta investigación es relevante para saber cual es la brecha salarial de genero en el Ecuador para el año 2016, así mismo entender cual es el impacto de la educación en el salario. El primer paso es depurar la base de datos, quitar valores como \(INF\) o \(NaN\) y \(Na\). Ademas de cambiar los valores de la rama de actividad empresarial de la Enemdu con su respectivo código CIIU, cambiar a factores variables como sexo y rama de actividad económica (\(rama1\)).

En total existen 33 variables con las cuales se va a trabajar y se usaran dichas variables para poder hacer gráficos que hagan mas comprensible el comportamiento de las variables. Después se desarrolla un modelo de regresión lineal (ecuación de Mincer) que no es otra cosa que una ecuación que explica el salario edad otras variables \(x_i\). Como existe un problema de selección maestral, se utilizara el método de heckman, debido a que no siempre las muestras son aleatorias y por ende la base podría estar sesgada y eso se reflejaría en los resultados. Y por ultimo se desarrolla un modelo predictivo de discriminatorio lineal, pero dadas las pruebas de homogeneidad y normalidad multivariante se puede apreciar que el error de los cálculos son altos y no nos permiten discriminar entre el grupo \(sexo\).

# PROYECTO DE R -----------------------------------------------------------
library(haven)
library(tidyverse)
## Registered S3 methods overwritten by 'ggplot2':
##   method         from 
##   [.quosures     rlang
##   c.quosures     rlang
##   print.quosures rlang
## -- Attaching packages ---------------------------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 3.1.1     v purrr   0.3.2
## v tibble  2.1.1     v dplyr   0.8.1
## v tidyr   0.8.3     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.4.0
## -- Conflicts ------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
ENEMDU2016<- read_sav("D:/Escritorio/BASE DE DATOS ENEMDU/ENEMDU2016.sav")
colnames(ENEMDU2016)<-str_to_lower(colnames(ENEMDU2016))



## anadir ano al dataframe

# base 2016 rama 1
ENEMDU2016$rama1[which(ENEMDU2016$rama1==5)]=4
ENEMDU2016$rama1[which(ENEMDU2016$rama1==6)]=5
ENEMDU2016$rama1[which(ENEMDU2016$rama1==7)]=6
ENEMDU2016$rama1[which(ENEMDU2016$rama1==8)]=7
ENEMDU2016$rama1[which(ENEMDU2016$rama1==9)]=8
ENEMDU2016$rama1[which(ENEMDU2016$rama1==10)]=8
ENEMDU2016$rama1[which(ENEMDU2016$rama1==11)]=9
ENEMDU2016$rama1[which(ENEMDU2016$rama1==12)]=10
ENEMDU2016$rama1[which(ENEMDU2016$rama1==13)]=10
ENEMDU2016$rama1[which(ENEMDU2016$rama1==14)]=10
ENEMDU2016$rama1[which(ENEMDU2016$rama1==15)]=11
ENEMDU2016$rama1[which(ENEMDU2016$rama1==16)]=12
ENEMDU2016$rama1[which(ENEMDU2016$rama1==17)]=13
ENEMDU2016$rama1[which(ENEMDU2016$rama1==18)]=13
ENEMDU2016$rama1[which(ENEMDU2016$rama1==19)]=14
ENEMDU2016$rama1[which(ENEMDU2016$rama1==20)]=15
ENEMDU2016$rama1[which(ENEMDU2016$rama1==21)]=16


###########################Pregunta p10a y p10b 
ENEMDU2016$p10a[which(ENEMDU2016$p10a==10)]=18
ENEMDU2016$p10a[which(ENEMDU2016$p10a==9)]=13
ENEMDU2016$p10a[which(ENEMDU2016$p10a==8)]=13
ENEMDU2016$p10a[which(ENEMDU2016$p10a==7)]=10
ENEMDU2016$p10a[which(ENEMDU2016$p10a==6)]=7
ENEMDU2016$p10a[which(ENEMDU2016$p10a==5)]=0
ENEMDU2016$p10a[which(ENEMDU2016$p10a==1)]=0
ENEMDU2016$p10a[which(ENEMDU2016$p10a==2)]=0
ENEMDU2016$p10a[which(ENEMDU2016$p10a==4)]=1






###################p10b
ENEMDU2016$p10b[which(ENEMDU2016$p10a==99)] <- 0
ENEMDU2016$p10b[which(ENEMDU2016$p10b==99)] <- 0




####salario total


ENEMDU2016$p66[which(ENEMDU2016$p66==999999)] <- NA
ENEMDU2016$p67[which(ENEMDU2016$p67==999999)] <- NA
ENEMDU2016$p68b[which(ENEMDU2016$p68b==999999)] <- NA



ENEMDU2016$salario <- rowSums(ENEMDU2016[,c("p66", "p67","p68b")], na.rm=FALSE)

##IPC
ENEMDU2016$ipc<-1.0521

base <- data.frame(ENEMDU2016)
library(sjlabelled)
## 
## Attaching package: 'sjlabelled'
## The following object is masked from 'package:forcats':
## 
##     as_factor
## The following object is masked from 'package:dplyr':
## 
##     as_label
## The following objects are masked from 'package:haven':
## 
##     as_factor, read_sas, read_spss, read_stata, write_sas,
##     zap_labels
base <- remove_all_labels(base)

base <- base[,c("p02","p03","p04","p06","p07","p10a","p10b","p12b","p15","p24","p28","p40","p41","p42","p45"
                ,"p51a","p66","p67","p68b","ingrl","ipc","petn","salario","rama1")]

colnames(base)[colnames(base)=="ingrl"] <- "ingreso_laboral"
colnames(base)[colnames(base)=="p02"] <- "sexo"
colnames(base)[colnames(base)=="p03"] <- "edad"
colnames(base)[colnames(base)=="p04"] <- "relacion_de_parentezco"
colnames(base)[colnames(base)=="p06"]<- "casado"
colnames(base)[colnames(base)=="p07"] <- "asiste_a_clases"
colnames(base)[colnames(base)=="p10a"] <- "nivel_de_instruccion"
colnames(base)[colnames(base)=="p10b"] <- "nivel_de_instruccion2"
colnames(base)[colnames(base)=="p12b"] <- "titulo_universitario"
colnames(base)[colnames(base)=="p15"] <- "raza"
colnames(base)[colnames(base)=="p24"] <- "horas_semanales"
colnames(base)[colnames(base)=="p28"] <- "disponibilidad_laboral_adiciona"
colnames(base)[colnames(base)=="p40"] <- "rama_de_actividad"
colnames(base)[colnames(base)=="p41"] <- "grupo_de_ocupacion"
colnames(base)[colnames(base)=="p42"] <- "publico"
colnames(base)[colnames(base)=="p45"] <- "años_de_experiencia"
colnames(base)[colnames(base)=="p51a"] <- "horas_de_trabajo_principal"
colnames(base)[colnames(base)=="p66"] <- "ingreso_de_asalariados"



base$mujer <- ifelse(base$sexo==2,1,0)

base$ingreso_laboral[which(base$ingreso_laboral==999999)]=NA
base$ingreso_laboral[which(base$ingreso_laboral==-1)]=NA

base$salario[which(base$salario==999999)]=NA
base$salario[which(base$salario==-1)]=NA
base$salario[which(base$salario==199998)]=NA


base$salario[which(base$salario==2999997)]=NA
base$salario[which(base$salario==1999998)]=NA

# eliminar valores absurdos -----------------------------------------------------------------------
##################variable anos###############
base$años_educ=base$nivel_de_instruccion+base$nivel_de_instruccion2



base$ingreso_de_asalariados[which(base$ingreso_de_asalariados==999999)]=NA


base$años_de_experiencia[which(base$años_de_experiencia==99)]=NA


base$raza[which(base$raza==2)]=3
base$raza[which(base$raza==8)]=NA
base$ingreso_laboral[which(base$ingreso_laboral==100000)]=NA


base$log_ingreso_asalariado <- log(base$ingreso_de_asalariados)

base$log_ingreso_asalariado[which(!is.finite(base$log_ingreso_asalariado))] <-NA 

base$salario_real <- base$ingreso_de_asalariados/(base$ipc/0.7340)

base$lsalario_real <- log(base$salario_real)

base$lsalario_real[which(!is.finite(base$lsalario_real))] <-NA 

base$log_ingreso_laboral <- log(base$ingreso_laboral)
base$log_ingreso_laboral[which(!is.finite(base$log_ingreso_laboral))] <- NA

####variable SALARIO
base$lsalario <- log(base$salario)


base$lsalario[which(!is.finite(base$lsalario))] <-NA 


# cambiar variables -------------------------------------------------------

base$años_de_experiencia<-base$años_de_experiencia*base$petn
base$mujer<-base$mujer*base$petn
base$edad<-base$edad*base$petn
base$horas_de_trabajo_principal<-base$horas_semanales*base$petn
base$casado<-base$casado*base$petn


base<-subset(base,!edad>65)
base$años_de_experiencia<-ifelse(base$años_de_experiencia>base$edad-15,
                                 NA,base$años_de_experiencia)
colnames(base)[colnames(base)=="grupo_De_ocupacion"] <- "publico"

base$publico<-ifelse(base$publico==1,1,0)

level <- c("primaria","secundaria","universidad","3er y 4to nivel")
base$niveleduc <- cut(base$años_educ, breaks = c(1,10,13,18,Inf), labels = paste(level))

base$raza <- as.character(base$raza)

base$raza[base$raza=="7"] <- "blanco"
base$raza[base$raza=="6"] <- "mestizo"
base$raza[base$raza=="5"] <- "montubio"
base$raza[base$raza=="4"] <- "mulato"
base$raza[base$raza=="3"] <- "negro"
base$raza[base$raza=="1"] <- "indigena"

base$inlf <- ifelse(is.na(base$lsalario),0,1)



base <- base %>% mutate(
  raza = parse_factor(raza, levels = c("mestizo","indigena",
                                       "montubio","blanco","mulato","negro"),include_na = FALSE))
base$mujer <- ifelse(base$mujer==1,"mujer","hombre")


base <- base %>% mutate(
  sexo = parse_factor(mujer, levels = c("hombre","mujer")))

base$rama1[which(base$rama1==1)]="Agricultura, ganaderia caza y silvicultura y pesca"
base$rama1[which(base$rama1==2)]="Explotación de minas y cantera"
base$rama1[which(base$rama1==3)]="Industrias manufactureras"
base$rama1[which(base$rama1==4)]="Suministros de electricidad, gas y distribución de agua, alcantarillado"
base$rama1[which(base$rama1==5)]="Construcción"
base$rama1[which(base$rama1==6)]="Comercio, reparaciones, vehiculos, y efectos, personales "
base$rama1[which(base$rama1==7)]="Actividades de alojamientos y servicio"
base$rama1[which(base$rama1==8)]="Intermediación financiera y de seguros"
base$rama1[which(base$rama1==9)]="Transporte, almacenam y comunicaciones"
base$rama1[which(base$rama1==10)]="Activ. Inmobiliarias, empresariales, adm"
base$rama1[which(base$rama1==11)]="Administ. Publica y defensa; seguridad"
base$rama1[which(base$rama1==12)]="Enseñanza"
base$rama1[which(base$rama1==13)]="Activ. Servicios sociales y de salud"
base$rama1[which(base$rama1==14)]="Otra activ. Comunit. Sociales y person"
base$rama1[which(base$rama1==15)]="Hogares privados con servicio domestico"
base$rama1[which(base$rama1==16)]="Actividades de organizaciones extraterritoriales"

base <- base %>% mutate(
  rama1= as.factor(rama1)
)


# cambiar la estructura de los datos --------------------------------------

Matriz de dispersión

Esta matriz nos permite observar si existe multicolinealidad entre las variables explicativas.

library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
## The following object is masked from 'package:purrr':
## 
##     some
scatterplotMatrix(base[1:10])
## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit negative part of the spread

## Warning in smoother(x[subs], y[subs], col = smoother.args$col[i], log.x =
## FALSE, : could not fit negative part of the spread

# Histograma del logaritmo del ingreso para el grupo sexo Se puede observar que a medida que aumenta porcentual-mente el salario la cima de la distribución salarial esta dominada por hombres, así mismo como en la cola derecha del gráfico.

##Histograma
ggplot(data = base, aes(x = log_ingreso_laboral,colour=mujer, fill=mujer))+
  geom_histogram( alpha=0.3, position="identity",bins = 60)+ggtitle("Distribución logarítmica del salario para hombres y mujeres")

Este gráfico explica que hay una correlación entre el incremento porcentual del salario para hombres y mujeres cuando se trabaja mas numero de horas.

###Grafico de dispersion horas laborales vs Logarirmo del salario real 

base %>%  ggplot(aes(horas_de_trabajo_principal,log_ingreso_laboral))+
  geom_point(alpha = 0.5, aes(color = mujer))+ geom_smooth(method = "lm", se = FALSE)+
  theme_bw()+ggtitle("Gráfico de dispersión horas laborales vs Logaritmo del salario real")

Para este gráfico se manipulo la base de datos para determinar si cada individuo cumple con los años requeridos de estudio para pertenecer a una categoría (nivel académico). En este caso si cumple de 1 a 10 años de estudio, dicho individuo entra en la categoría de \(primaria\). Si dicho individuo cumple de 10 a 13 años, ese individuo entra en la categoría de \(secundaria\), si el individuo cumple de 13 a 18 años de estudio, entra en la categoría de \(universidad\), así en adelante hasta estudiar hasta 3er y 4to nivel.

#### Grafico de barras por estudio
ggplot(base, aes(niveleduc, fill=niveleduc))+ geom_bar(colour="black")+theme_minimal()+
  ggtitle("Grafico de barras por nivel académico")+
  theme(plot.title = element_text(hjust = 0.5))

La mayoría de la población muestral pertenece a la clase mestizo e indígena.

#### Grafico de barras por raza
ggplot(base, aes(raza, fill=raza))+ geom_bar(colour='black')+theme_minimal()+
  ggtitle("Trafico de barras por raza")+
  theme(plot.title = element_text(hjust = 0.5))

# gráfico de caja y bigotes Este gráfico muestra la clasificación del ingreso de los 4 grupos por nivele de educación. Se puede apreciar a simple vista que no existe un salto muy grande del sueldo universitario comparado al sueldo de 3er y cuarto nivel. Cambien un factor a agregar son los datos atípicos que están presentes en todas las cajas de bigote, a pesar de no tener la misma preparación existen individuos que tienen salarios sumamente elevados en comparación con la mediana del nivel académico.

ggplot(base, aes(x=niveleduc,y=ingreso_laboral, fill=niveleduc))+geom_boxplot()

El salario promedio de una persona que tiene mas de 18 a;os de estudio es de \(1516\).7 dolares, y el de una persona que estudio menos de 7 años es en promedio \(414.7\).

library(data.table) 
## Warning: package 'data.table' was built under R version 3.6.1
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
## 
##     between, first, last
## The following object is masked from 'package:purrr':
## 
##     transpose
setDT(base[base$niveleduc == "3er y 4to nivel", ])[, mean(salario,na.rm = T)]
## [1] 1516.672
setDT(base[base$niveleduc == "primaria", ])[, mean(salario,na.rm = T)]
## [1] 414.7017

Modelo de regresión lineal

El modelo lm o de regresión lineal sirve para poder explicar la relación que existen entre mi variable explicada y mis variables explicativas. Como primera observacional el estadístico F tiene un pvalue menor a 0.05 por lo que el pasa la primera prueba. En segundo lugar el R cuadrado ajustado nos dice que las variables explicativas explican el 47% de la variable explicada (el logaritmo del salario). Tenemos 13.600 observaciones que son mucho menos que las 71725 de nuestra muestra, que se puede explicar por los datos NA y debido a que estamos trabajando solo con la población económicamente activa. En nuestro modelo dejando todo los demás constante \(ceteris paribus\) en promedio la mujer percibe 17% menos de salario en comparación al hombre controlando por todas las variables y es significativa al 95% de significancia. También las personas que tienen mas de 18 años de estudio manteniendo todo constante, reciben en promedio 95% mas de salario, si se compara con el grupo de primaria. Existen demás variables interesantes como, la edad o la rama de ocupación (que se compara con las personas que trabajan en el sector agrícola), que tienen resultados interesantes.

Sin embargo debido al problema de sesgo de selección, es decir la no toma en cuenta las personas que posiblemente estén buscando trabajo y no hayan publicado un salario, o personas que simplemente no quieren publicar su cifra salarial. Por tal motivo se utilizara el método de heckman que consiste en dos pasos, calcula un modelo probit, en este caso la probabilidad de entrar al mercado laboral dado las variables \(x_i\) y después el segundo paso, dada la probabilidad de que tanto hombres como mujeres tengan la probabilidad de entrar al mercado laboral de calcula un modelo de regresión lineal.

library(stargazer)
## 
## Please cite as:
##  Hlavac, Marek (2018). stargazer: Well-Formatted Regression and Summary Statistics Tables.
##  R package version 5.2.2. https://CRAN.R-project.org/package=stargazer
reg1 <- lm(lsalario~sexo+horas_de_trabajo_principal+raza+edad+I(edad^2)+casado+niveleduc+rama1
           ,data = base)

stargazer(reg1, type = "text", no.space = T)
## 
## ========================================================================================================
##                                                                                  Dependent variable:    
##                                                                              ---------------------------
##                                                                                       lsalario          
## --------------------------------------------------------------------------------------------------------
## sexomujer                                                                             -0.172***         
##                                                                                        (0.011)          
## horas_de_trabajo_principal                                                            0.017***          
##                                                                                       (0.0004)          
## razaindigena                                                                          -0.112***         
##                                                                                        (0.018)          
## razamontubio                                                                           -0.039           
##                                                                                        (0.032)          
## razablanco                                                                             -0.038           
##                                                                                        (0.037)          
## razamulato                                                                              0.033           
##                                                                                        (0.048)          
## razanegro                                                                               0.012           
##                                                                                        (0.026)          
## edad                                                                                  0.046***          
##                                                                                        (0.003)          
## I(edad2)                                                                              -0.001***         
##                                                                                       (0.00004)         
## casado                                                                                -0.025***         
##                                                                                        (0.002)          
## niveleducsecundaria                                                                   0.185***          
##                                                                                        (0.012)          
## niveleducuniversidad                                                                  0.548***          
##                                                                                        (0.015)          
## niveleduc3er y 4to nivel                                                              0.959***          
##                                                                                        (0.025)          
## rama1Activ. Servicios sociales y de salud                                             0.318***          
##                                                                                        (0.030)          
## rama1Actividades de alojamientos y servicio                                           0.118***          
##                                                                                        (0.032)          
## rama1Actividades de organizaciones extraterritoriales                                  0.755*           
##                                                                                        (0.390)          
## rama1Administ. Publica y defensa; seguridad                                           0.490***          
##                                                                                        (0.026)          
## rama1Agricultura, ganaderia caza y silvicultura y pesca                               -0.176***         
##                                                                                        (0.025)          
## rama1Comercio, reparaciones, vehiculos, y efectos, personales                          -0.019           
##                                                                                        (0.026)          
## rama1Construcción                                                                       0.042           
##                                                                                        (0.029)          
## rama1Enseñanza                                                                        0.249***          
##                                                                                        (0.029)          
## rama1Explotación de minas y cantera                                                   0.417***          
##                                                                                        (0.036)          
## rama1Hogares privados con servicio domestico                                          -0.114***         
##                                                                                        (0.031)          
## rama1Industrias manufactureras                                                        0.076***          
##                                                                                        (0.026)          
## rama1Intermediación financiera y de seguros                                           -0.066**          
##                                                                                        (0.028)          
## rama1Otra activ. Comunit. Sociales y person                                            -0.059           
##                                                                                        (0.050)          
## rama1Suministros de electricidad, gas y distribución de agua, alcantarillado          0.395***          
##                                                                                        (0.043)          
## rama1Transporte, almacenam y comunicaciones                                           0.321***          
##                                                                                        (0.044)          
## Constant                                                                              4.379***          
##                                                                                        (0.062)          
## --------------------------------------------------------------------------------------------------------
## Observations                                                                           13,600           
## R2                                                                                      0.471           
## Adjusted R2                                                                             0.470           
## Residual Std. Error                                                              0.550 (df = 13571)     
## F Statistic                                                                  431.408*** (df = 28; 13571)
## ========================================================================================================
## Note:                                                                        *p<0.1; **p<0.05; ***p<0.01

Sin embargo debido al problema de sesgo de selección, es decir la no toma en cuenta las personas que posiblemente estén buscando trabajo y no hayan publicado un salario, o personas que simplemente no quieren publicar su cifra salarial. Por tal motivo se utilizara el método de heckman que consiste en dos pasos, calcula un modelo probit, en este caso la probabilidad de entrar al mercado laboral dado las variables \(x_i\) y después el segundo paso, dada la probabilidad de que tanto hombres como mujeres tengan la probabilidad de entrar al mercado laboral de calcula un modelo de regresión lineal.

En este caso los resultados cambiaron,ahora la diferencia salarial entre hombres y mujeres es de 7%, teniendo todas las demás variables constantes . el resultado para las personas de 3er y 4to cambio, ahora solo ganan un 93% mas en promedio que las personas en primaria teniendo todas las demás variables constantes.

library(sampleSelection)
## Loading required package: maxLik
## Loading required package: miscTools
## 
## Please cite the 'maxLik' package as:
## Henningsen, Arne and Toomet, Ott (2011). maxLik: A package for maximum likelihood estimation in R. Computational Statistics 26(3), 443-458. DOI 10.1007/s00180-010-0217-1.
## 
## If you have questions, suggestions, or comments regarding the 'maxLik' package, please use a forum or 'tracker' at maxLik's R-Forge site:
## https://r-forge.r-project.org/projects/maxlik/
res<-selection(inlf~horas_de_trabajo_principal+rama1
               +publico+raza+publico+I(edad^2)+
                 años_de_experiencia+sexo+horas_de_trabajo_principal+niveleduc,
               ##################################################################################               
               lsalario ~ horas_de_trabajo_principal+niveleduc+
                 años_de_experiencia+sexo+rama1,
               
               data = base,method = "2step")
##################################################################################
stargazer(res, type = "text", no.space = T)
## 
## ========================================================================================================
##                                                                                  Dependent variable:    
##                                                                              ---------------------------
##                                                                                       lsalario          
## --------------------------------------------------------------------------------------------------------
## horas_de_trabajo_principal                                                            0.012***          
##                                                                                        (0.001)          
## niveleducsecundaria                                                                   0.106***          
##                                                                                        (0.014)          
## niveleducuniversidad                                                                  0.510***          
##                                                                                        (0.017)          
## niveleduc3er y 4to nivel                                                              0.935***          
##                                                                                        (0.029)          
## años_de_experiencia                                                                   0.018***          
##                                                                                        (0.001)          
## sexomujer                                                                             -0.073***         
##                                                                                        (0.015)          
## rama1Activ. Servicios sociales y de salud                                             0.155***          
##                                                                                        (0.036)          
## rama1Actividades de alojamientos y servicio                                           0.345***          
##                                                                                        (0.041)          
## rama1Actividades de organizaciones extraterritoriales                                  0.865**          
##                                                                                        (0.423)          
## rama1Administ. Publica y defensa; seguridad                                           0.264***          
##                                                                                        (0.036)          
## rama1Agricultura, ganaderia caza y silvicultura y pesca                               -0.117***         
##                                                                                        (0.029)          
## rama1Comercio, reparaciones, vehiculos, y efectos, personales                         0.127***          
##                                                                                        (0.033)          
## rama1Construcción                                                                     0.095***          
##                                                                                        (0.033)          
## rama1Enseñanza                                                                        0.107***          
##                                                                                        (0.034)          
## rama1Explotación de minas y cantera                                                   0.193***          
##                                                                                        (0.047)          
## rama1Hogares privados con servicio domestico                                          -0.521***         
##                                                                                        (0.051)          
## rama1Industrias manufactureras                                                         0.066**          
##                                                                                        (0.029)          
## rama1Intermediación financiera y de seguros                                           -0.073**          
##                                                                                        (0.031)          
## rama1Otra activ. Comunit. Sociales y person                                           0.151***          
##                                                                                        (0.057)          
## rama1Suministros de electricidad, gas y distribución de agua, alcantarillado          0.143***          
##                                                                                        (0.055)          
## rama1Transporte, almacenam y comunicaciones                                             0.082           
##                                                                                        (0.055)          
## Constant                                                                              5.844***          
##                                                                                        (0.072)          
## --------------------------------------------------------------------------------------------------------
## Observations                                                                           42,264           
## rho                                                                                    -0.738           
## Inverse Mills Ratio                                                               -0.510*** (0.046)     
## ========================================================================================================
## Note:                                                                        *p<0.1; **p<0.05; ***p<0.01

Modelos LDA y QDA

Para probar los modelos de discriminación lineal y discriminación cuadrática primero hay que hacer un test de homogeneidad intra grupo y un test de normalidad multivariante.

Test de homogeneidad intra grupo

se rechaza la hipótesis nula, las varianzas entre los grupos son distintas, lo cual representa un problema para el modelo

library(vegan)
## Loading required package: permute
## Loading required package: lattice
## This is vegan 2.5-5
set.seed(12345)
base_random <- base[order(runif(71725)), ]
### base de entranamiento para test de homogeneidad
base_test <- base_random[1:5000,]

## seleccionamos las variables ambientales a utilizar
env.pars2 <- as.matrix(base_test[,c(2:6)])
# verificamos la homogeneidad multivariada de las matrices de covarianza intra-grupo
env.pars2.d1 <- dist(env.pars2)
env.MHV <- betadisper(env.pars2.d1,base_test$log_ingreso_laboral)
## missing observations due to 'group' removed
anova(betadisper(env.pars2.d1,base_test$log_ingreso_laboral))
## missing observations due to 'group' removed
## Analysis of Variance Table
## 
## Response: Distances
##             Df Sum Sq Mean Sq F value    Pr(>F)    
## Groups     784  60751  77.488  1.8449 < 2.2e-16 ***
## Residuals 2002  84088  42.002                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Test de normalidad multivariante

Rechazamos la Ho de normalidad multivariante

library(mvnormtest)
mshapiro.test(t(env.pars2))
## 
##  Shapiro-Wilk normality test
## 
## data:  Z
## W = 0.85665, p-value < 2.2e-16
names(base)
##  [1] "sexo"                            "edad"                           
##  [3] "relacion_de_parentezco"          "casado"                         
##  [5] "asiste_a_clases"                 "nivel_de_instruccion"           
##  [7] "nivel_de_instruccion2"           "titulo_universitario"           
##  [9] "raza"                            "horas_semanales"                
## [11] "disponibilidad_laboral_adiciona" "rama_de_actividad"              
## [13] "grupo_de_ocupacion"              "publico"                        
## [15] "años_de_experiencia"             "horas_de_trabajo_principal"     
## [17] "ingreso_de_asalariados"          "p67"                            
## [19] "p68b"                            "ingreso_laboral"                
## [21] "ipc"                             "petn"                           
## [23] "salario"                         "rama1"                          
## [25] "mujer"                           "años_educ"                      
## [27] "log_ingreso_asalariado"          "salario_real"                   
## [29] "lsalario_real"                   "log_ingreso_laboral"            
## [31] "lsalario"                        "niveleduc"                      
## [33] "inlf"

test de multicolinealidad

as.dist(cor(env.pars2))
##                               edad relacion_de_parentezco      casado
## relacion_de_parentezco -0.43070187                                   
## casado                 -0.51003469             0.40303869            
## asiste_a_clases         0.52606345            -0.32985811 -0.39525716
## nivel_de_instruccion   -0.17377671             0.08006046  0.07482390
##                        asiste_a_clases
## relacion_de_parentezco                
## casado                                
## asiste_a_clases                       
## nivel_de_instruccion       -0.13361035

LDA y QDA

library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
inlf.lda <- lda(inlf ~ edad+niveleduc
,data = base)
inlf.lda
## Call:
## lda(inlf ~ edad + niveleduc, data = base)
## 
## Prior probabilities of groups:
##        0        1 
## 0.804582 0.195418 
## 
## Group means:
##       edad niveleducsecundaria niveleducuniversidad
## 0 34.77356            0.360457            0.1599929
## 1 36.38471            0.354502            0.2413083
##   niveleduc3er y 4to nivel
## 0               0.01737035
## 1               0.04689452
## 
## Coefficients of linear discriminants:
##                                 LD1
## edad                     0.02652871
## niveleducsecundaria      0.87555034
## niveleducuniversidad     2.15177054
## niveleduc3er y 4to nivel 4.38696438
library(klaR)
## Warning: package 'klaR' was built under R version 3.6.1
## Registered S3 methods overwritten by 'klaR':
##   method      from 
##   predict.rda vegan
##   print.rda   vegan
##   plot.rda    vegan
## 
## Attaching package: 'klaR'
## The following object is masked from 'package:vegan':
## 
##     rda
partimat(sexo~ lsalario+años_educ
         ,data = base,method = "lda")

library(MASS)

partimat(sexo~ lsalario+horas_de_trabajo_principal
         ,data = base,method = "qda")

Todos los cálculos obtenidos son objeto de practica, sin embargo al no cumplir con los test no son significativos, ninguno de los gráficos son significativos, ni las estimaciones de discriminación lineal son significativas