CLASE 25 MAYO

Author

Jonathan Jimenez y Maria Rosa Sanchez

CAMBIAR DIRECTORIO DE TRABAJO

setwd(“C:/Users/LENOVO/Desktop/25 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

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"
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 ayudan a explicar la probabilidad de que las mujeres ecuatorianas sufran de depresion post parto.

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

El numero de hijos presenta significancia estadistica, es decir, a medida que aumenta el número de hijos, incrementa 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 mayor 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 el 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()

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

#TAREA: AUMENTAR VARIABLES A FIN DE QUE, EL 0,58 DEL MODELO LOGIT AUMENTE.

names(data)
 [1] "area"              "empleo"            "region"           
 [4] "edad"              "t_hijos"           "nac_vivo_murieron"
 [7] "mortinato_2"       "depresion_pp"      "intensidad_dpp"   
[10] "etnia"             "f2_s2_216_1"       "f2_s2_216_2"      
[13] "f2_s2_218_1_a"     "tiempo_dpp"        "f2_s5_504a_1"     
[16] "f2_s5_504b_1"      "f2_s5_504c_1"      "f2_s5_504d_1"     
[19] "f2_s5_504e_1"      "f2_s5_504f_1"      "f2_s5_504g_1"     
[22] "f2_s5_504h_1"      "f2_s5_504i_1"      "f2_s5_504j_1"     
[25] "f2_s5_504k_1"      "est_civil"         "q_usted"          
[28] "q_pareja"          "f2_s4b_406_"       "lugar"            
[31] "form_parto"        "c_posparto"        "anios_esc"        
[34] "ingrl"             "planf"             "lingrl"           
[37] "lugarx1"           "lugarx2"           "regionx1"         
[40] "regionx2"          "regionx3"          "regionx4"         
[43] "intensidad_dppx1"  "intensidad_dppx2"  "intensidad_dppx3" 
[46] "tiempo_dppx1"      "tiempo_dppx2"      "tiempo_dppx3"     
[49] "tiempo_dppx4"      "tiempo_dppx5"      "medico"           
summary(data)
      area            empleo           region           edad      
 Min.   :0.0000   Min.   :0.0000   Min.   :1.000   Min.   :13.00  
 1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:1.000   1st Qu.:23.00  
 Median :1.0000   Median :0.0000   Median :2.000   Median :28.00  
 Mean   :0.6418   Mean   :0.4128   Mean   :1.841   Mean   :28.55  
 3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:2.000   3rd Qu.:34.00  
 Max.   :1.0000   Max.   :1.0000   Max.   :4.000   Max.   :49.00  
                                                                  
    t_hijos       nac_vivo_murieron  mortinato_2       depresion_pp   
 Min.   : 0.000   Min.   :0.00000   Min.   :0.00000   Min.   :0.0000  
 1st Qu.: 1.000   1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.0000  
 Median : 2.000   Median :0.00000   Median :0.00000   Median :0.0000  
 Mean   : 2.055   Mean   :0.03337   Mean   :0.02504   Mean   :0.2202  
 3rd Qu.: 3.000   3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.0000  
 Max.   :13.000   Max.   :1.00000   Max.   :1.00000   Max.   :1.0000  
                                                                      
 intensidad_dpp       etnia         f2_s2_216_1     f2_s2_216_2   
 Min.   :0.0000   Min.   :0.0000   Min.   :1.000   Min.   :1.000  
 1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:2.000   1st Qu.:1.000  
 Median :0.0000   Median :0.0000   Median :2.000   Median :1.000  
 Mean   :0.3317   Mean   :0.1057   Mean   :1.852   Mean   :1.325  
 3rd Qu.:0.0000   3rd Qu.:0.0000   3rd Qu.:2.000   3rd Qu.:1.000  
 Max.   :2.0000   Max.   :1.0000   Max.   :2.000   Max.   :8.000  
                                                   NA's   :14023  
 f2_s2_218_1_a     tiempo_dpp      f2_s5_504a_1    f2_s5_504b_1  
 Min.   :1.000   Min.   :0.0000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:3.000  
 Median :1.000   Median :0.0000   Median :3.000   Median :3.000  
 Mean   :1.485   Mean   :0.3921   Mean   :2.837   Mean   :2.849  
 3rd Qu.:2.000   3rd Qu.:0.0000   3rd Qu.:3.000   3rd Qu.:3.000  
 Max.   :2.000   Max.   :4.0000   Max.   :3.000   Max.   :3.000  
                                                                 
  f2_s5_504c_1    f2_s5_504d_1   f2_s5_504e_1    f2_s5_504f_1   f2_s5_504g_1  
 Min.   :1.000   Min.   :1.00   Min.   :1.000   Min.   :1.00   Min.   :1.000  
 1st Qu.:3.000   1st Qu.:3.00   1st Qu.:3.000   1st Qu.:3.00   1st Qu.:3.000  
 Median :3.000   Median :3.00   Median :3.000   Median :3.00   Median :3.000  
 Mean   :2.829   Mean   :2.82   Mean   :2.842   Mean   :2.78   Mean   :2.825  
 3rd Qu.:3.000   3rd Qu.:3.00   3rd Qu.:3.000   3rd Qu.:3.00   3rd Qu.:3.000  
 Max.   :3.000   Max.   :3.00   Max.   :3.000   Max.   :3.00   Max.   :3.000  
                                                                              
  f2_s5_504h_1   f2_s5_504i_1    f2_s5_504j_1    f2_s5_504k_1  
 Min.   :1.00   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:3.00   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000  
 Median :3.00   Median :3.000   Median :3.000   Median :3.000  
 Mean   :2.88   Mean   :2.858   Mean   :2.861   Mean   :2.882  
 3rd Qu.:3.00   3rd Qu.:3.000   3rd Qu.:3.000   3rd Qu.:3.000  
 Max.   :3.00   Max.   :3.000   Max.   :3.000   Max.   :3.000  
                                                               
   est_civil         q_usted          q_pareja       f2_s4b_406_   
 Min.   :0.0000   Min.   :0.0000   Min.   :0.0000   Min.   :1.000  
 1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:1.0000   1st Qu.:1.000  
 Median :0.0000   Median :1.0000   Median :1.0000   Median :1.000  
 Mean   :0.3132   Mean   :0.7248   Mean   :0.7794   Mean   :1.031  
 3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:1.000  
 Max.   :1.0000   Max.   :1.0000   Max.   :1.0000   Max.   :2.000  
                                                                   
     lugar          form_parto       c_posparto     anios_esc    
 Min.   :0.0000   Min.   :0.0000   Min.   :0.00   Min.   : 0.00  
 1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.00   1st Qu.: 9.00  
 Median :1.0000   Median :1.0000   Median :1.00   Median :13.00  
 Mean   :0.7353   Mean   :0.5646   Mean   :0.63   Mean   :11.57  
 3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:1.00   3rd Qu.:14.00  
 Max.   :1.0000   Max.   :1.0000   Max.   :1.00   Max.   :23.00  
                                                                 
     ingrl            planf            lingrl         lugarx1      
 Min.   :   0.0   Min.   :0.0000   Min.   :0.000   Min.   :0.0000  
 1st Qu.:   0.0   1st Qu.:0.0000   1st Qu.:0.000   1st Qu.:0.0000  
 Median :   0.0   Median :1.0000   Median :0.000   Median :0.0000  
 Mean   : 162.7   Mean   :0.6801   Mean   :2.093   Mean   :0.2647  
 3rd Qu.: 200.0   3rd Qu.:1.0000   3rd Qu.:5.303   3rd Qu.:1.0000  
 Max.   :3000.0   Max.   :1.0000   Max.   :8.007   Max.   :1.0000  
                                                                   
    lugarx2          regionx1         regionx2         regionx3     
 Min.   :0.0000   Min.   :0.0000   Min.   :0.0000   Min.   :0.0000  
 1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.0000  
 Median :1.0000   Median :0.0000   Median :0.0000   Median :0.0000  
 Mean   :0.7353   Mean   :0.3973   Mean   :0.3848   Mean   :0.1976  
 3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:0.0000  
 Max.   :1.0000   Max.   :1.0000   Max.   :1.0000   Max.   :1.0000  
                                                                    
    regionx4       intensidad_dppx1 intensidad_dppx2 intensidad_dppx3
 Min.   :0.00000   Min.   :0.0000   Min.   :0.0000   Min.   :0.0000  
 1st Qu.:0.00000   1st Qu.:1.0000   1st Qu.:0.0000   1st Qu.:0.0000  
 Median :0.00000   Median :1.0000   Median :0.0000   Median :0.0000  
 Mean   :0.02036   Mean   :0.7798   Mean   :0.1088   Mean   :0.1114  
 3rd Qu.:0.00000   3rd Qu.:1.0000   3rd Qu.:0.0000   3rd Qu.:0.0000  
 Max.   :1.00000   Max.   :1.0000   Max.   :1.0000   Max.   :1.0000  
                                                                     
  tiempo_dppx1     tiempo_dppx2     tiempo_dppx3      tiempo_dppx4   
 Min.   :0.0000   Min.   :0.0000   Min.   :0.00000   Min.   :0.0000  
 1st Qu.:1.0000   1st Qu.:0.0000   1st Qu.:0.00000   1st Qu.:0.0000  
 Median :1.0000   Median :0.0000   Median :0.00000   Median :0.0000  
 Mean   :0.7798   Mean   :0.1315   Mean   :0.03635   Mean   :0.0217  
 3rd Qu.:1.0000   3rd Qu.:0.0000   3rd Qu.:0.00000   3rd Qu.:0.0000  
 Max.   :1.0000   Max.   :1.0000   Max.   :1.00000   Max.   :1.0000  
                                                                     
  tiempo_dppx5        medico      
 Min.   :0.0000   Min.   :0.0000  
 1st Qu.:0.0000   1st Qu.:1.0000  
 Median :0.0000   Median :1.0000  
 Mean   :0.0307   Mean   :0.8533  
 3rd Qu.:0.0000   3rd Qu.:1.0000  
 Max.   :1.0000   Max.   :1.0000  
                                  
modelo_logit2 <- glm(depresion_pp ~ lingrl + anios_esc + edad + t_hijos +est_civil +lugar + etnia + area + q_pareja + form_parto + mortinato_2 + form_parto + c_posparto + empleo + f2_s2_216_1 + nac_vivo_murieron + tiempo_dppx2 + regionx4, 
                    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 12719  1356
       1   109  2267

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

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

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)

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.8846945