Clase 25 de mayo

Author

Jefferson Chamba & Nelson Tsukanka

Cambiar directorio de trabajo. setwd(“C:/Users/JEFERSON CHAMBA/Desktop/Clase 25 de mayo”)

Instalar paquetes si es necesario

install.packages(“MASS”) Para modelo probit

install.packages(“car”) Para pruebas estadísticas

install.packages(“margins”) Para calcular efectos marginales

install.packages(“pROC”) Para curva ROC

install.packages(“ggplot2”) Para visualización

install.packages(“caret”) Para matriz de confusión

install.packages(“ggplot”) Para visualización

Cargar librerías library(MASS) library(car) library(margins) library(pROC) library(ggplot2) library(ggplot) library(caret) library(haven)

Leer los datos (ajustar la ruta del archivo)

library(haven)
data <- read_dta("Data1_R.dta")
View(data)

Ver las primeras filas de la base de datos

head(data)
# A tibble: 6 × 50
  area       empleo          region   edad t_hijos nac_vivo_murieron mortinato_2
  <dbl+lbl>  <dbl+lbl>       <dbl+l> <dbl>   <dbl> <dbl+lbl>         <dbl+lbl>  
1 1 [Urbano] 1 [Trabajó al … 1 [Sie…    19       1 0 [No]            0 [No]     
2 1 [Urbano] 0 [No trabajó]  1 [Sie…    23       1 0 [No]            0 [No]     
3 1 [Urbano] 1 [Trabajó al … 1 [Sie…    38       5 0 [No]            0 [No]     
4 1 [Urbano] 0 [No trabajó]  1 [Sie…    18       1 0 [No]            0 [No]     
5 1 [Urbano] 0 [No trabajó]  1 [Sie…    21       1 0 [No]            0 [No]     
6 1 [Urbano] 1 [Trabajó al … 1 [Sie…    22       1 0 [No]            0 [No]     
# ℹ 43 more variables: depresion_pp <dbl+lbl>, intensidad_dpp <dbl+lbl>,
#   etnia <dbl+lbl>, f2_s2_216_1 <dbl+lbl>, f2_s2_216_2 <dbl>,
#   f2_s2_218_1_a <dbl+lbl>, tiempo_dpp <dbl+lbl>, f2_s5_504a_1 <dbl+lbl>,
#   f2_s5_504b_1 <dbl+lbl>, f2_s5_504c_1 <dbl+lbl>, f2_s5_504d_1 <dbl+lbl>,
#   f2_s5_504e_1 <dbl+lbl>, f2_s5_504f_1 <dbl+lbl>, f2_s5_504g_1 <dbl+lbl>,
#   f2_s5_504h_1 <dbl+lbl>, f2_s5_504i_1 <dbl+lbl>, f2_s5_504j_1 <dbl+lbl>,
#   f2_s5_504k_1 <dbl+lbl>, est_civil <dbl+lbl>, q_usted <dbl+lbl>, …

Revisar estructura de los datos

str(data)

Ejemplo 1: Modelos con variable dependiente dicotómica

Modelos logit y probit

Ajustar el modelo logit

modelo_logit <- glm(depresion_pp ~ lingrl + anios_esc + edad + t_hijos + etnia + area, 
                    data = data, family = binomial(link = "logit"))

Ajustar el modelo probit

modelo_probit <- glm(depresion_pp ~ lingrl + anios_esc + edad + t_hijos + etnia + area, 
                     data = data, family = binomial(link = "probit"))

Resumen modelo Logit

summary(modelo_logit)

Call:
glm(formula = depresion_pp ~ lingrl + anios_esc + edad + t_hijos + 
    etnia + area, family = binomial(link = "logit"), data = data)

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -2.3377859  0.1015521 -23.021  < 2e-16 ***
lingrl       0.0006157  0.0071763   0.086   0.9316    
anios_esc   -0.0078052  0.0049109  -1.589   0.1120    
edad         0.0333503  0.0032243  10.344  < 2e-16 ***
t_hijos      0.0391392  0.0189765   2.063   0.0392 *  
etnia        0.3502255  0.0605997   5.779  7.5e-09 ***
area         0.1089295  0.0425378   2.561   0.0104 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 17346  on 16450  degrees of freedom
Residual deviance: 17105  on 16444  degrees of freedom
AIC: 17119

Number of Fisher Scoring iterations: 4

Análisis

-El ingreso y los años de escolaridad reflejan no tener relevancia estadística para este modelo es decir estas variables o datos no ayudan a entender o comprender la probabilidad de que una mujer ecuatoriana sufra depresión post parto o ayude a contrarestar este efecto.

  • La edad es estadisticamente significtiva, lo que se traduce en que, las mujeres con mayor edad tienen probabilidad de sufrir de depresión post parto.

  • El número de hijos también es estadisticamente significativa por lo que se deduce que al aumentar el número de hijos las mujeres tienden a sufrir depresión post parto.

  • La etnia es estadisticamente significativa, en el modelo tenemo primero la etnia indigena entonces a partir de ella se muestra que las mujeres indigenas tienen mayor probabilidad de sufrir depresión post parto.

  • En nuestro modelo por último tenemos la varible área rural la cual presenta evidencia estadistica significativa mostrando que las mujeres del area rural tienen mas probabilidad de presentar depresión post parto a comparación de las mujeres del area urbana.

Resumen modelo probit

summary(modelo_probit)

Call:
glm(formula = depresion_pp ~ lingrl + anios_esc + edad + t_hijos + 
    etnia + area, family = binomial(link = "probit"), data = data)

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -1.401e+00  5.852e-02 -23.942  < 2e-16 ***
lingrl       3.942e-05  4.170e-03   0.009  0.99246    
anios_esc   -4.481e-03  2.861e-03  -1.566  0.11733    
edad         1.958e-02  1.890e-03  10.363  < 2e-16 ***
t_hijos      2.334e-02  1.123e-02   2.078  0.03774 *  
etnia        2.078e-01  3.585e-02   5.796  6.8e-09 ***
area         6.431e-02  2.452e-02   2.623  0.00872 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 17346  on 16450  degrees of freedom
Residual deviance: 17103  on 16444  degrees of freedom
AIC: 17117

Number of Fisher Scoring iterations: 4

Comparar AIC y BIC de ambos modelos

El criterio de información de Akaike (AIC)

aic_logit <- AIC(modelo_logit)
aic_probit <- AIC(modelo_probit)

El criterio de Información Bayesiano (BIC)

bic_logit <- BIC(modelo_logit)
bic_probit <- BIC(modelo_probit)

Mostrar resultados

cat("AIC Logit:", aic_logit, " | AIC Probit:", aic_probit, "\n")
AIC Logit: 17119.38  | AIC Probit: 17117.13 
cat("BIC Logit:", bic_logit, " | BIC Probit:", bic_probit, "\n")
BIC Logit: 17173.34  | BIC Probit: 17171.09 

Conclusión

El modelo con menor AIC/BIC es el preferido, ya que tiene mejor ajuste, es decir el modelo probit

Calcular efectos marginales para Logit

library(margins)
marg_logit <- margins(modelo_logit)
summary(marg_logit)
    factor     AME     SE       z      p   lower  upper
 anios_esc -0.0013 0.0008 -1.5897 0.1119 -0.0029 0.0003
      area  0.0184 0.0072  2.5619 0.0104  0.0043 0.0325
      edad  0.0056 0.0005 10.4239 0.0000  0.0046 0.0067
     etnia  0.0592 0.0102  5.7944 0.0000  0.0392 0.0793
    lingrl  0.0001 0.0012  0.0858 0.9316 -0.0023 0.0025
   t_hijos  0.0066 0.0032  2.0632 0.0391  0.0003 0.0129

Análisis

  • Los años de escolaridad y los ingresos para este modelo arrojan no tener evidencia estadistica significativa. Por lo cual no ayudan a inferir si ayuda o empeora el tema de la depresión post parto de las mujeres ecuatorianas.

  • El area si es estadisticamente significativa, nos presenta que las mujeres del area rural tienen 1.84% más probabilidad de sufrir depresión post parto.

  • Edad es una variable igualmente con evidencia significativa en terminos estadisticos muestra que las mujeres aumentan la probabilidad de sufrir depresión post parto en un 0.56%.

  • Las mujeres indigenas tambien con la variable etnia muestran esta preocupación de sufrir depresión post parto con una probabilidad del 5.92%

-Por último y no menos importante tenemos que la variable número de hijos la cual tambien es estadisticamente significativa aumenta la probabilidad de sufrir depresión post parto de las mujeres en un 0.66%.

Calcular efectos marginales para Probit

marg_probit <- margins(modelo_probit)
summary(marg_probit)
    factor     AME     SE       z      p   lower  upper
 anios_esc -0.0013 0.0008 -1.5664 0.1173 -0.0029 0.0003
      area  0.0188 0.0072  2.6238 0.0087  0.0047 0.0328
      edad  0.0057 0.0005 10.4392 0.0000  0.0046 0.0068
     etnia  0.0606 0.0104  5.8096 0.0000  0.0402 0.0811
    lingrl  0.0000 0.0012  0.0095 0.9925 -0.0024 0.0024
   t_hijos  0.0068 0.0033  2.0783 0.0377  0.0004 0.0132

Análisis

  • Los años de escolaridad y los ingresos para este modelo arrojan no tener evidencia estadistica significativa. Por lo cual no ayudan a inferir si ayuda o empeora el tema de la depresión post parto de las mujeres ecuatorianas.

  • El area si es estadisticamente significativa, nos presenta que las mujeres del area rural tienen 1.88% más probabilidad de sufrir depresión post parto.

  • Edad es una variable igualmente con evidencia significativa en terminos estadisticos muestra que las mujeres aumentan la probabilidad de sufrir depresión post parto en un 0.57%.

  • Las mujeres indigenas tambien con la variable etnia muestran esta preocupación de sufrir depresión post parto con una probabilidad del 6.06%

-Por último y no menos importante tenemos que la variable número de hijos la cual tambien es estadisticamente significativa aumenta la probabilidad de sufrir depresión post parto de las mujeres en un 0.68%.

Para el modelo logit podemos calcular la matriz de confusión

Obtener predicciones del modelo logit

pred_logit <- ifelse(predict(modelo_logit, type = "response") > 0.5, 1, 0)

Crear matriz de confusión

conf_matrix <- table(Predicho = pred_logit, Real = data$depresion_pp)

Mostrar matriz de confusión

print(conf_matrix)
        Real
Predicho     0     1
       0 12828  3623

Calcular exactitud

exactitud <- sum(diag(conf_matrix)) / sum(conf_matrix)
cat("Exactitud del modelo logit:", exactitud, "\n")
Exactitud del modelo logit: 0.7797702 

Las variables consideradas para explicar la probabilidad de que las mujeres con depresión post parto ocurra de acuerdo en el modelo logit es del 77.98%

Calcular la curva ROC para el modelo logit (ayuda a ver con cuanta exactitud el modelo está prediciendo los resultados)

library(pROC)
Type 'citation("pROC")' for a citation.

Adjuntando el paquete: 'pROC'
The following objects are masked from 'package:stats':

    cov, smooth, var
roc_logit <- roc(data$depresion_pp, predict(modelo_logit, type = "response"))
Setting levels: control = 0, case = 1
Setting direction: controls < cases

Graficar la curva ROC

library(ggplot2)
ggplot() +
  geom_line(aes(x = roc_logit$specificities, y = roc_logit$sensitivities), color = "blue") +
  geom_abline(linetype = "dashed", color = "red") + 
  labs(title = "Curva ROC - Modelo Logit",
       x = "1 - Especificidad",
       y = "Sensibilidad") +
  theme_minimal()

Mostrar el área bajo la curva (AUC)

auc_logit <- auc(roc_logit)
cat("Área bajo la curva (AUC) - Modelo Logit:", auc_logit, "\n")
Área bajo la curva (AUC) - Modelo Logit: 0.5836005 

Deber aumentar área bajo la curva (AUC) - Modelo logit 0.5836 Estado actual

modelo_logit2 <- glm(depresion_pp ~ lingrl + anios_esc + edad + etnia + area + planf + form_parto + c_posparto + regionx1 + regionx3, 
                    data = data, family = binomial(link = "logit"))

Resumen modelo logit

summary(modelo_logit2)

Call:
glm(formula = depresion_pp ~ lingrl + anios_esc + edad + etnia + 
    area + planf + form_parto + c_posparto + regionx1 + regionx3, 
    family = binomial(link = "logit"), data = data)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -2.016738   0.113114 -17.829  < 2e-16 ***
lingrl      -0.010240   0.007292  -1.404   0.1602    
anios_esc   -0.010391   0.004840  -2.147   0.0318 *  
edad         0.038099   0.002797  13.622  < 2e-16 ***
etnia        0.324727   0.064052   5.070 3.98e-07 ***
area         0.096475   0.043506   2.217   0.0266 *  
planf       -0.617628   0.039673 -15.568  < 2e-16 ***
form_parto  -0.264505   0.040322  -6.560 5.39e-11 ***
c_posparto   0.049042   0.040276   1.218   0.2234    
regionx1     0.346036   0.044435   7.788 6.83e-15 ***
regionx3     0.279774   0.057210   4.890 1.01e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 17346  on 16450  degrees of freedom
Residual deviance: 16770  on 16440  degrees of freedom
AIC: 16792

Number of Fisher Scoring iterations: 4

Calcular efectos marginales para Logit

library(margins)
marg_logit2 <- margins(modelo_logit2)
summary(marg_logit2)
     factor     AME     SE        z      p   lower   upper
  anios_esc -0.0017 0.0008  -2.1475 0.0318 -0.0033 -0.0002
       area  0.0160 0.0072   2.2183 0.0265  0.0019  0.0301
 c_posparto  0.0081 0.0067   1.2178 0.2233 -0.0049  0.0212
       edad  0.0063 0.0005  13.8204 0.0000  0.0054  0.0072
      etnia  0.0538 0.0106   5.0804 0.0000  0.0330  0.0745
 form_parto -0.0438 0.0067  -6.5802 0.0000 -0.0568 -0.0307
     lingrl -0.0017 0.0012  -1.4046 0.1602 -0.0041  0.0007
      planf -0.1023 0.0064 -15.8701 0.0000 -0.1149 -0.0896
   regionx1  0.0573 0.0073   7.8210 0.0000  0.0429  0.0716
   regionx3  0.0463 0.0095   4.8981 0.0000  0.0278  0.0649

Obtener predicciones del modelo logit

pred_logit2 <- ifelse(predict(modelo_logit2, type = "response") > 0.5, 1, 0)

Crear matriz de confusión

conf_matrix2 <- table(Predicho = pred_logit2, Real = data$depresion_pp)

Mostrar matriz de confusión

print(conf_matrix2)
        Real
Predicho     0     1
       0 12803  3601
       1    25    22

Calcular exactitud

exactitud2 <- sum(diag(conf_matrix2)) / sum(conf_matrix2)
cat("Exactitud del modelo logit:", exactitud2, "\n")
Exactitud del modelo logit: 0.7795879 

Las variables consideradas para explicar la probabilidad de que las mujeres con depresión post parto ocurra de acuerdo en el modelo logit es del 77.96%

Curva

library(pROC)
roc_logit2 <- roc(data$depresion_pp, predict(modelo_logit2, type = "response"))
Setting levels: control = 0, case = 1
Setting direction: controls < cases
library(ggplot2)
ggplot() +
  geom_line(aes(x = roc_logit2$specificities, y = roc_logit2$sensitivities), color = "blue") +
  geom_abline(linetype = "dashed", color = "red") + 
  labs(title = "Curva ROC - Modelo Logit",
       x = "1 - Especificidad",
       y = "Sensibilidad") +
  theme_minimal()

Mostrar el area bajo la curva

auc_logit2 <- auc(roc_logit2)
cat("Área bajo la curva 2 (AUC) - Modelo Logit 2:", auc_logit2, "\n")
Área bajo la curva 2 (AUC) - Modelo Logit 2: 0.6265065 

Se añadió las siguientes variables:

- planf que se refiere a que si planificaron familiarmente su cuidado para tener hijos esta variable es estadisticamente significativa y tiene la probabilidad de restar la depresión post parto.

- c_posparto que se refiere a si tuvo algún control despues del parto esta variable no es estadisticamente significativa por tanto no ayuda a inferir si suma o resta.

- region x1 que se refiere a las mujeres de la sierra se tomo esta variable ya que en la sierra se encuentra un número considerables de mujeres indigenas esta variables si es estadisticamente significativa y tiene la probabilidad de aumentar la depresión post parto.

- region x3 que se refiere a las mujeres de la amazonia se tomo esta variable ya que en la sierra se encuentra un número considerables de mujeres indigenas esta variables si es estadisticamente significativa y tiene la probabilidad de aumentar la depresión post parto.

En conclusión se pudo aumentar el area bajo la curva de 0.5836 a 0.6265