1 Resumen

En redes de distribución de agua potable digitalizadas en SIG (QGIS/PostGIS), la apariencia cartográfica no garantiza conectividad topológica adecuada para análisis cuantitativos. Este estudio piloto convierte redes por DMA a una representación como grafo y evalúa cuantitativamente su estructura para establecer una validación previa al análisis principal. Se analizaron cinco DMAs (CRS EPSG:32719), transformando nudos y válvulas en nodos y tuberías en aristas. Se compararon dos estados: A (red SIG convertida directamente a grafo) y B (grafo validado/corregido mediante depuración topológica en el dominio de grafos, incluyendo selección de componente principal). Se calcularon métricas estructurales: número de nodos, aristas, densidad, número de componentes conexas, porcentaje de nodos de grado 1 y longitud total. Se reportó estadística descriptiva (mediana e IQR) y se aplicó Wilcoxon pareado (α=0.05) como verificación piloto. En los DMAs con mayor inconsistencia, el procedimiento redujo componentes y estabilizó la conectividad, mostrando el valor del enfoque QGIS/PostGIS→Grafo como protocolo reproducible para validación cuantitativa por DMA y como base confiable para la etapa principal del estudio.

Palabras clave: grafos; QGIS; PostGIS; DMA; conectividad; calidad topológica; Wilcoxon.

2 Introducción

Los SIG permiten representar redes como capas georreferenciadas (líneas y puntos), pero pequeñas incongruencias geométricas (micro-separaciones, extremos no coincidentes, segmentos espurios) pueden afectar la conectividad analítica sin ser evidentes visualmente. La teoría de grafos formaliza la conectividad y permite cuantificar propiedades estructurales comparables por DMA. En consecuencia, es pertinente incorporar una validación cuantitativa previa basada en grafos antes de avanzar a modelación avanzada.

3 Objetivo

Objetivo general: Validar cuantitativamente la calidad topológica de redes por DMA mediante su conversión desde QGIS/PostGIS a grafos y el cálculo de métricas, incluyendo estadística descriptiva y verificación piloto con Wilcoxon pareado.

4 Metodología

Se trabajó con cinco DMAs exportados desde QGIS/PostGIS. Para cada DMA se construyó un grafo no dirigido:

Se consideraron dos estados:

Métricas analizadas: número de nodos, número de aristas, densidad, componentes conexas, porcentaje de nodos de grado 1 y longitud total.

Análisis estadístico: estadística descriptiva (mediana e IQR) por estado y Wilcoxon pareado (α=0.05) para comparar A vs B (piloto con n=5 DMAs).

5 Resultados

5.1 Carga de datos (CSV)

library(readr)
library(dplyr)
library(tidyr)
library(knitr)

metrics_all  <- read_csv("data/metricas_5DMA_AB.csv", show_col_types = FALSE)
wide         <- read_csv("data/tabla_5DMA_AB_delta.csv", show_col_types = FALSE)
diagnostico  <- read_csv("data/diagnostico_5DMA.csv", show_col_types = FALSE)
resumen_csv  <- read_csv("data/resumen_estados_5DMA.csv", show_col_types = FALSE)

metrics_all
## # A tibble: 10 × 8
##    dma   estado n_nodos n_aristas densidad n_componentes pct_grado1
##    <chr> <chr>    <dbl>     <dbl>    <dbl>         <dbl>      <dbl>
##  1 DMA01 A          543       651  0.00442             2       20.6
##  2 DMA01 B          535       628  0.00440             1       21.3
##  3 DMA02 A           92       100  0.0239              5       31.5
##  4 DMA02 B           88        96  0.0251              1       35.2
##  5 DMA03 A          151       176  0.0155              1       25.2
##  6 DMA03 B          151       174  0.0154              1       26.5
##  7 DMA04 A          118       125  0.0181              1       39.0
##  8 DMA04 B          118       124  0.0180              1       39.8
##  9 DMA05 A           45        47  0.0475              1       42.2
## 10 DMA05 B           45        47  0.0475              1       42.2
## # ℹ 1 more variable: longitud_total_m <dbl>

5.2 Tabla 1. Métricas por DMA y estado (A y B)

kable(metrics_all, digits = 4,
      caption = "Métricas topológicas por DMA en los estados A (original) y B (validado/corregido).")
Métricas topológicas por DMA en los estados A (original) y B (validado/corregido).
dma estado n_nodos n_aristas densidad n_componentes pct_grado1 longitud_total_m
DMA01 A 543 651 0.0044 2 20.6262 32109.184
DMA01 B 535 628 0.0044 1 21.3084 32079.499
DMA02 A 92 100 0.0239 5 31.5217 5772.750
DMA02 B 88 96 0.0251 1 35.2273 5765.743
DMA03 A 151 176 0.0155 1 25.1656 9473.718
DMA03 B 151 174 0.0154 1 26.4901 9470.653
DMA04 A 118 125 0.0181 1 38.9831 6578.788
DMA04 B 118 124 0.0180 1 39.8305 6577.888
DMA05 A 45 47 0.0475 1 42.2222 2748.221
DMA05 B 45 47 0.0475 1 42.2222 2748.221

5.3 Tabla 2. Cambios pareados (Δ = B − A)

kable(wide, digits = 4,
      caption = "Tabla pareada por DMA con métricas A, B y deltas (B − A).")
Tabla pareada por DMA con métricas A, B y deltas (B − A).
dma n_nodos_A n_nodos_B n_aristas_A n_aristas_B densidad_A densidad_B n_componentes_A n_componentes_B pct_grado1_A pct_grado1_B longitud_total_m_A longitud_total_m_B d_n_componentes d_pct_grado1 d_densidad d_longitud_m
DMA01 543 535 651 628 0.0044 0.0044 2 1 20.6262 21.3084 32109.184 32079.499 -1 0.6823 0.0000 -29.6849
DMA02 92 88 100 96 0.0239 0.0251 5 1 31.5217 35.2273 5772.750 5765.743 -4 3.7055 0.0012 -7.0071
DMA03 151 151 176 174 0.0155 0.0154 1 1 25.1656 26.4901 9473.718 9470.653 0 1.3245 -0.0002 -3.0651
DMA04 118 118 125 124 0.0181 0.0180 1 1 38.9831 39.8305 6578.788 6577.888 0 0.8475 -0.0001 -0.9000
DMA05 45 45 47 47 0.0475 0.0475 1 1 42.2222 42.2222 2748.221 2748.221 0 0.0000 0.0000 0.0000

5.4 Estadística descriptiva (mediana e IQR)

resumen <- metrics_all %>%
  group_by(estado) %>%
  summarise(
    n_dma = n_distinct(dma),
    med_componentes = median(n_componentes),
    iqr_componentes = IQR(n_componentes),
    med_pct_grado1  = median(pct_grado1),
    iqr_pct_grado1  = IQR(pct_grado1),
    med_longitud_m  = median(longitud_total_m),
    iqr_longitud_m  = IQR(longitud_total_m),
    .groups = "drop"
  )

kable(resumen, digits = 3, caption = "Estadística descriptiva por estado (mediana e IQR).")
Estadística descriptiva por estado (mediana e IQR).
estado n_dma med_componentes iqr_componentes med_pct_grado1 iqr_pct_grado1 med_longitud_m iqr_longitud_m
A 5 1 1 31.522 13.817 6578.788 3700.967
B 5 1 0 35.227 13.340 6577.888 3704.909

5.5 Verificación piloto: Wilcoxon pareado (A vs B)

w_comp <- wilcox.test(wide$n_componentes_B, wide$n_componentes_A, paired = TRUE, exact = FALSE)
w_g1   <- wilcox.test(wide$pct_grado1_B, wide$pct_grado1_A, paired = TRUE, exact = FALSE)
w_len  <- wilcox.test(wide$longitud_total_m_B, wide$longitud_total_m_A, paired = TRUE, exact = FALSE)

pvals <- data.frame(
  metrica = c("n_componentes", "pct_grado1", "longitud_total_m"),
  p_value = c(w_comp$p.value, w_g1$p.value, w_len$p.value)
)

pvals
##            metrica   p_value
## 1    n_componentes 0.3710934
## 2       pct_grado1 0.1003482
## 3 longitud_total_m 0.1003482
kable(pvals, digits = 4,
      caption = "P-values Wilcoxon pareado (A vs B) para métricas seleccionadas.")
P-values Wilcoxon pareado (A vs B) para métricas seleccionadas.
metrica p_value
n_componentes 0.3711
pct_grado1 0.1003
longitud_total_m 0.1003

5.6 Figura 1. Comparación pareada de componentes (A → B)

plot(wide$n_componentes_A, wide$n_componentes_B,
     xlab = "A: n_componentes", ylab = "B: n_componentes",
     main = "Cambio pareado por DMA (A→B)")
abline(0, 1)
text(wide$n_componentes_A, wide$n_componentes_B, labels = wide$dma, pos = 3)

5.7 Interpretación cuantitativa de resultados

A nivel descriptivo, el número de componentes conexas evidenció mejoras especialmente en los DMAs con fragmentación inicial. En general, el estado B presentó menor dispersión de componentes respecto al estado A, consistente con una conectividad más estable tras la validación. El porcentaje de nodos con grado 1 mostró variaciones por DMA, lo cual puede reflejar depuración de artefactos y cambios en la estructura local de ramificación. La longitud total mostró cambios pequeños, coherentes con correcciones localizadas y/o eliminación de segmentos espurios de baja longitud cuando aplica.

En la verificación piloto con Wilcoxon pareado (n=5), los p-values no alcanzaron significancia estadística a α=0.05, lo cual es esperable por el tamaño muestral reducido y el carácter exploratorio del piloto. Sin embargo, el procedimiento demuestra utilidad como protocolo cuantitativo reproducible por DMA previo a la etapa principal.

6 Discusión

El enfoque QGIS/PostGIS→Grafo permite transformar una representación cartográfica en un objeto analítico formal (grafo), donde la conectividad puede medirse y compararse entre DMAs. El estado A refleja la red “tal como está” en SIG, mientras que el estado B incorpora una validación/corrección orientada a conectividad y componente principal, requisito común para análisis posteriores basados en grafos. Este piloto confirma que el marco metodológico es implementable en R de forma reproducible y que genera indicadores cuantitativos trazables.

7 Conclusiones

  1. La conversión SIG→Grafo permite cuantificar calidad topológica por DMA mediante métricas estructurales.
  2. La comparación A vs B evidencia mejoras de conectividad especialmente en DMAs con fragmentación inicial.
  3. La estadística descriptiva y el Wilcoxon pareado aportan un marco cuantitativo básico para validación previa.
  4. El protocolo es reproducible y constituye una base para el desarrollo del tema principal.

8 Limitaciones y trabajo futuro

Este trabajo es un piloto con n=5 DMAs. Para robustecer inferencias se recomienda ampliar el número de DMAs y complementar con métricas adicionales (p. ej., distribución de grados, centralidades). También se puede integrar información hidráulica cuando esté disponible para análisis más avanzados.