Basqueminder: la herramienta para la optimización de políticas públicas vascas
Problema Inicial
Los técnicos de las entidades vascas cuentan con muchos datos y muy valiosos con los que tomar decisiones. Sin embargo, acceder y visualizar dichos datos es una tarea compleja, que muchos técnicos no tienen por qué saber hacer, lo que redunda en una menor cantidad de decisiones tomadas en base a datos.
Cuestiones Involucradas
- Extracción de Datos
- Visualización de Datos
Solución
Crear una herramienta que aglutina y permite visualizar de forma sencilla y práctica una gran cantidad de indicadores socioeconómicos, de tal forma que se facilita la toma de decisiones en base a datos.
Desarrollo del Proyecto Basqueminder: la herramienta para la optimización de políticas públicas vascas
BasqueMinder es el proyecto que presenté junto a mi compañeron Jon Osés para el concurso de datos abiertos del 2020 organizado por Open Data Euskadi. El reto consistía en crear una aplicación que, utilizando al menos una fuente de datos públicos de Euskadi, fuera una fuente de innovación y que genere valor para la sociedad. En este proyecto explicaré cuál fue el proceso que seguimos hasta llegar a la creación de BasqueMinder.
Creación de BasqueMinder: de Datos a Idea Innovadora
Tanto Jon como yo teníamos claro que, para tener oportunidades, deberíamos crear una aplicación que fuese útil y que, como es lógico, no estuviera ya disponible por la propia Administración Pública. Así pues, la primera fase del proyecto, consistió en dos cuestiones:
- Analizar las fuentes de datos que las Administraciones Públicas Vascas ofrecen.
- Analizar los servicios que, actualmente, la Administración Pública ofrece.
Este aspecto fue clave, ya que generamos varias ideas muy interesantes que, posteriormente, descubrimos ya estaban disponibles para el público general. Estas ideas incluyen, desde un dashboard para el seguimiento del Covid 19 (enlace) hasta un portal que permitiera mostrar el atractivo turístico de Euskadi (web). Así pues, indagando entre los datos que ofrece la herramienta, descubrimos que ofrecen muchísima información sobre indicadores municipales de sostenibilidad. Analizando los datos, vimos lo siguiente:
- Hay muchos, muchísimos datos de indicadores municipales de sostenibilidad.
- No existen servicios para poder consumir estos datos de forma fácil y sencilla.
- Son unos datos muy relevantes en la toma de decisiones de cara a las Políticas Públicas de los ayuntamientos.
Así pues, nos decimos a crear BasqueMinder.
BasqueMinder: la herramienta para la optimización de Políticas Públicas vascas
BasqueMinder es una herramienta que agrega más de 567.000 datos de 210 fuentes de datos públicas de Open Data Euskadi y las pone a disposición de los usuarios en 4 tipos de visualizaciones diferentes. De esta forma, estamos ofreciendo a los técnicos de instituciones públicas una herramienta que les facilita la toma de decisiones. Y es que, aunque hoy en día existen muchos datos públicos y de gran interés para los técnicos de las administraciones públicas, estos no son fácilmente consumibles si no se requieren de buenas habilidades de manipulación y visualización de datos. Con el objetivo de utilizar estos datos para tomar decisiones, se han creado cuatro visualizaciones diferentes, que permitirán realizar diferentes análisis con los que tomar decisiones. Y es que, BasqueMinder pone miles de datos con los que tomar decisiones a la palma de tu mano.
Encuentra Relaciones
El diagrama de dispersión permite conocer cómo están relacionadas dos variables. De esta forma, podemos encontrar indicadores que están relacionados con nuestro objetivo, de tal forma que podemos desagregar un problema complejo en diferentes indicadores más tácticos, accionables y, sobre todo, de impacto. Sin duda alguna, se trata de algo fundamental, ya que muchas veces los macroobjetivos fijados por los ayuntamientos suelen ser complejos y se ven influídos por muchos aspectos. Conocer qué variables influyen más en tu municipio para así poder tomas las decisiones correctas resulta fundamental.
Ranking de los Mejores
El gráfico de ranking permite clasificar los municipios de Euskadi (o de una provincia en concreto) para cualquiera de los 210 indicadores disponibles. De esta forma podemos comparar el valor de nuestro municipio con el global seleccionado y así saber si debemos mejorar o no. Además, este gráfico nos muestra qué municipios están obteniendo buenos resultados, para así poder replicar sus acciones y poder mejorar.
Descubre la Evolución
El gráfico de evolución nos permite comparar cómo ha cambiado una métrica a lo largo del tiempo en diferentes municipios. De esta forma podemos comparar si las medidas en un ámbito en concreto han surtido efecto o si lo han hecho las de otros municipios similares a nosotros.
Conoce tu Entorno
El mapa nos permite conocer qué valores tienen nuestros municipios cercanos para una métrica en concreto. Muchas veces, los municipios cercanos tienen una población similar, y unos hábitos parecidos, por lo que pueden ser una buena fuente de comparación, lo cual resulta imprescindible en la toma de decisiones.
Sin embargo, como es de esperar, llegar a este resultado o esta aplicación no fue inmendiata, hubo mucho trabajo de por medio. Todo este trabajo, lo concentramos principalmente en dos puntos: la extracción y limpieza de datos y la generación de la aplicación.
Creando BasqueMinder: extracción, limpieza y verificación de los Datos
Extracción de Datos
De cara a la extracción de datos, partíamos de dos ficheros JSON (como este) que son el índice a todos los datos públicos que ibamos a utilizar. La lectura no es directa, puesto que el JSON incluye los apartados callback, que harían romper nuestro código. Por tanto, tuvimos que crear un wrapper a la función fromJSON para poder leer el fichero correctamente. Hecho eso, leímos, cargamos y guardamos iterativamente todos los datos extraídos. Asimismo, consideramos que sería interesante poder visualizar toodos estos datos en forma de mapa. Así pues, como ya teníamos todos los datos descargados, obtuvimos los nombres de municipio de todos los muincipios de Euskadi. Con esto, usamos la API (pública también) Cartociudad para extraer programáticamente todos los datos geométricos de todos los municipios (fuente que ya había usado para el caso BlablaCar) En este proceso encontramos una cuestión princupal: no todos los nombres eran leídos por Cartociudad, por lo que teníamos un mapa incompleto. Esto es debido a que en Euskadi tenemos municipios con nombres en Euskera y Castellano o, simplemente, municipios que han cambiado de nombre recientemente. Por desgracia, los nombres no están estandarizados a nivel de Administraciones Públicas. En cualquier caso, por suerte, el missmatch no era muy grande, así que pudimos arreglarlo “a mano”, creando una tabla de consulta por si hubiera que realizar más extracciones. Asimismo, otro caso complicado fue la extracción de los datos de los JSON de cada indicador, ya que la estructura del JSON no es muy amigable (ejemplo). Este problema persistía bien usáramos R o usaramos Python. Por suerte, “descubrimos” la forma de extraer toda la información del JSON de forma relativamente sencilla.
Limpieza de Datos
Una vez extraídos los datos, ya teníamos todos los datos en bruto. Sin embargo, esos datos no nos servían para poder visualizarlos, y es que primero había que limpiarlos. Este proceso, por suerte, fue bastante sencillo, ya que los datos venían bastante limpios. Lo único que hicimos fue:
- Detectar valores anómalos: ciertos datos resultaban extraños/curiosos, como por ejemplo, tasas negativas. Esto podría ser bien por un error en la extracción, un problema de origen o, directamente, que no hubiera problema alguno. La labora fue identificar y comprobar que estos valores extraños, efectivamente, no eran resultados de una mala extracción.
- Identificar valores perdidos: ciertos indicadores cuentan con una gran cantidad de valores perdidos. Una vez más, hubo que revisar si esos valores perdidos eran, efectivamente, errores o si por el contrario faltaban en origen.
Verificación de los Datos
Con los dos pasos previos realizados, comenzamos a visualizar los datos a medida que creábamos la aplicación y las diferentes visualizaciones. En este sentido, cabe destacar que las propias visualizaciones nos sirvieron como herramienta para comprobar que los datos eran correctos. Y, para nuestra sorpresa, descubrimos que no era así: algunos en formato JSON eran incorrectos en origen. El error (aún existente) está originado porque el JSON entendía el punto del número, no como un separador de miles (intención), sino como una coma, eliminando el último dígito en todos los números. Esto se puede ver claramente al comparar el valor del indicador para Álava de 2002 en formato JSON (link) vs dato real (link). Esto nos obligó a tener que replantear la extracción de datos, que pasamos de hacerla de los archivos JSON a hacerla de los archivos CSV. Algo relevante es que, si nos dimos cuenta del error fue gracias a las visualizaciones de datos, donde las discrepancias eran importantes. Y es que siempre, además de analizar estadísticos, es importante visualizar los datos que estamos obteniendo para comprobar que son correctos. Una vez realizado el proceso previamente comentado, contábamos ya con datos fiables con los que crear las visualizaciones.
Creando BasqueMinder: creación de la aplicación
A la hora de crear la aplicación, teníamos muy claro cuál es el público objetivo de la misma: técnicos de las Administraciones Públicas. Al fin y al cabo, son quienes usarían una herramienta de optimización de políticas públicas. Estas personas, si bien tendrán un gran conocimiento en su área, no tienen por qué conocer diferentes tipos de visualizaciones y sus funcionamientos. Así pues, estaba claro que, sea cual sea la visualización que creásemos, debíamos realizar dos cosas:
- Explicar el funcionamiento de ese gráfico de tal forma que cualquier persona pueda entenderlo.
- Poner un ejemplo en el que se vea el potencial que contiene cada una de las visualizaciones.
Asimismiso, todos los gráficos deberían ser interactivos en varios sentidos, desde visualizar las (o las) variable(s) que elijamos, a centrarnos en una provincia o municipio en específico. De aquí, vimos claro que cada visualización debía contar con tres apartados:
- La explicación del gráfico y su utilidad.
- El gráfico en si mismo.
- Los filtros.
Además, en la medida de lo posible todo el contenido debería visualizarse en un misma página sin necesidades de scroll. Así, es como decidimos que el layout de las páginas de contenido debían contar con 3 columnas. Por otro lado, había que pensar en el onboarding de los usuarios: si accede una persona que no conoce la herramienta a la misma, ¿cómo sabe qué es lo que hace y todo lo que puede hacer? Así pues, decidimos que la página de destino fuera una página muy visual en la que de un vistazo se vea:
- Para qué sirve la aplicación.
- Todo lo que la aplicación utiliza (muchos datos, de muchas fuentes y en 4 visualizaciones).
Sin embargo, este segundo punto suponía un problema: mucho texto haría que la página de destino estuviera sobrecargada y perdiese “impacto”, haciendo que no fuese tan atractiva. Para solucionarlo, utilizamos un pequeño desarrollo que permite mostrar el texto dinámicamente. Por último, de cara a dar un mayor “empaque” a nuestra app, creamos un menú secundario en el footer, muy visual, que permitirera a los usuarios navegar de forma sencilla entre las diferentes visualizaciones con las que contamos. Esta parte se ha desarrollado usando la función [updateNavbarPage](https://shiny.rstudio.com/reference/shiny/0.14/updateTabsetPanel.html), la cual permite cambiar entre las distintas páginas de la navbarPage. Todo este proceso se ha realizado con R y Shiny, incluyendo CSS de cara a mejorar el aspecto de la página y Javascript para la generación de nuevas funcionalidades como el efecto del texto en la home.
Conclusiones
Sin duda alguna pensar un proyecto basado en datos es muy complicado. Más aún si ya existen muchas herramientas que utilizan algunos de los datos que tienes a tu disposición. En cualquier caso, a la hora de crear estas aplicaciones, siempre hay dos cosas que hay que tener en cuenta: el negocio y los clientes. Y es que, la aplicación únicamente será interesante si es de utilidad para el negocio que la estemos vendiendo (en este caso la Administración Pública). Además, el negocio únicamente podrá ver ese valor en tanto en cuanto las personas que utilizan la herramienta la entiendan y sepan utilizarla. Si bien esto es algo lógico, a la hora de crear aplicaciones y servicios basados en datos, las personas con conocimiento tendemos a lo contrario: incluir opciones y funcionalidades que consideramos útiles y entendibles para cualquiera pero que, en el fondo, solo entenderán las personas que ya saben de datos (la minoría). Espero os haya resultado interesante conocer cómo hemos pasado de una “hoja en blanco” a BasqueMinder, la herramienta para optimizar políticas públicas. Si os ha resultado interesante, os animo a votar a la aplicación de cara al concurso, lo cual podéis hacer aquí. ¡Nos vemos en la siguiente!