ACTIVIDAD 25 MAYO

Author

Andrea Ramirez

CAMBIAR DIRECTORIO DE TRABAJO

setwd(“C:/Users/LENOVO/Desktop/25 MAYO ANDRE”)

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

Leer los datos (ajustar la ruta del archivo)

library(haven)
Warning: package 'haven' was built under R version 4.4.3
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

results='hide'
str(data)
tibble [16,451 × 50] (S3: tbl_df/tbl/data.frame)
 $ area             : dbl+lbl [1:16451] 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
   ..@ label       : chr "Área"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "Rural" "Urbano"
 $ empleo           : dbl+lbl [1:16451] 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1...
   ..@ label       : chr "1.  ¿Qué hizo (…) la semana pasada:"
   ..@ format.stata: chr "%26.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "No trabajó" "Trabajó al menos una hora"
 $ region           : dbl+lbl [1:16451] 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
   ..@ label       : chr "Región"
   ..@ format.stata: chr "%9.0g"
   ..@ labels      : Named num [1:4] 1 2 3 4
   .. ..- attr(*, "names")= chr [1:4] "Sierra" "Costa" "Amazonía" "Insular"
 $ edad             : num [1:16451] 19 23 38 18 21 22 40 31 19 34 ...
  ..- attr(*, "label")= chr "101.  Entonces, ¿Cuántos años cumplidos tiene?"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ t_hijos          : num [1:16451] 1 1 5 1 1 1 3 2 1 2 ...
  ..- attr(*, "label")= chr "208.c  Total hijos/as en casa"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ nac_vivo_murieron: dbl+lbl [1:16451] 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...
   ..@ label       : chr " 210.  ¿Tuvo usted hijos o hijas que nacieron vivos/as y que murieron"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "No" "Si"
 $ mortinato_2      : dbl+lbl [1:16451] 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0...
   ..@ label       : chr "212.1  De todos los embarazos que usted ha tenido en su vida"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "No" "Si"
 $ depresion_pp     : dbl+lbl [1:16451] 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0...
   ..@ label       : chr "219.  ¿Después de alguno de sus partos, sintió tristeza?"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "No" "Si"
 $ intensidad_dpp   : dbl+lbl [1:16451] 1, 2, 0, 0, 0, 0, 2, 0, 0, 2, 0, 2, 1, 0, 0, 0, 0, 0...
   ..@ label       : chr "Intensidad DPP"
   ..@ format.stata: chr "%12.0g"
   ..@ labels      : Named num [1:3] 0 1 2
   .. ..- attr(*, "names")= chr [1:3] "No tiene dpp" "Poca dpp" "Mucha dpp"
 $ etnia            : dbl+lbl [1:16451] 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0...
   ..@ label       : chr "9.1  ¿Cómo se Identifica (…) según su cultura y costumbres:"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "Otra" "Indigena"
 $ f2_s2_216_1      : dbl+lbl [1:16451] 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2...
   ..@ label       : chr "216.1  Hay mujeres que pierden sus embarazos antes de cumplir el quinto mes"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:2] 1 2
   .. ..- attr(*, "names")= chr [1:2] "si" "no"
 $ f2_s2_216_2      : num [1:16451] NA NA NA NA NA NA NA NA NA NA ...
  ..- attr(*, "label")= chr "216.2  ¿Cuántos?"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ f2_s2_218_1_a    : dbl+lbl [1:16451] 2, 2, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 1, 2...
   ..@ label       : chr "218.a  ¿Hombre o mujer?"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:2] 1 2
   .. ..- attr(*, "names")= chr [1:2] "hombre" "mujer"
 $ tiempo_dpp       : dbl+lbl [1:16451] 1, 1, 0, 0, 0, 0, 3, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0...
   ..@ label       : chr "221.  ¿Durante cuánto tiempo se sintió triste?"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:5] 1 2 3 4 88
   .. ..- attr(*, "names")= chr [1:5] "menos de 3 meses" "3 meses" "6 meses" "1año o más" ...
 $ f2_s5_504a_1     : dbl+lbl [1:16451] 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.a  El trato que recibió del personal de salud que le atendió?PN"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ f2_s5_504b_1     : dbl+lbl [1:16451] 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.b  La experiencia/conocimiento de la persona que le atendió?PN"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ f2_s5_504c_1     : dbl+lbl [1:16451] 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.c  La disponibilidad del médico, enfermera u otro personal"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ f2_s5_504d_1     : dbl+lbl [1:16451] 3, 3, 1, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.d  La privacidad durante su atención? - PNoC"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ f2_s5_504e_1     : dbl+lbl [1:16451] 2, 3, 2, 3, 3, 3, 3, 3, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.e  La comodidad del establecimiento? - Parto normal o cesárea"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ f2_s5_504f_1     : dbl+lbl [1:16451] 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.f  El tiempo que tardaron en atenderla? - Parto normal o cesárea"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ f2_s5_504g_1     : dbl+lbl [1:16451] 1, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.g  El horario de atención? - Parto normal o cesárea"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ f2_s5_504h_1     : dbl+lbl [1:16451] 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.h  La limpieza/aseo del establecimiento? - Parto normal o cesárea"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ f2_s5_504i_1     : dbl+lbl [1:16451] 2, 3, 1, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.i  La ropa/vestimenta utilizada en el parto? - Parto normal o cesárea"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ f2_s5_504j_1     : dbl+lbl [1:16451] 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.j  La información que le dio el personal de salud sobre su salud"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ f2_s5_504k_1     : dbl+lbl [1:16451] 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3...
   ..@ label       : chr "504.k  El respeto a su cultura y costumbres relacionadas con el parto? - Parto n"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "Malo" "Regular" "Bueno"
 $ est_civil        : dbl+lbl [1:16451] 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1...
   ..@ label       : chr "900.  ¿Actualmente usted esta:"
   ..@ format.stata: chr "%12.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "En otro caso" "Casada"
 $ q_usted          : dbl+lbl [1:16451] 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1...
   ..@ label       : chr "403.  En la época en la que quedó embarazada de (…), quería Usted:"
   ..@ format.stata: chr "%17.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "No tener ese hijo" "Tener ese hijo"
 $ q_pareja         : dbl+lbl [1:16451] 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1...
   ..@ label       : chr "405.  ¿Quería su pareja:"
   ..@ format.stata: chr "%17.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "No tener ese hijo" "Tener ese hijo"
 $ f2_s4b_406_      : dbl+lbl [1:16451] 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1...
   ..@ label       : chr "406.  ¿Tuvo algún control prenatal cuando estaba embarazada de (...)?"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:2] 1 2
   .. ..- attr(*, "names")= chr [1:2] "si" "no"
 $ lugar            : dbl+lbl [1:16451] 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0...
   ..@ label       : chr "423.a  ¿En que lugar tuvo el parto de (..).?"
   ..@ format.stata: chr "%32.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "Establecimiento privado" "Establecimiento de salud del msp"
 $ form_parto       : dbl+lbl [1:16451] 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0...
   ..@ label       : chr "425.  El parto de (...) fue:"
   ..@ format.stata: chr "%15.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "Cesárea" "Normal"
 $ c_posparto       : dbl+lbl [1:16451] 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1...
   ..@ label       : chr "440.  ¿Tuvo usted algún control después del parto de (...)?"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "No" "Si"
 $ anios_esc        : num [1:16451] 14 10 6 8 16 9 10 13 14 6 ...
  ..- attr(*, "label")= chr "Años escolaridad"
  ..- attr(*, "format.stata")= chr "%9.0g"
 $ ingrl            : num [1:16451] 0 0 240 0 0 0 0 60 0 0 ...
  ..- attr(*, "label")= chr "Ingreso laboral"
  ..- attr(*, "format.stata")= chr "%9.0g"
 $ planf            : dbl+lbl [1:16451] 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1...
   ..@ label       : chr "Planificación familiar"
   ..@ format.stata: chr "%13.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "No planifico" "Si planificó"
 $ lingrl           : num [1:16451] 0 0 5.48 0 0 ...
  ..- attr(*, "label")= chr "Logaritmo ingreso laboral"
  ..- attr(*, "format.stata")= chr "%9.0g"
 $ lugarx1          : num [1:16451] 0 0 0 0 0 0 0 1 0 0 ...
  ..- attr(*, "label")= chr "lugar==Establecimiento privado"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ lugarx2          : num [1:16451] 1 1 1 1 1 1 1 0 1 1 ...
  ..- attr(*, "label")= chr "lugar==Establecimiento de salud del msp"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ regionx1         : num [1:16451] 1 1 1 1 1 1 1 1 1 1 ...
  ..- attr(*, "label")= chr "region==Sierra"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ regionx2         : num [1:16451] 0 0 0 0 0 0 0 0 0 0 ...
  ..- attr(*, "label")= chr "region==Costa"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ regionx3         : num [1:16451] 0 0 0 0 0 0 0 0 0 0 ...
  ..- attr(*, "label")= chr "region==Amazonía"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ regionx4         : num [1:16451] 0 0 0 0 0 0 0 0 0 0 ...
  ..- attr(*, "label")= chr "region==Insular"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ intensidad_dppx1 : num [1:16451] 0 0 1 1 1 1 0 1 1 0 ...
  ..- attr(*, "label")= chr "intensidad_dpp==No tiene dpp"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ intensidad_dppx2 : num [1:16451] 1 0 0 0 0 0 0 0 0 0 ...
  ..- attr(*, "label")= chr "intensidad_dpp==Poca dpp"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ intensidad_dppx3 : num [1:16451] 0 1 0 0 0 0 1 0 0 1 ...
  ..- attr(*, "label")= chr "intensidad_dpp==Mucha dpp"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ tiempo_dppx1     : num [1:16451] 0 0 1 1 1 1 0 1 1 0 ...
  ..- attr(*, "label")= chr "tiempo_dpp==     0.0000"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ tiempo_dppx2     : num [1:16451] 1 1 0 0 0 0 0 0 0 1 ...
  ..- attr(*, "label")= chr "tiempo_dpp==menos de 3 meses"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ tiempo_dppx3     : num [1:16451] 0 0 0 0 0 0 0 0 0 0 ...
  ..- attr(*, "label")= chr "tiempo_dpp==3 meses"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ tiempo_dppx4     : num [1:16451] 0 0 0 0 0 0 1 0 0 0 ...
  ..- attr(*, "label")= chr "tiempo_dpp==6 meses"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ tiempo_dppx5     : num [1:16451] 0 0 0 0 0 0 0 0 0 0 ...
  ..- attr(*, "label")= chr "tiempo_dpp==1año o más"
  ..- attr(*, "format.stata")= chr "%8.0g"

##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

Analisis El ingreso y los años de escolaridad no son estadisticamente significativos, es decir, no nos ayudan a explicar la probabilidad de que las mujeres ecuatorianas sufran de depresion post parto.

La edad es estadísticamente significativa, lo que indica que, las mujeres con mayor edad tienen mayor probabilidad de sufrir de depresion post parto.

El numero de hijos presenta significancia estadistica, es decir, a medida que incrementa el número de hijos, crece la probabilidad de que las mujeres sufran de depresion post parto.

La etnia es una variable estadisticamente significativa en el modelo, lo cual significa que, las mujeres indígenas tienen mas probabilidad de padecer de depresion post parto.

Las mujeres que viven en el área rural tienen mayor probabilidad de sufrir de depresion post parto, en comparación a las damas del área 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) es un método matemático para evaluar el ajuste de un modelo a los datos a partir de los cuales se generó.

El criterio de Información Bayesiano (BIC) es una medida de bondad de ajuste de un modelo estadístico, y es a muenudo utilizado como un criterio para para la selección de modelos entre un conjunto finito de modelos.

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

##Comparar BIC de los modelos

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 

El criterio más bajo es del modelo probit

cat("BIC Logit:", bic_logit, " | BIC Probit:", bic_probit, "\n")
BIC Logit: 17173.34  | BIC Probit: 17171.09 

CONCLUSION: El modelo con menor AIC/BIC es el preferido, ya que tiene mejor ajuste, es decir se trata del modelo probit

Calcular efectos marginales para Logit

library(margins)
Warning: package 'margins' was built under R version 4.4.3
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

Los años de escolaridad y el ingreso no son estadisticamente significativos, es decir, no ayudan a explicar la probabilidad de que las mujeres ecuatorianas padezcan de depresion post parto.

El área al ser una variable estadisticamente significativa, nos explica que las mujeres del área rural tienen 1,84 % mas probabilidad de sufrir de depresion post parto.

Un año adiciona de las mujeres ecutorianas en promedio, aumenta la probabilidad en 0,56% de sufrir de depresion post parto.

Una mujer indígena tiene 5,92% de probabilidad de sufrir de depresion post parto.

A medida que aumenta el número de hijos, acrecienta la probabilidad en 0,66% de que padezca de depresion post parto.

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

Analisis Los años de escolaridad y el ingreso no son estadisticamente significativos, es decir, no ayudan a explicar la probabilidad de que las mujeres ecuatorianas padezcan de depresion post parto.

El área al ser una variable estadisticamente significativa, nos explica que las mujeres del área rural tienen 1,88 % mas probabilidad de sufrir de depresion post parto.

Un año adiciona de las mujeres ecutorianas en promedio, aumenta la probabilidad en 0,57% de sufrir de depresion post parto.

Una mujer indígena tiene 6,06% de probabilidad de sufrir de depresion post parto.

A medida que aumenta el número de hijos, acrecienta la probabilidad en 0,68% de que padezca de depresion post parto.

###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 depresion post parto ocurra de acuerdo al 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)
Warning: package 'pROC' was built under R version 4.4.3
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)
Warning: package 'ggplot2' was built under R version 4.4.3
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()

Figura 1: Curva ROC-Modelo Logit

# 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 

Curva ROC: Muestra el rendimiento del modelo en diferentes umbrales de clasificación.

AUC > 0.7 indica un buen modelo predictivo.

medico <- ifelse(data$f2_s5_504c_1 == 3, 1, 0)
table(data$f2_s5_504c_1)

    1     2     3 
  405  2008 14038 
data$medico <- ifelse(data$f2_s5_504c_1 == 3, 1, 0)

##MODELO LOGIT CON MAS VARIABLES DE CONTROL MODELO LOGIT MATRIZ DE EXACTITUD IR CREANDO GRAFICAS… el exito seria q alcance o pase 0,70.

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

##DEBER: AUMENTAR VARIABLES A FIN DE QUE, EL 0,58 DEL MODELO LOGIT AUMENTE A 0,70 COMO VALOR MINIMO.

modelo_logit2 <- glm(depresion_pp ~ lingrl + anios_esc + edad + t_hijos +est_civil +lugar + etnia + area  + form_parto + c_posparto + empleo + tiempo_dppx2, 
                    data = data, family = binomial(link = "logit"))

#Calcular predicciones

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

#Matriz de confusion

conf_matrix_mejorado <- table(Predicho = pred_mejorado, Real = data$depresion_pp)
print(conf_matrix_mejorado)
        Real
Predicho     0     1
       0 12828  1460
       1     0  2163

#Exactitud

exactitud_mejorado <- sum(diag(conf_matrix_mejorado)) / sum(conf_matrix_mejorado)
cat("Exactitud del modelo mejorado:", exactitud_mejorado, "\n")
Exactitud del modelo mejorado: 0.9112516 

#Calcular la curva ROC

library(pROC)
library(haven)
data$depresion_pp<- as.character(as_factor(data$depresion_pp)) 
roc_logit2 <- roc(data$depresion_pp, predict(modelo_logit2, type = "response"))
Setting levels: control = No, case = Si
Setting direction: controls < cases

Graficar la curva ROC 2

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()

Figura 2: Curva ROC - Actualizada

# Comparar curvas ROC

plot(roc_logit2, col = "blue", main = "Comparación de curvas ROC")
plot(roc_logit2, col = "green", add = TRUE)
legend("bottomright", legend = c("Original", "Mejorado"), col = c("blue", "green"), lwd = 2)

Figura 3: Comparacion curvas ROC

# Mostrar el área bajo la curva (AUC)

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