library(haven)
data <- read_dta("Data1_R.dta")
View(data)Modelo Logit
Leer datos
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.
- 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.