Análisis geoestadístico de los 379,294 hechos de tránsito registrados por el INEGI (ATUS) en la Zona Metropolitana de Monterrey entre 2019 y 2024 — y un modelo que dice dónde va a pasar en 2027.
🖥️ Presentación interactiva · 📈 App del modelo · PDF de la presentación · Documentación técnica
Un pipeline de datos + notebooks (no una aplicación) que toma el censo de accidentes de tránsito del INEGI, lo recorta a los 18 municipios de la Zona Metropolitana de Monterrey, lo divide en una rejilla de 2,241 hexágonos de un kilómetro y responde tres preguntas: dónde se concentra el riesgo, a quién le cuesta más caro, y qué tan bien se puede anticipar.
Proyecto de la Semana de la Movilidad, por Angel Eduardo Luna, Jenaro Alcaraz, Roberto Pérez, Damián Yul Reynoso y Mateo Rodolfo Flores.
31 láminas en un solo archivo HTML de media megabyte, sin imágenes: los mapas, el calendario y las gráficas se dibujan en el navegador. Se abre con doble clic, funciona sin conexión y guarda la lámina en la URL.
→ Abrir en vivo, o local sin
conexión con docs/presentacion/index.html.
| Tecla | Qué hace |
|---|---|
← → espacio |
avanzar y retroceder |
O |
índice navegable |
N |
notas del presentador |
F |
pantalla completa |
Detalle de cómo está armada, qué representa cada mapa y cómo regenerarla en
docs/presentacion/README.md.
Para que esto no termine en una presentación: un mapa en vivo de los ~2,200 hexágonos de la ZMM, con el pronóstico de cada zona para 2027 y su incertidumbre. Se acerca hasta la esquina, se filtra por año, tipo de usuario y gravedad.
flowchart LR
A["data/raw/<br/>CSV + shapefile<br/>INEGI · ATUS 2019–2024"] -->|"consolidar-atus"| B[("atus_georreferenciado<br/>.parquet<br/>1.3M filas · nacional")]
B -->|"zona-atus"| C[("atus_zmm.parquet<br/>379K filas · ZMM<br/>18 municipios")]
C -->|"limpieza"| D[("atus_zmm_limpio.parquet<br/>+20 columnas derivadas")]
D --> E["notebooks/*.qmd<br/>análisis espacial,<br/>modelo jerárquico"]
D --> F["docs/presentacion/<br/>datos.json → index.html"]
E --> G["docs/*.pdf<br/>reporte técnico"]
style A fill:#F2F2F2,stroke:#2C2C2C,color:#2C2C2C
style B fill:#DCE9F2,stroke:#005991,color:#003153
style C fill:#DCE9F2,stroke:#005991,color:#003153
style D fill:#DCE9F2,stroke:#005991,color:#003153
style E fill:#FBF1EA,stroke:#B15E2E,color:#8B2C1A
style F fill:#FBF1EA,stroke:#B15E2E,color:#8B2C1A
style G fill:#F2F2F2,stroke:#2C2C2C,color:#2C2C2C
Python + uv, con una regla fija: nunca se escribe en data/raw/.
processed/ es borrable y regenerable con tres comandos:
uv sync
uv run consolidar-atus # raw/ → atus_georreferenciado.parquet (nacional)
uv run zona-atus # → atus_zmm.parquet (Zona Metropolitana de Monterrey)
uv run limpiar-atus # → atus_zmm_limpio.parquet (+20 columnas derivadas)El resto — estructura de carpetas, cómo se limpia el encoding, por qué ID
no es llave única, la identidad visual de las gráficas y todo lo que no es
obvio de estos datos — está en
docs/desarrollo.md.
INEGI, Accidentes de Tránsito Terrestre en Zonas Urbanas y Suburbanas (ATUS), 2019–2024. Censo, no encuesta: no estima, cuenta, a partir de los partes que levantan las policías de tránsito de cada municipio. inegi.org.mx/programas/accidentes







