Pregunta de investigación

¿Qué factores condicionan el nivel de salario de una persona con discapacidad? ¿Qué factores determinan el salario de las personas con discapacidad?

activamos las librerías

library(rio)
library(haven)
library(dslabs)
library(MASS)
library(car)
library(dplyr)
library(tidyverse)
library(DescTools)#para el pseudo R2
library(ggfortify)
library(see)
library(patchwork)
library(performance)
library(car)
library(lmtest)#para usar breusch pagan
library(nortest)#para usar Kolmogorov-Smirnov

abrimos y limpiamos la data

bd=import("Base de Datos II Estudio Nacional de la Discapacidad.sav")
bd_1=bd%>%filter(edad > 18)
subdata<- bd_1[,c("des_puntaje_adulto","educc","sexo","h4","h9","zona","c41_1","disc_grado_adulto")]
data<-na.omit(subdata)

Recodificación de variables

1: pertenencia a una comunidad indígena

table(data$h9)
## 
##     1     2     3     4     5     6     7     9    10    96 
##   161    49    17   804    18    12     4    35 10952     9
class(data$h9)
## [1] "numeric"
data$h9=as.numeric(data$h9)
data$indigena <- car::recode(data$h9, "1=1; 2=1; 3=1; 4=1; 5=1; 6=1; 7=1; 8=1; 9=1; 10=2; else = NA")
table(data$indigena)
## 
##     1     2 
##  1100 10952

2: pertenencia a zona rural o urbana

table(data$zona)
## 
##     1     2 
## 10102  1959
#urbano=1;  rural=2

3: nivel de educación niveles: -sin educación formal -educación básica incompleta -educación básica completa -Media incompleto -Media completo -superior incompleta -Superior completa 5.115

data$educc=as.numeric(data$educc)
data$educacion <- car::recode(data$educc, "0=0; 1=1; 2=2; 3=3; 4=4; 5=5; 6=6; else = NA")
table(data$educacion)
## 
##    0    1    2    3    4    5    6 
##  335 1903 1406 1653 3372 1249 2138
class(data$educacion)
## [1] "numeric"

4: si la persona es casada o no

data$h4=as.numeric(data$h4)
data$casado <- car::recode(data$h4, "1=1; 2=2; 3=2; 4=2; 5=2; 6=2; 7=2; else = NA")
table(data$casado)
## 
##    1    2 
## 4321 7740
class(data$casado)
## [1] "numeric"

variables ya limpias

table(data$sexo)
## 
##    1    2 
## 5203 6858
#1=hombre; 2=mujer
table(data$disc_grado_adulto)
## 
##    0    1    2 
## 9453 1518 1090
#0=persona sin discapacidad; 1= persona con discapacidad leve a moderada; 2=persona con discapacidad severa
table(data$fa33)
## < table of extent 0 >

recodificación de las variable dependientes del primer y segundo modelo

#primer modelo: ordinal
summary(data$des_puntaje_adulto)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00   25.05   38.02   35.13   46.68  100.00
data$desempeño=
  cut(data$des_puntaje_adulto, 
  breaks=c(0,25,50,75,100), 
  labels=c("bajo","medio-bajo","medio-alto","alto"))
table(data$desempeño)
## 
##       bajo medio-bajo medio-alto       alto 
##       1992       6999       2044         14
str(data$desempeño)
##  Factor w/ 4 levels "bajo","medio-bajo",..: 2 2 1 2 1 2 NA 1 NA 2 ...

Primer modelo

data$desempeño=as.factor(data$desempeño)
modelo1<- polr(desempeño~  educacion + sexo + zona +indigena + disc_grado_adulto + c41_1, data = data, Hess=TRUE)
summary(modelo1)
## Call:
## polr(formula = desempeño ~ educacion + sexo + zona + indigena + 
##     disc_grado_adulto + c41_1, data = data, Hess = TRUE)
## 
## Coefficients:
##                      Value Std. Error t value
## educacion         -0.12451    0.01357  -9.173
## sexo               0.42914    0.04463   9.616
## zona              -0.08566    0.06127  -1.398
## indigena          -0.14829    0.07694  -1.927
## disc_grado_adulto  3.10367    0.06206  50.012
## c41_1             -0.46369    0.19720  -2.351
## 
## Intercepts:
##                       Value   Std. Error t value
## bajo|medio-bajo       -2.3105  0.4368    -5.2900
## medio-bajo|medio-alto  2.2611  0.4381     5.1608
## medio-alto|alto        9.8209  0.5152    19.0639
## 
## Residual Deviance: 14209.33 
## AIC: 14227.33 
## (1025 observations deleted due to missingness)

Observar el p-value y determinar la significancia de las variables independientes

summary_table <- coef(summary(modelo1))
summary_table
##                             Value Std. Error   t value
## educacion             -0.12450620 0.01357240 -9.173485
## sexo                   0.42914130 0.04462933  9.615679
## zona                  -0.08566365 0.06126662 -1.398211
## indigena              -0.14828724 0.07693982 -1.927315
## disc_grado_adulto      3.10366954 0.06205886 50.011706
## c41_1                 -0.46368540 0.19719829 -2.351366
## bajo|medio-bajo       -2.31051659 0.43676682 -5.290046
## medio-bajo|medio-alto  2.26109727 0.43812581  5.160840
## medio-alto|alto        9.82087153 0.51515491 19.063919
pval <- pnorm(abs(summary_table[, "t value"]),lower.tail = FALSE)* 2
pval
##             educacion                  sexo                  zona 
##          4.579669e-20          6.865502e-22          1.620498e-01 
##              indigena     disc_grado_adulto                 c41_1 
##          5.394043e-02          0.000000e+00          1.870461e-02 
##       bajo|medio-bajo medio-bajo|medio-alto       medio-alto|alto 
##          1.222856e-07          2.458440e-07          5.035749e-81
summary_table <- cbind(summary_table, "p value" = pval)
summary_table
##                             Value Std. Error   t value      p value
## educacion             -0.12450620 0.01357240 -9.173485 4.579669e-20
## sexo                   0.42914130 0.04462933  9.615679 6.865502e-22
## zona                  -0.08566365 0.06126662 -1.398211 1.620498e-01
## indigena              -0.14828724 0.07693982 -1.927315 5.394043e-02
## disc_grado_adulto      3.10366954 0.06205886 50.011706 0.000000e+00
## c41_1                 -0.46368540 0.19719829 -2.351366 1.870461e-02
## bajo|medio-bajo       -2.31051659 0.43676682 -5.290046 1.222856e-07
## medio-bajo|medio-alto  2.26109727 0.43812581  5.160840 2.458440e-07
## medio-alto|alto        9.82087153 0.51515491 19.063919 5.035749e-81

Como se observa, todas las variables escogidas tienen un p-value menor a 0.05, por lo tanto, todas son significativas

Cálculo e interpretación de los exponenciales

exp(coef(modelo1))
##         educacion              sexo              zona          indigena 
##         0.8829328         1.5359381         0.9179029         0.8621834 
## disc_grado_adulto             c41_1 
##        22.2795573         0.6289614

*Determinamos cuánto explica nuestro modelo con un pseudo R2”

PseudoR2(modelo1, which = c("Nagelkerke"))
## Nagelkerke 
##   0.502788

El modelo explica un 50%

Construimmos la ecuación

primer corte

num_1 = exp(-3.2040681 - ((0.2550297* ##) + (-0.6630363* ##)+ ( 0.1200079* ##) + (-0.2312537* ##) + ()))

denom_1 = 1 + num_1 p_menorigual_muybajo= num_1/denom_1 p_menorigual_muybajo

coef(summary(modelo1))
##                             Value Std. Error   t value
## educacion             -0.12450620 0.01357240 -9.173485
## sexo                   0.42914130 0.04462933  9.615679
## zona                  -0.08566365 0.06126662 -1.398211
## indigena              -0.14828724 0.07693982 -1.927315
## disc_grado_adulto      3.10366954 0.06205886 50.011706
## c41_1                 -0.46368540 0.19719829 -2.351366
## bajo|medio-bajo       -2.31051659 0.43676682 -5.290046
## medio-bajo|medio-alto  2.26109727 0.43812581  5.160840
## medio-alto|alto        9.82087153 0.51515491 19.063919

vemos las probabilidades

head(modelo1$fitted.values)
##         bajo medio-bajo medio-alto         alto
## 1  0.1845723  0.7717369 0.04366706 2.380202e-05
## 5  0.1845723  0.7717369 0.04366706 2.380202e-05
## 8  0.2474697  0.7220423 0.03047158 1.638324e-05
## 9  0.2132337  0.7500127 0.03673379 1.987863e-05
## 14 0.2132337  0.7500127 0.03673379 1.987863e-05
## 15 0.2040509  0.7571746 0.03875340 2.101564e-05

¿Cómo se entiende esto?

recodificación de la segunda variable dependiente y segundo modelo

data<-na.omit(data)
summary(data$des_puntaje_adulto)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##   0.2949  30.9944  39.3860  38.3511  47.2970 100.0000
modelo <- lm(des_puntaje_adulto~  educacion + sexo +indigena + disc_grado_adulto + c41_1,data)

summary(modelo)
## 
## Call:
## lm(formula = des_puntaje_adulto ~ educacion + sexo + indigena + 
##     disc_grado_adulto + c41_1, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -36.546  -5.441   1.583   7.272  37.997 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       39.67352    1.66132  23.881  < 2e-16 ***
## educacion         -0.85879    0.05741 -14.958  < 2e-16 ***
## sexo               2.54003    0.19768  12.849  < 2e-16 ***
## indigena          -0.46898    0.33332  -1.407 0.159459    
## disc_grado_adulto 11.84285    0.15668  75.588  < 2e-16 ***
## c41_1             -2.74891    0.75418  -3.645 0.000269 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.17 on 11030 degrees of freedom
## Multiple R-squared:   0.41,  Adjusted R-squared:  0.4098 
## F-statistic:  1533 on 5 and 11030 DF,  p-value: < 2.2e-16

normalidad

lillie.test(modelo$residuals) 
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  modelo$residuals
## D = 0.070433, p-value < 2.2e-16

Dado que tenemos un p-value (2.2e-16) MENOR a (<) 0.05, se rechaza H0 (distribución normal) y podemos acepta H1 que (no hay distribución normal), por lo que nuestro modelo no cumpliaria con los suspuestos de normalidad homocedasticidad

bptest(modelo)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 493.21, df = 5, p-value < 2.2e-16

En este caso con un p-value (2.2e-16) MENOR a(<) que 0.05 se RECHAZA por lo que nuestro modelo tendria un problema de heterocedasticidad.

no-colinealidad

vif(modelo)
##         educacion              sexo          indigena disc_grado_adulto 
##          1.073845          1.015632          1.004946          1.099283 
##             c41_1 
##          1.017182

independencia

durbinWatsonTest (modelo) 
##  lag Autocorrelation D-W Statistic p-value
##    1     0.008494958      1.982861   0.366
##  Alternative hypothesis: rho != 0

Interpretación: Dado que la prueba de Durbin-Watson presenta un Pvale (0.83) MAYOR a(>) 0.05, no podemos rechazar la hipotesis nula, por lo que No existe auto-correlación.

linealidad

plot(modelo,1)

autoplot(modelo)

El modelo cumple con el supuesto de linealidad