# Ajustar el modelo logitmodelo_logit <-glm(depresion_pp ~ lingrl + anios_esc + edad + t_hijos + etnia + area, data = data18, family =binomial(link ="logit"))summary(modelo_logit)
Call:
glm(formula = depresion_pp ~ lingrl + anios_esc + edad + t_hijos +
etnia + area, family = binomial(link = "logit"), data = data18)
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
3.2 Modelo PROBABILISTICO
ver código
# Ajustar el modelo probitmodelo_probit <-glm(depresion_pp ~ lingrl + anios_esc + edad + t_hijos + etnia + area, data = data18, family =binomial(link ="probit"))summary(modelo_probit)
Call:
glm(formula = depresion_pp ~ lingrl + anios_esc + edad + t_hijos +
etnia + area, family = binomial(link = "probit"), data = data18)
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
3.3 Estadísticos AIC y BIC para 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.
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 padescan de depresión post-parto.
EL área al ser una variable estadisticamente significativa, explican de las mujeres del area rural poseen el 1.84% de probabilidad de sufrir depresión post-parto
Edad, un año adicional en las mujeres ecuatorianas en promedio aumenta la probabilidad en 0.56% de sufrir depresión post-parto.
Una mujer indigena tiene mayor probabilidad de sufrir depresión post-parto (alrededor del 6.37%) .
A medida que aumenta la cantidad de hijos la probabilidad de tener depresión post-parto en 0.66%.
3.5 Cálculo de la matriz de confusión para LOGIT
ver código
#1. Obtener predicciones del modelo logitpred_logit <-ifelse(predict(modelo_logit, type ="response") >0.5, 1, 0)# Crear matriz de confusiónconf_matrix <-table(Predicho = pred_logit, Real = data18$depresion_pp)# Mostrar matriz de confusiónprint(conf_matrix)
Real
Predicho 0 1
0 12828 3623
ver código
# Calcular exactitudexactitud <-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 al modelo LOGIT es del 77.98%. Es decir, hay el 22.02% de variables que aun me pueden explicar el modelo.
3.6 Calcular la curva ROC para el modelo logit
ver código
roc_logit <-roc(data18$depresion_pp, predict(modelo_logit, type ="response"))
Setting levels: control = 0, case = 1
Setting direction: controls < cases
ver código
# Graficar la curva ROCggplot() +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()
ver código
# 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.
áreaurbano: Zona de residencia (1 = Urbana, 0 = Rural).
q_usted_tener el hijo: Si la mujer deseaba tener el hijo (1 = Sí, 0 = No).
q_pareja_terner el hijo: Si la pareja deseaba tener el hijo (1 = Sí, 0 = No).
f2_s4b_406_no: Control médico prenatal (1 = Sí, 0 = No).
f2_s2_216_1_no: Pérdida del hijo después del 5to mes de embarazo (1 = Sí, 0 = No).
regionx2: Pertencer a la región Costa (1 = Sí, 0 = No).
form_partoNormal: Tipo de parto (1 = Normal, 0 = Cesárea u otro).
nac_vivo_murieronSi: Si tuvo hijos/as que nacieron vivos y luego murieron (1 = Sí, 0 = No).
medico_malo: Calidad de la atención médica percibida (1 = Mala, 0 = Buena).
planfSi: Si la mujer planificó el embarazo (1 = Sí, 0 = No).
est_civilCasada: Estado civil (1 = Casada, 0 = Otra situación).
4.1.2Estimación del modelo LOGISTICO:
El modelo logit muestra que varias variables tienen una influencia estadísticamente significativa sobre la probabilidad del evento bajo estudio (presencia de depresión posparto). En particular, la edad de la madre tiene un coeficiente positivo y altamente significativo, lo que indica que, a mayor edad, aumentan los log-odds de experimentar el evento. De manera similar, pertenecer a un grupo étnico (ser mujer indigena) y vivir en ciertas áreas geográficas (área rural) incrementan significativamente las probabilidades del evento.
Por el contrario, variables como haber recibido atención médica (medico), residir en la región 2 (no pertenecero a la Región Costa), el tipo de parto (form_parto), planificación familiar (planf) y la variable pérdida de un hijo (f2_s2_216_1) muestran coeficientes negativos y altamente significativos. Esto sugiere que estas condiciones o características reducen las probabilidades (log-odds) del evento, lo que podría interpretarse como factores protectores o asociados a menor riesgo.
Un hallazgo notable es el fuerte efecto positivo de la variable “nac_vivo_murieron” (nacieron vivos y luego murieron), que sugiere que las mujeres que han perdido hijos vivos tienen una probabilidad significativamente mayor de experimentar el evento en cuestión. Esta asociación es la más pronunciada en el modelo.
Finalmente, otras variables como nivel educativo, estado civil, número de hijos y opinión de la pareja no resultaron estadísticamente significativas, por lo que no se puede concluir que tengan un impacto sistemático sobre las probabilidades del evento, al menos dentro del marco de este modelo.
ver código
library(dplyr)library(knitr)library(kableExtra)library(tibble)modelo_logit2 <-glm(depresion_pp ~ lingrl + anios_esc + edad + t_hijos + c_posparto + etnia + area + q_usted + q_pareja + f2_s4b_406_ + est_civil + f2_s2_216_1 + regionx2 + form_parto + nac_vivo_murieron + medico + planf,data = data18, family =binomial(link ="logit"))# Extraer coeficientes y otras estadísticas del resumen del modelotabla_coef <-summary(modelo_logit2)$coefficients %>%as.data.frame() %>%rownames_to_column(var ="Variable") %>%rename(Estimate = Estimate,Std_Error =`Std. Error`,Z_value =`z value`,P_value =`Pr(>|z|)` )tabla_coef <- tabla_coef %>%mutate(Significancia =case_when( P_value <0.001~"***", P_value <0.01~"**", P_value <0.05~"*", P_value <0.1~".",TRUE~"" ))tabla_coef %>%kable(digits =4, caption ="Resumen de Coeficientes del Modelo Logit",col.names =c("Variable", "Estimación", "Error Estándar", "Valor Z", "Valor p", "Signif.")) %>%kable_styling(full_width =FALSE, bootstrap_options =c("striped", "hover", "condensed")) %>%column_spec(6, bold =TRUE, color ="red") # pone en rojo y negrita la columna Significancia
Resumen de Coeficientes del Modelo Logit
Variable
Estimación
Error Estándar
Valor Z
Valor p
Signif.
(Intercept)
-0.1223
0.2043
-0.5986
0.5495
lingrl
-0.0077
0.0074
-1.0354
0.3005
anios_esc
-0.0012
0.0052
-0.2236
0.8231
edad
0.0279
0.0035
7.9701
0.0000
***
t_hijos
0.0073
0.0202
0.3635
0.7162
c_posparto
0.0274
0.0412
0.6645
0.5064
etnia
0.2990
0.0644
4.6451
0.0000
***
area
0.1015
0.0444
2.2885
0.0221
*
q_usted
-0.2073
0.0965
-2.1480
0.0317
*
q_pareja
-0.0808
0.0705
-1.1465
0.2516
f2_s4b_406_
-0.0889
0.1143
-0.7780
0.4366
est_civil
-0.0291
0.0446
-0.6518
0.5145
f2_s2_216_1
-0.6355
0.0504
-12.6028
0.0000
***
regionx2
-0.3746
0.0441
-8.4877
0.0000
***
form_parto
-0.2647
0.0413
-6.4119
0.0000
***
nac_vivo_murieron
1.5472
0.0929
16.6473
0.0000
***
medico
-0.1559
0.0536
-2.9068
0.0037
**
planf
-0.3766
0.1147
-3.2835
0.0010
**
4.1.3Estimación de los efectos marginales del modelo LOGISTICO:
Los resultados del modelo logit revelan que varios factores influyen significativamente en la probabilidad de desarrollar depresión postparto. El predictor más fuerte es haber perdido un hijo al nacer, que aumenta el riesgo en un 24.7%, mostrando el profundo impacto emocional de esta experiencia. La etnia y la edad también aparecen como factores de riesgo importantes, con incrementos del 4.8% y 0.45% respectivamente, lo que sugiere que ciertos grupos poblacionales y las mujeres de mayor edad podrían necesitar mayor apoyo psicológico. Por otro lado, variables relacionadas con la atención médica durante el parto y el seguimiento profesional muestran efectos protectores significativos, reduciendo el riesgo entre 2.5% y 6.0%, destacando la importancia de los servicios de salud materna.
Entre los hallazgos más relevantes se encuentra que la región de residencia tiene un efecto considerable, con una reducción del 6.0% en algunas zonas, lo que podría reflejar diferencias en el acceso a servicios o apoyo social. Sin embargo, otros factores como el nivel educativo, el estado civil o el número de hijos no mostraron una asociación estadísticamente significativa con la depresión postparto en este análisis. Esto indica que el riesgo de depresión postparto parece estar más relacionado con experiencias médicas traumáticas y características demográficas específicas que con factores socioeconómicos generales.
Los resultados subrayan la necesidad de implementar programas de prevención dirigidos especialmente a mujeres que han sufrido pérdidas perinatales, pertenecen a grupos étnicos vulnerables o son de mayor edad. Además, refuerzan la importancia de garantizar una atención médica de calidad durante el parto y el postparto, ya que esto aparece consistentemente como un factor protector. Estos hallazgos podrían ayudar a diseñar intervenciones más efectivas para reducir la incidencia de depresión postparto en poblaciones de riesgo.
ver código
library(margins)marg_logit2 <-margins(modelo_logit2)##Análisis (multiplicar *100)library(margins)library(knitr)library(kableExtra) # Para mejorar la tabla con formato HTML o LaTeX# Suponiendo que ya tienes calculados los efectos marginalesmarg_logit2 <-margins(modelo_logit2)resumen <-summary(marg_logit2)library(margins)library(knitr)library(kableExtra)library(dplyr)# Calcular efectos marginales, agregar significancia y mostrar en tabla elegantesummary(margins(modelo_logit2)) %>%mutate(Signif =cut(p, breaks =c(-Inf, 0.001, 0.01, 0.05, 0.1, Inf),labels =c("***", "**", "*", ".", " "))) %>%rename(Variable = factor,`Efecto Marginal`= AME,`Error Estándar`= SE,`Valor z`= z,`Valor p`= p ) %>%kable(caption ="Efectos marginales del modelo Logit con significancia",digits =4, format ="html") %>%kable_styling(bootstrap_options =c("striped", "hover", "condensed", "responsive"), full_width =FALSE)
Efectos marginales del modelo Logit con significancia
Variable
Efecto Marginal
Error Estándar
Valor z
Valor p
lower
upper
Signif
anios_esc
-0.0002
0.0008
-0.2236
0.8231
-0.0018
0.0014
area
0.0162
0.0071
2.2894
0.0221
0.0023
0.0301
*
c_posparto
0.0044
0.0066
0.6645
0.5064
-0.0085
0.0173
edad
0.0045
0.0006
8.0075
0.0000
0.0034
0.0056
***
est_civil
-0.0046
0.0071
-0.6518
0.5145
-0.0186
0.0093
etnia
0.0478
0.0103
4.6528
0.0000
0.0277
0.0679
***
f2_s2_216_1
-0.1016
0.0080
-12.7765
0.0000
-0.1172
-0.0860
***
f2_s4b_406_
-0.0142
0.0183
-0.7780
0.4366
-0.0500
0.0216
form_parto
-0.0423
0.0066
-6.4306
0.0000
-0.0552
-0.0294
***
lingrl
-0.0012
0.0012
-1.0355
0.3004
-0.0036
0.0011
medico
-0.0249
0.0086
-2.9087
0.0036
-0.0417
-0.0081
**
nac_vivo_murieron
0.2473
0.0144
17.1568
0.0000
0.2191
0.2756
***
planf
-0.0602
0.0183
-3.2858
0.0010
-0.0961
-0.0243
**
q_pareja
-0.0129
0.0113
-1.1466
0.2515
-0.0350
0.0092
q_usted
-0.0331
0.0154
-2.1488
0.0316
-0.0634
-0.0029
*
regionx2
-0.0599
0.0070
-8.5294
0.0000
-0.0736
-0.0461
***
t_hijos
0.0012
0.0032
0.3635
0.7162
-0.0051
0.0075
4.1.4Estimación del la matriz de confusión del modelo LOGISTICO:
La matriz de confusión muestra el desempeño del modelo Logit2 para predecir depresión postparto, con una exactitud global del 78.4%.
El modelo identificó correctamente 12,602 casos negativos (verdaderos negativos), lo que sugiere que es bastante bueno para reconocer a las mujeres que no desarrollarán depresión postparto. Sin embargo, solo detectó 289 casos positivos correctos (verdaderos positivos) frente a 3,334 falsos negativos, indicando que el modelo pasa por alto muchos casos reales de depresión postparto, clasificándolos erróneamente como negativos.
Los 226 falsos positivos representan mujeres que el modelo predijo incorrectamente como desarrollarían depresión postparto. La baja sensibilidad (capacidad para detectar casos positivos) es preocupante, ya que podría dejar sin atención a muchas mujeres que sí necesitan apoyo. La exactitud del 78.4% está principalmente impulsada por los aciertos en casos negativos, lo que sugiere que el modelo necesita mejoras para identificar mejor los casos positivos de depresión postparto.
ver código
library(knitr)library(kableExtra)# Obtener probabilidades predichasprobabilidades <-predict(modelo_logit2, type ="response")# Convertir a etiquetas 0/1 con umbral 0.5pred_logit2 <-ifelse(probabilidades >0.5, 1, 0)# Crear matriz de confusiónconf_matrix2 <-table(Predicho = pred_logit2, Real = data18$depresion_pp)# Calcular exactitudexactitud2 <-sum(diag(conf_matrix2)) /sum(conf_matrix2)# Convertir matriz a data frame para kableconf_df <-as.data.frame.matrix(conf_matrix2)# Agregar fila con exactitudconf_df_ext <-rbind(conf_df, "Exactitud"=c(round(exactitud2, 3), "", "")) # Ajusta si tu matriz tiene diferente tamaño
Warning in rbind(deparse.level, ...): El número de columnas del resultado, 2,
no es un múltiplo de la longitud del vector 3 del argumento 2
ver código
# Mostrar tablakable(conf_df_ext, format ="html", caption ="Matriz de Confusión del Modelo Logit2 con Exactitud") %>%kable_styling(full_width = F, bootstrap_options =c("striped", "hover", "condensed"))
Matriz de Confusión del Modelo Logit2 con Exactitud
0
1
0
12602
3334
1
226
289
Exactitud
0.784
4.1.5Estimación de la curva ROC del modelo LOGISTICO:
La Curva ROC mostrada representa la capacidad del modelo Logit2 para predecir correctamente si una mujer sufre o no de depresión postparto. La gráfica compara la tasa de verdaderos positivos (sensibilidad) con la tasa de falsos positivos (1 - especificidad) a diferentes puntos de corte del modelo.
En este caso, el valor de Área Bajo la Curva (AUC) es 0.666, lo que indica una capacidad de discriminación moderada. Esto significa que el modelo tiene aproximadamente un 66.6% de probabilidad de clasificar correctamente a una mujer con depresión postparto frente a una que no la tiene, escogidas al azar.
ver código
library(pROC)library(ggplot2)# Obtener probabilidades predichas (asegúrate de que esta línea NO esté comentada)probs <-predict(modelo_logit2, type ="response") # Crear objeto ROCroc_obj <-roc(response = data18$depresion_pp, predictor = probs)
Setting levels: control = 0, case = 1
Setting direction: controls < cases
ver código
# Extraer datos para ggplotroc_df <-data.frame(specificity =rev(roc_obj$specificities),sensitivity =rev(roc_obj$sensitivities))# Calcular AUCauc_value <-auc(roc_obj)# Graficar con ggplot2ggplot(roc_df, aes(x =1- specificity, y = sensitivity)) +geom_line(color ="blue", linewidth =1) +geom_abline(slope =1, intercept =0, linetype ="dashed", color ="grey") +labs(title ="Gráfica 1:",subtitle ="Curva ROC",x ="Tasa de Falsos Positivos (1 - Especificidad)",y ="Tasa de Verdaderos Positivos (Sensibilidad)",caption =paste("Área Bajo la Curva AUC =", round(auc_value, 3)) ) +theme_minimal() +theme(plot.title =element_text(face ="bold"),plot.caption =element_text(hjust =0, size =14) )
4.1.6Conclusión:
Al comparar el AUC de 0.666 con un valor de 0.587, podemos observar diferencias importantes en la capacidad predictiva de los modelos. El valor de 0.666, aunque moderado, muestra una discriminación significativamente mejor que el modelo con AUC de 0.587, el cual se acerca peligrosamente al nivel de azar (0.5). Esta comparación revela que el primer modelo tiene un 7.9% más de precisión para distinguir entre casos positivos y negativos de depresión postparto.
El modelo con AUC de 0.587 presenta serias limitaciones, ya que apenas supera en 8.7 puntos porcentuales la clasificación aleatoria. Este bajo desempeño sugeriría que casi no existe capacidad predictiva relevante, haciendo cuestionable su aplicación práctica. En contraste, el modelo con AUC de 0.666, si bien no óptimo, al menos muestra una capacidad discriminativa aceptable para servir como herramienta de tamizaje inicial. La diferencia del 13.5% en la precisión relativa (comparado con el azar) entre ambos modelos (0.666 vs 0.587) podría ser clínicamente significativa en contextos donde se requiera priorizar la identificación de casos de riesgo.
Estos resultados comparativos refuerzan la necesidad de mejorar ambos modelos, particularmente el de menor desempeño. El modelo con AUC 0.587 probablemente requiere una revisión completa de sus variables predictoras, mientras que el de 0.666 podría beneficiarse de ajustes más finos. La brecha entre ambos valores también resalta la importancia de evaluar múltiples métricas de desempeño al comparar modelos predictivos en salud mental, donde incluso mejoras aparentemente modestas pueden tener impacto clínico relevante.