Detección temprana de anomalías en la Contratación pública de emergencia
Dentro de la contratación pública el fin de los procesos corruptos es dirigir los contratos favoreciendo a un ofertarte en particular sin ser detectado.
Existen varias formas en que esto se realiza, sin embargo en esta presentación nos enfocaremos en el caso de anomalías en precios unitarios de insumos y cómo podemos transparentar los procesos y colaborar para una detección temprana.
Al momento de realizar cualquier análiss, definir la fuente de datos es importante considerando que esa data corresponderá la “verdad absoluta” del análisis.
Durante el Dataton actual, los organizadores incentivaron el uso de los datos publicados por la Sercop en: https://portal.compraspublicas.gob.ec/sercop/datos_abiertos/, los cuales son archivos descargables .json.
Sin embargo, nosotros quisimos ir un paso más atrás y dudar de la información del archivo y realizar un crawler que permita extraer los datos mostrados para cada resolucion de emergencia en el portal https://portal.compraspublicas.gob.ec/sercop/.
Este paso también se realizó debido a que los archivos descargables en la plataforma de datos abiertos aunque bastante útiles, están incompletos a comparación de la información desplegada en el portal de compras públicas. Información primordial como los precios unitarios por insumos así como la provincia y cantón de la contratación no se encuentran entre los datos abiertos pero pudimos extraerlos a través de nuestro crawler. Además las descripciones de los bienes/obras/servicios estaban recortadas.
Si deseas conocer más acerca de nuestro crawler puedes leer el siguiente artículo: https://medium.com/%40amutayEC/data-crawling-la-plataforma-de-compras-p%C3%BAblicas-del-ecuador-8f8703633d83
Caso Mascarillas N95
Para demostrar un posible proceso de como podemos proceder con una detección temprana decidimos redactar el caso para las compras de mascarillas N95 por las contrataciones de emergencia en el 2020.
Para esto procesamos todos los contratos de emergencia de este año hasta la fecha actual y obtuvimos la lista completa de compras por producto.
De aquí nos enfocamos en extraer la información relevante como la descripción del item, la cantidad de compra en el contrato, la categoría CPC en la que se encuentra el insumo, el tipo de unidad y el precio unitario.
Para esta primera iteración realizamos el filtro para obtener los contratos que contienen el item de “mascarillas N95” con el uso de un regex simple.
Cómo podemos observar en el siguiente snapshot, existen un amplio rango de descripciones para un mismo producto, lo que dificulta una comparación manual eficiente. De igual manera podemos observar en la columna categoría, los CPC (Clasificación Central de productos) de compras públicas asignados también varían considerablemente.
Una vez que extraemos los productos relacionados a nuestra búsqueda, podemos proceder a analizar la distribución del precio unitario de este tipo de mascarilla dentro de todos los procesos pasados de contratación y facilmente calcular la media (4.32) y desviación estándar (1.79).
De la misma forma podemos ocupar herramientas como el box-plot que es simple pero efectivo para la visualización de anomalías. Su linea intermedia muestra donde esta ubicada la mediana y a sus lados se encuentran sus cuartiles. El borde exterior muestra el rango de los datos no atípicos, y los puntos externos son considerados anomalías.
Este boxplot a la izquierda es una representación gráfica de los precios unitarios de las mascarillas N95 en nuestro análisis. Como podemos observar existen casos en los cuales los precios unitarios se encuentren fuera del rango.
Esto pueden alertarnos tempranamente de las contrataciones que necesiten una revisión más profunda tanto por que es probable que el insumo este con sobreprecio o con valores erroneos.
Caso Incongruencia de la información
Al tener dos fuentes de información que en teoría deben ser iguales, realizamos un análisis comparativo con la siguientes preguntas:
- ¿Existen contratos que muestran en el portal de compras públicas y no en el archivo json de datos abiertos?
- ¿De los contratos existentes en ambas fuentes, existen diferencia en campos claves?
Para el actual análisis, es importante mencionar que la data de nuestro crawler únicamente extrajo la data de las Resoluciones que fueron publicadas entre Marzo 17 y Octubre 12 de 2020.
Comparando la información de nuestro crawl del portal de compras públicas con el descargable de datos abiertos pudimos encontrar ciertas inconsistencias en la data. Aquí presentamos uno de los ejemplos es una adjudicación con diferentes montos:
Conclusión
En este análisis preliminar pudimos observar la complejidad de analizar anomalías en precios unitarios manualmente y cómo el uso del procesamiento de datos puede ayudarnos a dar alertas tempranas.
También dado la gran diversidad de descripciones para los diferentes productos proponemos la utilización de herramientas de NLP (Procesamiento de Lenguaje Natural) para intentar eliminar la ambigüedad de registros que corresponden a los mismos insumos.
Por otro lado queremos enfatizar la importancia de mantener una fuente de datos abiertos completa, eficiente e integra.
En futuras iteraciones queremos enfocarnos en facilitar este pipeline como una herramienta ciudadadana para automatizar este proceso.