Skip to content

imco/IRC

Repository files navigation

Repositorio de datos abierto “¿Cómo identificar focos rojos en contrataciones públicas?”

Este repositorio de datos abiertos contiene las bases de datos y el código necesario para replicar los resultados presentados en el reporte “Riesgos de eficiencia y corrupción en las contrataciones públicas en México”. Este reporte tiene como objetivo evaluar el desempeño, tanto en el nivel de eficiencia, como en la mitigación de corrupción, de la unidades compradoras que forman parte del sistema de compras públicas en México. Por su naturaleza, todos los documentos incluidos en el repositorio pueden ser utilizados y distribuidos libremente, sujeto a que declaren la autoría correspondiente.

Dentro del repositorio se encuentran tres apartados:

  1. notebooks: Todos los scripts necesarios para limpiar, procesar y analizar las bases de datos
  2. scraper: Documentación metodológica de cómo se llevó a cabo el web scraping de los procedimientos publicados en Compranet (https://compranet.funcionpublica.gob.mx/web/login.html)
  3. Datos procesados: Conjunto de bases de datos que se utilizaron para la obtención de resultados

Por un lado, los apartados uno y dos se componen completamente de código almacenado en la plataforma GitHub. Esta plataforma permite descargar o clonar todo el código en tu computadora, subir o crear nuevos archivos, proponer mejoras o correcciones al proceso, entre otros. Por otro lado, el conjunto de datos procesados se conservan en un servicio de almacenamiento en la nube provisto por Amazon.

Actualmente, un repositorio abierto es la mejor herramienta para publicar los resultados de un proyecto de esta índole debido a los siguientes beneficios:

Replicabilidad: Cualquier persona tienen acceso a todos los documentos que fueron utilizados para el proyecto, esto asegura máxima transparencia en la obtención de resultados

Cooperación: Github es una comunidad de programadores, en donde más de 20 millones de usuarios participan activamente ayudándose unos a otros. De esta forma, el código está expuesto a ser mejorado por cualquier persona de la comunidad, fomentando la colaboración y la transmisión de conocimiento entre usuarios

Fácil Acceso: Toda persona en cualquier parte del mundo puede acceder a los archivos en el repositorio. Por lo tanto, podrá ser empleado para fines de investigación por todos aquellos interesados en analizar el proceso de contrataciones públicas en México

Disponibilidad: La información está disponible en cualquier momento y en cualquier lugar, sin riesgo a que exista pérdida de información y que ya no pueda ser recuperada

Esta serie de beneficios permite expandir el alcance del proyecto a prácticamente todo el mundo, lo cual genera beneficios en materia de rendición de cuentas y transparencia en los procesos de contrataciones públicas en México. Asimismo, es un primer paso para impulsar el análisis continuo de estos procesos, elemento esencial para mitigar los riesgos de corrupción en el uso del presupuesto público.

Instalación

El análisis de este proyecto se realizó con python, para ejecutar el código de este repositorio se recomienda instalar miniconda.

Una vez instalado, es recomendable crear un ambiente nuevo de python 3.6.

$ conda create -n compranet python=3.6

Ahora es necesario activar el ambiente:

$ conda activate compranet

Para finalmente instalar las dependencias (la bandera --editable te permite hacer cambios al vuelo, p.ej. editar features):

$ pip install --editable .

Las dependencias que instalará el script están enlistadas en setup.py; incluyen: dask para cómputo paralelizable, numpy y pandas para manejo de dataframes, matplotlib para gráficas, entre otros.

Prueba tu instalación corriendo las pruebas unitarias (ver siguiente sección Tests) y ejecutando Jupyter Notebook con el comando jupyter notebook. Este último comando abrirá en el navegador el ambiente Jupyter donde podrás encontrar las notebooks que tienen el proceso interactivo de ingeniería de datos y generación de indicadores (ver sección v2.0).

Tests

El proyecto incluye un set de pruebas unitarias que se pueden correr con pytest.

Dependencias de sistema

  • python 3+
  • libsnappy

v1.0

Datos procesados

Para calcular los features de cada concepto se requieren las siguiente tablas:

Cómo crear las score cards

Para generar los features debes de correr el código que está en la notebook generacion_features.ipynb. Es necesario tener los datos procesados y ajustar las rutas dentro de la notebook.

Cuando se tengan los features calculados puedes usar el script crear_score_cards.py que está en la carpeta de scripts para generar los archivos pdf con las score cards, de igual manera tienes que ajustar las rutas de los datos procesados y features.

v2.0

La versión 2.0 integra nuevas fuentes y se enfoca en datos de 2018 y 2019.

Toda la documentación del proceso, así como sus fuentes se encuentran documentadas en la notebook IRC_v2.ipynb.