Introducción Problema de investigación El dengue es un problema de salud pública global, pero la carga más crítica se concentra en los casos que progresan a dengue grave, por su mayor necesidad de hospitalización y mayor riesgo de desenlaces adversos. En Colombia, SIVIGILA registra notificaciones de dengue (evento 210) y dengue grave (evento 220) y permite analizar factores demográficos, sociales, territoriales y temporales asociados con mayor severidad.
Pregunta de investigación
¿Qué factores demográficos, sociales, territoriales y temporales se asocian con la probabilidad de dengue grave en Colombia (SIVIGILA 2018–2024) y qué tan bien un modelo estadístico puede clasificar dengue grave?
Objetivo general
Describir las notificaciones 2018–2024 de dengue (210) y dengue grave (220), estandarizar variables clave y explorar patrones temporales y territoriales relevantes para vigilancia.
Objetivos específicos
1.Realizar EDA (tipo de variables, faltantes, frecuencias y estadística descriptiva).
2.Estandarizar edad a años y depurar registros según calidad (AJUSTE 6 y D).
3.Describir comportamiento temporal (año/semana) y territorial (departamento) diferenciando 210 vs 220.
4.Identificar semanas con mayor notificación por año y explorar patrones útiles para vigilancia.
## Archivos cargados: 14
## [1] "Datos_2018_210.xls" "Datos_2018_220.xls" "Datos_2019_210.xlsx"
## [4] "Datos_2019_220.xls" "Datos_2020_210.xlsx" "Datos_2020_220.xls"
## [7] "Datos_2021_210.xls" "Datos_2021_220.xls" "Datos_2022_210.xlsx"
## [10] "Datos_2022_220.xls" "Datos_2023_210.xlsx" "Datos_2023_220.xlsx"
## [13] "Datos_2024_210.xlsx" "Datos_2024_220.xlsx"
##
## Conteo por año (archivo) y evento (post-filtro AJUSTE):
## # A tibble: 14 × 3
## year_file event_file n
## <int> <int> <int>
## 1 2018 210 43652
## 2 2018 220 519
## 3 2019 210 123641
## 4 2019 220 1348
## 5 2020 210 76419
## 6 2020 220 862
## 7 2021 210 49325
## 8 2021 220 940
## 9 2022 210 65691
## 10 2022 220 1340
## 11 2023 210 126411
## 12 2023 220 1721
## 13 2024 210 309627
## 14 2024 220 3016
## Filas df_std: 804512 | Columnas: 86
## Conteo por año y evento:
## # A tibble: 14 × 3
## ano_std event_file n
## <int> <int> <int>
## 1 2018 210 43652
## 2 2018 220 519
## 3 2019 210 123641
## 4 2019 220 1348
## 5 2020 210 76419
## 6 2020 220 862
## 7 2021 210 49325
## 8 2021 220 940
## 9 2022 210 65691
## 10 2022 220 1340
## 11 2023 210 126411
## 12 2023 220 1721
## 13 2024 210 309627
## 14 2024 220 3016
##
## Rangos año y semana:
## # A tibble: 1 × 4
## min_ano max_ano min_sem max_sem
## <int> <int> <int> <int>
## 1 2018 2024 1 53
##
## Top 15 edades (control):
## # A tibble: 15 × 8
## edad uni_med edad_anios ano_std semana_std sexo_std event_file source_file
## <chr> <chr> <dbl> <int> <int> <fct> <int> <chr>
## 1 130 1 130 2018 43 M 210 Datos_2018_2…
## 2 124 1 124 2020 26 F 210 Datos_2020_2…
## 3 122 1 122 2020 43 M 210 Datos_2020_2…
## 4 122 1 122 2022 46 M 210 Datos_2022_2…
## 5 120 1 120 2018 10 M 210 Datos_2018_2…
## 6 120 1 120 2019 21 F 210 Datos_2019_2…
## 7 112 1 112 2018 14 F 210 Datos_2018_2…
## 8 110 1 110 2024 5 M 210 Datos_2024_2…
## 9 109 1 109 2018 37 F 210 Datos_2018_2…
## 10 108 1 108 2024 17 M 210 Datos_2024_2…
## 11 107 1 107 2020 12 M 210 Datos_2020_2…
## 12 107 1 107 2020 8 M 210 Datos_2020_2…
## 13 106 1 106 2023 3 F 210 Datos_2023_2…
## 14 106 1 106 2023 6 M 210 Datos_2023_2…
## 15 106 1 106 2024 13 F 210 Datos_2024_2…
##
## Proporción de NA en variables clave (%):
## # A tibble: 1 × 3
## na_edad_anios na_sexo na_depto
## <dbl> <dbl> <dbl>
## 1 0 0 0
## Filas: 804512 | Columnas: 86
## Distribución por evento (210/220):
## # A tibble: 2 × 3
## event_file n pct
## <int> <int> <dbl>
## 1 210 794766 98.8
## 2 220 9746 1.21
##
## Distribución por sexo:
## # A tibble: 2 × 3
## sexo_std n pct
## <fct> <int> <dbl>
## 1 M 412627 51.3
## 2 F 391885 48.7
##
## Distribución sexo x gravedad:
## # A tibble: 4 × 4
## sexo_std y_grave n pct
## <fct> <int> <int> <dbl>
## 1 M 0 407730 98.8
## 2 M 1 4897 1.19
## 3 F 0 387036 98.8
## 4 F 1 4849 1.24
##
## Descriptiva edad (años):
## # A tibble: 1 × 8
## n media mediana q1 q3 iqr min max
## <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 804512 22.0 16 9 30 21 0.00000380 130
##
## Outliers edad (IQR): 42918
## # A tibble: 42,918 × 8
## edad uni_med edad_anios ano_std semana_std sexo_std event_file source_file
## <chr> <chr> <dbl> <int> <int> <fct> <int> <chr>
## 1 130 1 130 2018 43 M 210 Datos_2018_2…
## 2 124 1 124 2020 26 F 210 Datos_2020_2…
## 3 122 1 122 2020 43 M 210 Datos_2020_2…
## 4 122 1 122 2022 46 M 210 Datos_2022_2…
## 5 120 1 120 2018 10 M 210 Datos_2018_2…
## 6 120 1 120 2019 21 F 210 Datos_2019_2…
## 7 112 1 112 2018 14 F 210 Datos_2018_2…
## 8 110 1 110 2024 5 M 210 Datos_2024_2…
## 9 109 1 109 2018 37 F 210 Datos_2018_2…
## 10 108 1 108 2024 17 M 210 Datos_2024_2…
## # ℹ 42,908 more rows
El Diagrama de Caja (Boxplot) muestra la distribución, dispersión y detección de valores atípicos (outliers) de la variable Edad (Años).
| Medida | Valor (Años) | Interpretación |
|---|---|---|
| Mínimo (Min) | 0 | Es el valor más bajo de la muestra. |
| Primer Cuartil (Q1) | 9.00 | El 25% de los datos son iguales o inferiores a esta edad. |
| Mediana (Q2) | 16.00 | El 50% de los datos son inferiores a esta edad (valor central). |
| Tercer Cuartil (Q3) | 30.00 | El 75% de los datos son iguales o inferiores a esta edad. |
| Máximo (Max) | 130.00 | El valor de edad más alto registrado en el conjunto de datos. |
## Top 5 Semanas Epidemiológicas (SE) con Mayor Número de Notificaciones por Año:
## # A tibble: 35 × 3
## ano_std semana_std notificaciones
## <int> <int> <int>
## 1 2018 50 1774
## 2 2018 51 1616
## 3 2018 49 1612
## 4 2018 52 1611
## 5 2018 47 1505
## 6 2019 27 3596
## 7 2019 28 3219
## 8 2019 29 3093
## 9 2019 24 3092
## 10 2019 25 3065
## # ℹ 25 more rows
El año 2024 no solo presenta sus picos de notificación a mitad de año, sino que también registra un volumen de notificaciones casi el doble del máximo observado en cualquier otro año del periodo analizado, marcando un aumento significativo en la actividad durante ese período, recordemos que en el 2020 y el 2021 se presento la pandoa por covid por cual causo una vigilancia baja para todo los EISP
## Casos Totales por Departamento (Ordenados de Mayor a Menor):
## # A tibble: 34 × 2
## departamento_ocurrencia total
## <chr> <int>
## 1 VALLE 164029
## 2 TOLIMA 67529
## 3 SANTANDER 66147
## 4 META 51886
## 5 BOLIVAR 46649
## 6 HUILA 46196
## 7 ATLANTICO 42052
## 8 ANTIOQUIA 37232
## 9 NORTE SANTANDER 30853
## 10 CORDOBA 28780
## # ℹ 24 more rows
####5. Modelo (Regresión logística)
##
## Resumen del modelo (m1):
##
## Call:
## glm(formula = y_grave ~ edad_anios + sexo_std + ano_std, family = binomial(),
## data = train)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -161.1386772 14.2102130 -11.340 < 0.0000000000000002 ***
## edad_anios -0.0054265 0.0007384 -7.349 0.0000000000002 ***
## sexo_stdF 0.0637518 0.0245561 2.596 0.00943 **
## ano_std 0.0776586 0.0070318 11.044 < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 71133 on 491868 degrees of freedom
## Residual deviance: 70954 on 491865 degrees of freedom
## AIC: 70962
##
## Number of Fisher Scoring iterations: 7
##
## Odds Ratios (OR) con IC95% (Wald):
## term
## 1 (Intercept)
## 2 edad_anios
## 3 sexo_stdF
## 4 ano_std
## OR
## 1 0.0000000000000000000000000000000000000000000000000000000000000000000001043186
## 2 0.9945881890498513566711835665046237409114837646484375000000000000000000000000
## 3 1.0658277870045238522322961216559633612632751464843750000000000000000000000000
## 4 1.0807536196959002250395087685319595038890838623046875000000000000000000000000
## CI_low
## 1 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000008363424
## 2 0.99314981216929543172966532438294962048530578613281250000000000000000000000000000000000000
## 3 1.01574441541664572952186063048429787158966064453125000000000000000000000000000000000000000
## 4 1.06596049774803058873828831565333530306816101074218750000000000000000000000000000000000000
## CI_high
## 1 0.0000000000000000000000000000000000000000000000000000000001301186
## 2 0.9960286491287577703701572318095713853836059570312500000000000000
## 3 1.1183806224373797899573901304393075406551361083984375000000000000
## 4 1.0957520367343729361664372845552861690521240234375000000000000000
El Modelo Logístico Base (\(oldsymbol{m1}\)) demostró que las variables sociodemográficas y temporales son predictores estadísticamente significativos de la gravedad del caso. El análisis de Odds Ratios (OR) se detalla a continuación:
| Término | OR (Odds Ratio) | IC95% Inferior | IC95% Superior |
|---|---|---|---|
| (Intercept) | 0.0000 | 0.0000 | 0.0000 |
| edad_anios | 0.9946 | 0.9931 | 0.9960 |
| sexo_stdF | 1.0658 | 1.0157 | 1.1184 |
| ano_std | 1.0808 | 1.0660 | 1.0958 |
Todos los Intervalos de Confianza del 95% para los predictores (IC95%) excluyen la unidad (1), validando la significancia estadística de estos hallazgos. ### 📈 Conclusión Integrada: Riesgos y Odds Ratios del Modelo Base (m1)
El Modelo Logístico Base (\(oldsymbol{m1}\)) demostró que las variables sociodemográficas y temporales son predictores estadísticamente significativos de la gravedad del caso. El análisis de los Odds Ratios (OR), que miden el cambio en el riesgo (o ‘chance’) de gravedad, se presenta a continuación :
| Término | OR (Odds Ratio) | IC95% Inferior | IC95% Superior |
|---|---|---|---|
| (Intercept) | 0.0000 | 0.0000 | 0.0000 |
| edad_anios | 0.9946 | 0.9931 | 0.9960 |
| sexo_stdF | 1.0658 | 1.0157 | 1.1184 |
| ano_std | 1.0808 | 1.0660 | 1.0958 |
La evaluación del riesgo revela tres hallazgos principales, confirmados por el hecho de que todos los IC95% excluyen el valor 1:
Estos resultados fundamentan la evaluación de riesgos, que será validada con las métricas de rendimiento en el conjunto de prueba (2024).
## ### 1. Diagnóstico y Evaluación Rápida del Modelo (m1)
##
## Pseudo-R2 (McFadden): 0.0025
##
## VIF (colinealidad):
## edad_anios sexo_std ano_std
## 1.002527 1.000010 1.002517
##
## --- Predicción y Métricas en Test (2024) ---
##
## AUC en 2024:
## # A tibble: 1 × 3
## .metric .estimator .estimate
## <chr> <chr> <dbl>
## 1 roc_auc binary 0.482
##
## Umbral óptimo (Youden) en test 2024: 0.01353698
##
## Matriz de confusión (test 2024) con umbral óptimo:
## Truth
## Prediction 0 1
## 0 14080 261
## 1 295547 2755
##
## Métricas (test 2024) con umbral óptimo:
## # A tibble: 6 × 3
## .metric .estimator .estimate
## <chr> <chr> <dbl>
## 1 accuracy binary 0.0538
## 2 sens binary 0.0455
## 3 spec binary 0.913
## 4 ppv binary 0.982
## 5 npv binary 0.00924
## 6 f_meas binary 0.0869
##
## --- Visualización Rápida de Rendimiento ---
El modelo (m1), que utiliza ‘edad_anios’, ‘sexo_std’ y ‘ano_std’, muestra un rendimiento predictivo extremadamente deficiente en la identificación del dengue grave (Clase 1).
La capacidad del modelo para discriminar entre clases es prácticamente nula.
| Métrica | Valor | Interpretación |
|---|---|---|
| AUC (Area Bajo Curva ROC) | 0.482 | Peor que el azar. El modelo tiene una capacidad de discriminación nula, clasificando peor que una selección aleatoria (0.50). |
| Sensibilidad (Sens) | 0.0455 (4.55%) | Rendimiento catastrófico en la detección de la clase positiva (dengue grave). Solo acierta 4.55% de los casos reales de dengue grave. |
| Especificidad (Spec) | 0.913 (91.3%) | Alto rendimiento en la identificación de la clase negativa (no dengue grave). |
| Accuracy (Precisión) | 0.0538 (5.38%) | Precisión global baja, fuertemente influenciada por la baja Sensibilidad. |
| Predicción/Verdadera | Clase Real 0 (No Grave) | Clase Real 1 (Grave) |
|---|---|---|
| Predicción 0 | 14,080 | 261 (Falsos Negativos) |
| Predicción 1 | 295,547 (Falsos Positivos) | 2,755 (Verdaderos Positivos) |
Análisis de la Matriz: El modelo está prediciendo una cantidad abrumadora de positivos (295,547 + 2,755), lo cual es un resultado de un umbral extremadamente bajo que clasifica a casi todos como “1” para intentar capturar la minoría de casos reales. A pesar de esto, la tasa de Falsos Negativos (261) sigue siendo alta en proporción a los Verdaderos Positivos, lo que se refleja en la baja sensibilidad.
El modelo m1 es inaceptable para la predicción de dengue grave. Se requiere: