Modelo Logit

Author

Leslie

Leer datos

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

Ajustar el modelo logit

modelo_logit <- glm(depresion_pp ~ lingrl + anios_esc + edad + t_hijos + etnia + area + planf + f2_s5_504a_1 + f2_s2_216_1 + nac_vivo_murieron + f2_s5_504i_1 + form_parto + f2_s5_504f_1 + f2_s5_504h_1 + f2_s5_504j_1 + lugar + intensidad_dppx2,
                    data = data, family = binomial(link = "logit"))

Analisis

Para la ejecucion del modelo logit se ha considerado variables del INEC para determinar la probabilidad ente diversas combinaciones si una mujer en Ecuador tiene depresion postparto. Las variables independientes seleccionadas representan factores sociodemográficos, reproductivos y de salud, entre ellos: nivel de instrucción, edad, número total de hijos, pertenencia étnica, área de residencia, planificación familiar, experiencia de pérdida neonatal, forma de parto, e intensidad de los síntomas depresivos, entre otros, finalmente Estas combinación de predictores permite evaluar de manera la influencia de distintas condiciones sociales y clínicas sobre la presencia de depresión posparto.

  1. 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)

Calcular exactitud

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

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
library(ggplot2)
ggplot() +
  geom_line(aes(x = roc_logit$specificities, y = roc_logit$sensitivities), color = "purple") +
  geom_abline(linetype = "dashed", color = "black") + 
  labs(title = "Curva ROC - Modelo Logit",
       x = "1 - Especificidad",
       y = "Sensibilidad") +
  theme_minimal()

Analisis

En la gráfica se puede observar el modelo Logit, el cual muestra un desempeño bajo como clasificador binario, donde la curva ROC está cerca de la diagonal de la línea purpura, lo que indica que el modelo no discrimina adecuadamente entre clases. También se puede analizar el área bajo la curva donde se visualiza que el estimado es bajo entre 0.55 y 0.6, es decir el modelo Logit no es efectivo para predecir la clase objetivo. Finalmente, la sensibilidad es alta solo a costa de una baja determinación.

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

Analisis

El resultado evidenciado es el reflejo de una dicriminacion excelente de 85.51% , lo cual permite determinar que el modelo ejecutado posee una alta probabilidad de clasificar correctamente a una mujer con depresión postparto frente a una que no la padece, lo cual representa un desempeño robusto y confiable.