Universidad de los Andes
Facultad de Ingeniería
Departamento de Ingeniería de Sistemas y Computación
Proyecto de Grado
Civis Sum: Herramienta de analítica visual sobre la
representación ciudadana en Colombia
Presentado por:
Juan Pablo Rocha, Nicolás Moreno y Andrea Beltrán
Códigos: {201611835, 201615907, 201423144}
Asesor:
José Tiberio Hernández
Grupo IMAGINE (I+D+i en Computación Visual)
Bogotá, Colombia
Julio 2020
2
Tabla de contenido
1. Introducción: 5
2. Antecedentes: 7
3. Propuesta: 8
4. Objetivos: 9
4.1. Objetivo General: 9
4.2. Objetivos Específicos: 9
5. Manejo de los datos disponibles: 10
5.1. Observatorio de la Democracia: 10
5.1.1. Apropiación de la base de datos: 10
5.1.2. Procesamiento de los datos: 11
5.1.3. Creación de archivos JSON 13
5.2. Congreso Visible: 16
5.2.1. Apropiación de la base de datos: 16
5.2.2. Procesamiento de los datos 17
5.2.3. Creación de archivos JSON 20
6. Diseño de Ingeniería: 22
6.1. Arquitectura: 22
6.2. Librerías e Implementación: 24
6.2.1. D3 JS: 24
6.2.2. Vega-Lite JS: 26
6.2.3. JQuery JS: 28
6.2.4. Bootstrap JS/CSS: 29
6.2.5. Slim Select JS: 29
7. Desarrollo de Front-end y Experiencia de Usuario: 29
7.1. Visualización de datos: 30
7.2. Conclusiones Cualitativas: 33
8. Evaluación: 35
9. Resultados: 36
10. Conclusiones: 36
10.1. Observatorio de la Democracia: 36
10.2. Congreso Visible: 37
11. Anexos 38
11.1. Observatorio de la Democracia: 38
11.2. Congreso Visible: 38
12. Referencias: 51
3
“La soberanía reside exclusivamente en el pueblo, del cual
emana el poder público. El pueblo la ejerce en forma directa
o por medio de sus representantes, en los términos que la
Constitución establece.”
Constitución Política de Colombia, 20 de julio de 1991, Artículo 3ro.
4
1. Introducción:
Colombia a partir de la Constitución de 1991, estableció al país como un Estado
Social de Derecho, bajo el cual se contemplaron varios mecanismos de participación
ciudadana, mediante los cuales, los ciudadanos pueden ejercer el derecho a participar del
poder político, lo anterior acorde a la definición de Democracia, que en palabras del Council
of Europe (s. f.) es un estilo de gobernanza que le da el poder al pueblo y su voluntad. Por lo
anterior, por medio de mecanismos como el derecho al voto, el plebiscito, el referendo, la
consulta popular, el cabildo abierto, la iniciativa legislativa y la revocatoria del mandato, los
ciudadanos colombianos pueden demostrar sus intereses a partir del ejercicio y control del
poder político, de acuerdo con artículo 40 de la Constitución Política de Colombia,
Registraduría Nacional del Estado Civil. (s. f.).
Este proyecto de grado persigue la conexión entre los intereses de los ciudadanos
colombianos y la actividad legislativa de sus representantes, específicamente de los elegidos
para ocupar los cargos políticos en el Congreso de la República (Senado de la República y
Cámara de Representantes). El Congreso de la República, es un cuerpo colegiado de tipo
bicameral que lo conforman miembros con voz y voto de manera igualitaria, la primera
cámara alta, el Senado de la República, está conformado por 102 senadores, 100 de ellos son
elegidos por voto popular en todo el territorio nacional, los dos restantes, corresponden a la
representación de grupos indígenas por circunscripción especial. Por otra parte, la Cámara de
Representantes, actualmente cuenta con 166 representantes, en el cual 161 son elegidos
territorialmente por departamentos y por el Distrito Especial, los 5 restantes corresponden a 2
curules para comunidades afrodescendientes, dos para representación de colombianos
residentes en el exterior y uno para las comunidades indígenas, Congreso Visible (2018).
5
De acuerdo con contexto participativo, democrático y representativo que se establece
en la República de Colombia, la representación ciudadana se podrá definir como: El acto
mediante el cual el gobernante (Congresista de la República) actúa en nombre de un
representado (Ciudadanos Colombianos) para satisfacer los intereses de este. Por atribución
de la Constitución, el representado puede controlar y exigir al gobernante responsabilidades
por medio de mecanismos de participación ciudadana. Con lo anterior, es importante aclarar
también, que la representación ciudadana de forma más estricta es política, por ende, la
inclusión de los términos representación y afinidad políticas. La representación política hace
alusión a que los representantes están en el deber de actuar con responsabilidad en cuanto a
los intereses de los ciudadanos que los eligieron, obedeciendo las normativas, leyes y la
constitución de la República, por lo que en este tipo de representación puede darse una
pérdida de confianza entre ciudadanos, partido político y representantes. Por otro lado, la
afinidad política se entenderá como el nivel de aceptación de las ideas o postulados sobre el
funcionamiento de las instituciones políticas del Estado y de una sociedad, que una ideología
política manifiesta y que busca perdurar en el tiempo.
Para el cumplimiento de este proyecto, la base teórica y metodológica para el manejo
de la información y sus resultados será Visual Analytics. Visual Analytics es la ciencia del
razonamiento lógico de la información a partir de interfaces visuales, usando estos métodos
hace posible sintetizar y concluir insights de grandes cantidades de datos ambiguos para que
mediante su procesamiento y visualización se pueda extraer información sobre problemas
complejos. Este campo se considera multidisciplinario al combinar áreas como: Técnicas de
Razonamiento Analítico, Técnicas de Representación e interacción visual, Representación y
transformación de los datos, Finalmente, producción, presentación y diseminación de los
resultados del análisis (Thomas & Cook, 2005). Mediante el uso del proceso de Visual
Analytics, fue posible cumplir las etapas de recolección y conocimiento de los datos
6
provenientes de Congreso Visible y El Observatorio de la Democracia para su
transformación, también, se construyeron modelos de datos para estructurar la información de
las bases de datos, asimismo, por medio del Mapping de los datos, crear las visualizaciones
para presentar los datos y brindar interacción con el usuario. Finalmente, fue posible obtener
insights y conocimiento a partir de los modelos y la visualización para entregar conclusiones
cualitativas de la representación estudiantil de acuerdo con la opinión de los ciudadanos y el
comportamiento legislativo de los congresistas de la República de Colombia.
Para poder generar resultados, durante la implementación del proyecto se propuso el
uso y procesamiento de datos originados de dos fuentes, cada base de datos posee una visión
útil para el proyecto de grado. En primer lugar, Congreso Visible, proyecto del Departamento
de Ciencia Política de la Universidad de los Andes el cual, “realiza un seguimiento y análisis
permanentes del Congreso de la República a través de la publicación de su actividad
legislativa, fortaleciendo y promoviendo la participación de la ciudadanía en procesos de
exigencia de rendición de cuentas a sus elegidos.” (Congreso Visible, s. f.). Para el proyecto,
se usó la información sobre los proyectos de ley que fueron parte del historial legislativo del
Congreso de la República a partir del año 2006 con un aproximado de 404.000 datos
disponibles, estos proyectos de ley se entienden como: propuestas legales que se presentan a
la rama legislativa para su trámite y aprobación, las cuales son votadas y procesadas en varias
instancias según establece la Constitución, adicionalmente, estos proyectos pueden ser
propuestos por iniciativa popular, por el Gobierno de turno, los legisladores, entidades e
inclusos ser mixtas.
En segundo lugar, la siguiente fuente de información es la ofrecida públicamente por
el Observatorio de la democracia, el cual “es el centro académico de investigación y análisis
de opinión pública y de comportamiento político y social del Departamento de Ciencia
Política de la Universidad de los Andes, Desde hace más de una década se ha encargado de
7
realizar, en Colombia, el principal estudio de opinión pública del continente americano: El
Barómetro de las Américas.” (Observatorio de la Democracia. s. f.). Una de las actividades
más importantes de esta organización es el Barómetro de las Américas, una encuesta de
opinión pública realizada a ciudadanos desde el año 2004, generando muestras nacionales en
Colombia cada 2 años.
2. Antecedentes:
Para el año 2018, el profesor y co-asesor en este proyecto de grado, John Alexis
Guerra Gómez, inició un proyecto de Visual Analytics con los datos de Congreso Visible. En
este proyecto se muestra gráficamente las conexiones entre los senadores que han votado más
de n número de veces en común, siendo n un valor seleccionado por el usuario de la
herramienta (Guerra, 2018). Para lograr el objetivo, John Guerra utilizó un widget llamado
Navio, el cual es utilizado para explorar datos a gran escala (Guerra, 2017). Esta librería da la
posibilidad de resumir y navegar sobre los datos en cientos de miles de registros y docenas de
columnas de una manera fácil, intuitiva y visual, permitiendo procesar los datos con tres
sencillas interacciones, las cuales son: organizar, filtrar por rango y filtrar por valor. Con esta
librería se construyó la herramienta de visualización de datos para los patrones de votación de
senadores de Colombia, la cual se cita al inicio de este párrafo.
8
Figura 1: muestra de la utilización de Navio con los datos de Congreso Visible
Por otro lado, para el año 2018, un estudiante del profesor John Guerra llamado Juan
José Castro Varón, desarrolló junto al grupo de investigación de Computación Visual
IMAGINE y el equipo de Congreso Visible, un análisis en el que se ilumina los patrones de
votos pro y anti-gobierno del congreso, y cómo estos han cambiado entre los años 2006 y
2018 (Castro, 2018). En dicha herramienta se logra demostrar, bajo el formato de
Storytelling, la organización de los partidos y congresistas gobiernistas y antigobiernistas con
base en su apoyo a las iniciativas del gobierno, que se estarían efectuando en el cuatrienio
analizado.
Figura 2: muestra de la herramienta de Juan José Castro
3. Propuesta:
Civis Sum es la plataforma desarrollada durante este proyecto de grado, cuyo nombre
significa en latín “Soy Ciudadano”, cuyo objetivo principal es informar cuál es la
representación ciudadana del Congreso de la República, con base en las votaciones de los
congresistas para los proyectos de ley y los intereses de los ciudadanos durante los últimos 15
años. Por medio de elementos visuales, permitirá observar el comportamiento a partir de dos
puntos de vista: el Ciudadano y El Congresista, teniendo en cuenta años y periodos
9
legislativos (temporalidad), categorías de los proyectos de ley, categorías de las preguntas
realizadas por el Observatorio de la Democracia y finalmente, los congresistas y/o partidos
políticos. A partir de dicha información, Civis Sum mostrará conclusiones e insights como
resultado de una consulta general o específica, de esta manera, generar conocimiento sobre la
comparación entre los intereses de los ciudadanos y el comportamiento en las votaciones de
proyectos de ley de los congresistas y/o partidos políticos, que sea útil para el experto o
investigador de temas relacionados a las ciencias sociales y la representación ciudadana en
Colombia.
Con la información del Congreso de la República obtenida de Congreso Visible entre
los años 2006 al 2018, Civis Sum entregará insights del comportamiento legislativo de los
congresistas bajo las dimensiones de temporalidad y categorías específicas de proyectos de
ley. Teniendo en cuenta lo obtenido del Observatorio de la Democracia, y haciendo el uso de
más de dos millones de datos entre el 2004 al 2018, Civis Sum, procesa los datos de las
preguntas hechas en las encuestas teniendo en cuenta el año y la categoría de cada pregunta,
por lo que entregará insights de las respuestas de los ciudadanos y sus opiniones de forma
sencilla basándose en una consulta única. En general, Civis sum, plantea una herramienta que
hace uso de dos bases de datos grandes y complejas, para establecer conclusiones que
permitan contrastar la opinión de los ciudadanos contra el comportamiento legislativo de sus
representantes, con alta flexibilidad, permite que el usuario realice una consulta sobre
cualquier horizonte temporal de los últimos 15 años, cualquier congresista o partido político y
además, de elegir entre 82 categorías o temas diferentes bajo los cuales toda la información
de las bases de datos fueron etiquetados.
10
Figura 3: Página de portada de Civis Sum
4. Objetivos:
4.1. Objetivo General:
Civis Sum busca encontrar relaciones e insights entre las bases de datos de Congreso Visible
y el Observatorio de la Democracia, es decir, entre la actividad legislativa del Congreso de la
República y la opinión pública de los ciudadanos, para de esta manera brindar una
herramienta analítica con componentes visuales, gráficas y conclusiones cualitativas, que
apoye investigaciones planteadas por analistas o expertos de ciencia política alrededor del
tema de Representación Ciudadana en Colombia desde el 2006 hasta el 2018.
4.2. Objetivos Específicos:
- Presentar visualizaciones para la vista general de los datos acerca de los elementos
globales de cada base de datos: Proyectos de ley votados en el congreso durante los
últimos tres periodos legislativos, del 2006 al 2010, del 2010 al 2014 y del 2014 al
2018 y sobre las preguntas realizadas por Observatorio de la Democracia desde el
2004 hasta el 2018.
11
- Filtrar automáticamente la información planteada para el cumplimiento del objetivo
general, proveniente de las bases de datos de Congreso Visible y del Observatorio de
la Democracia teniendo en cuenta las siguientes dimensiones:
- Temporalidad: La información es visible en término de un año o varios años
en específico dados por el rango de 2004 al 2018.
- Tema o categoría: Los proyectos de ley y las preguntas provenientes de las
fuentes de información deben estar categorizados en 82 categorías comunes.
- Preguntas: De acuerdo con las preguntas hechas por el Observatorio de la
Democracia a la ciudadanía en sus muestras nacionales desde el 2004,
presentar las preguntas por tema y año.
- Congresistas o Partidos Políticos: Para entender en forma específica el
comportamiento legislativo del Congreso la información se mostrará para todo
el congreso en general, para uno o varios congresistas o para uno o varios
partidos políticos.
- Hacer consultas dinámicas bajo las dimensiones anteriormente mencionadas, sobre la
información legislativa y sobre la opinión ciudadana obtenidas de las dos fuentes
bases para el proyecto, para obtener insights o conclusiones cuantitativas y
cualitativas de interés y apoyar a las investigaciones de ciencia política, relacionadas a
los temas de representación ciudadana en Colombia.
- Ofrecer conclusiones cualitativas y cuantitativas que le de un panorama comparativo
al experto en Ciencia Política en cuanto a la conexión de los intereses de los
ciudadanos y sus representantes en el Congreso de la República en uso activo de la
información por medio de una consulta específica.
12
5. Manejo de los datos disponibles:
Teniendo en cuenta que el objetivo principal de este proyecto es juntar la información de dos
bases de datos completamente alejadas entre sí y generar conclusiones dicientes para un
experto analista de ciencia política, se muestra a continuación cuál fue el manejo que se le dio
a cada base de datos y cómo se consiguió una relación entre las mismas.
5.1. Observatorio de la Democracia:
5.1.1. Apropiación de la base de datos:
El primer paso de la apropiación de la base de datos fue tener reuniones en conjunto
tanto con Congreso Visible como con el Observatorio de la Democracia. Gracias a la ayuda
de Juan Camilo Plata obtuvimos dos conjuntos de datos. El primer conjunto contiene diversas
estadísticas y una versión general sobre la temporalidad y las preguntas realizadas en los
cuestionarios. El segundo, llamado “Colombia 2004 - 2018 v.1.3” contiene las respuestas de
dichas preguntas. Su formato original de este último es .dta y el rango de años para los dos
conjuntos de datos va del 2004 al 2018 con excepción de los años 2015 y 2017.
Para el primer conjunto de datos se extrajo solo la lista de preguntas que se han
realizado en cada uno de los cuestionarios, con sus respectivos códigos y en qué año se han
realizado. Para el perfilamiento de los datos se utilizó la herramienta KNIME. Para hacer uso
de dicha herramienta fue necesario convertir primero el archivo, que venía en formato .xlsx a
formato CSV. Al hacer el perfilamiento se obtuvo un total de 1564 preguntas, 95.5% de
registros con la pregunta realizada en los cuestionarios, 33.7% de preguntas sin tener un tema
asignado, 27.5% de datos en donde no estaba marcado si en cierto año se había realizado
cierta pregunta.
13
Sobre el segundo conjunto de datos se realizó un perfilamiento desde la herramienta
Stata/SE el cual es un software para Estadística y Ciencia de Datos. Desde aquí se importo el
archivo .dta y, desde el menú Datos, se seleccionó la opción de “Describir datos (codebook)”
y la opción “Listar datos”.
A partir de la información recolectada desde estas opciones fue posible obtener la
información del tipo de dato de cada variable, el rango de valores, las diferentes respuestas
que cada persona podía marcar dentro de la encuesta, número de ausencias, etc. Asimismo,
para ciertos valores numéricos se calcularon datos como la desviación estándar, percentiles,
media, entre otros. Se encontró que hay un total de 19,695 registros y que el tipo de dato más
común entre las variables es double. También, se halló un número alto de valores ausentes,
sin embargo, pudo ser posible concluir que dichos valores ausentes se debían a que en ese
año no se había realizado dicha pregunta.
Por otro lado, entre los datos se encontró que muchos estaban referenciados con las
siguientes etiquetas estándar:
- .a = No sabe
- .b = No responde
- .c = Inaplicable
- .z = No se le preguntó a este país o año
Había otras preguntas que tenían los siguientes tipos de escalas:
14
Figura 4: Tipos de Escalas en las encuestas del Observatorio de la Democracia
5.1.2. Procesamiento de los datos:
Para el primer conjunto de datos, se notó que el Observatorio de la Democracia había
realizado etiquetas con respecto a varias preguntas. Sin embargo, estas eran muy generales y
tenían varios datos ausentes. Por lo tanto, tomando como referencia las categorías que ya
estaban, se clasificó cada pregunta dentro de una etiqueta o subcategoría más específica con
el fin de facilitar el análisis y posterior comparación con los datos de Congreso Visible. Las
etiquetas son las siguientes:
Figura 5: Etiquetas creadas a partir de las preguntas del Observatorio de la Democracia
Posteriormente, se convirtió el archivo .dta llamado “Colombia 2004 - 2018 v.1.3” a
formato CSV desde Stata/SE y se exportó para continuar con su análisis por medio de la
herramienta llamada KNIME. La relación existente entre el primer conjunto de datos, de
15
ahora en adelante el archivo de preguntas, y el segundo conjunto de datos, de ahora en
adelante el archivo de respuestas, es un código único relacionado a cada pregunta. Por medio
de este código, fue posible, por medio de un script en Python, filtrar las preguntas que
estuvieran tanto en el archivo de preguntas como con el archivo de respuestas. Este filtrado
pudo quitar tanto las preguntas que estuvieran en el archivo de preguntas, pero no en el
archivo de respuestas y viceversa.
Con un nuevo archivo de respuestas más consolidado se pasó a la limpieza de dichos
datos. Gracias al perfilamiento se pudo observar las diferentes escalas que maneja el
Observatorio de la Democracia. Sin embargo, se notó que había escalas que no contenían un
número previo que marcara el inicio o el final de dicha escala. Por ejemplo, en la escala de 1
a 7, en donde 1 es Nada y 7 es Mucho, había respuestas de varias preguntas en donde no
había un uno o un siete que antecediera para marcar el inicio o final de dicha escala. Desde
KNIME se hizo la conversión de dichas respuestas, eliminando el número, para poder crear
más consistencia en los datos. Entre esta limpieza también se reemplazó los datos ausentes
con la etiqueta “.z”. De igual manera, las etiquetas “.a”, “.b” y “.c” se convirtieron a lenguaje
natural siguiendo el mismo estándar mostrado previamente.
Entre otros escenarios se encontró que había respuestas que estaban marcadas con
números, pero al momento de estudiar los cuestionarios dichos números correspondían a una
respuesta en lenguaje natural. Desde KNIME se hizo la conversión de dichas respuestas.
Finalmente, se encontró que había varios números que correspondían a la respuesta
“Inaplicable” o había respuestas de este estilo que marcaban “No aplicable”. Al no tener un
número estandarizado y ante la diversidad de dicha respuesta se buscó caso a caso para tener
un único tipo de respuesta y fuera más fácil su filtrado más adelante. Se decidió que todas las
respuestas que entraran en esta categoría se quedaran como “Inaplicable”.
16
Por último, se redactaron los nombres de las preguntas, desde el archivo de preguntas,
para que en lo posible fueran más cortas para un mejor acoplamiento a la herramienta, se
mejoró la ortografía, se completaron las preguntas que estaban incompletas con la ayuda de
los cuestionarios, y se eliminaron tanto de las preguntas como del archivo de respuestas
aquellas preguntas que dependían de otras preguntas. Estas últimas, dada su dependencia no
era posible redactarlas de tal manera que fueran entendibles puesto que la pregunta a la que
dependía no se encontraba en el archivo de preguntas.
Al final del procesamiento de datos se tenía un total de 907 preguntas. Desde el
archivo de respuestas, un total de 19.695 datos por pregunta, es decir, 17’863.365 datos en
total y, desde el archivo de preguntas, las 907 preguntas con su código, nombre de la
pregunta, etiqueta y los diversos años en donde se había realizado. Más adelante, se hizo a
versión mejorada de este último archivo la cual será descrita en la sección de creación de
archivos JSON.
5.1.3. Creación de archivos JSON
Se crearon dos archivos JSON. Uno llamado “2004-2018.json” que contuviera el
código de la pregunta (un identificador único para cada pregunta), el nombre de la pregunta
(la pregunta en sí realizada en los cuestionarios), el año correspondiente, el total de respuestas
realizadas sobre esa pregunta en ese año, el nombre de la respuesta (la respuesta en sí) y el
conteo de cada respuesta. El otro archivo se llamó “Preguntas.json” en donde se tiene el
código de la pregunta, el nombre de la pregunta, la etiqueta correspondiente a la pregunta (las
categorías presentadas previamente), los diferentes años en lo que se realizó y el total de años
en donde se realizó la pregunta.
Para el primer archivo en formato JSON se utilizó la herramienta KNIME. El primer
paso fue leer el archivo CSV de las respuestas, es decir, el archivo llamado “Colombia 2004 -
17
2018 v.1.3”. Cabe mencionar que había una columna cuyo código correspondía al año. Esto
significa que cada registro de este archivo tenía un año relacionado. Luego de leer el archivo,
se utilizó el nodo Row Filter para filtrar todas aquellas filas que estuvieran relacionadas con
el año seleccionado. En la siguiente imagen se ve un ejemplo de cómo funciona para el año
2004.
Figura 6: Filtrado realizado por año en KNIME
Después, se utilizó el nodo Statistics el cual arroja una tabla llamada “Tabla de
ocurrencias”. En dicha tabla, por cada fila procesada salen 3 nuevas filas: todos los valores
posibles encontrados en cada columna (donde cada columna a su vez corresponde a cada
pregunta), el conteo de las ocurrencias de cada valor y la frecuencia relativa. En Column
Filter se eliminó esta última fila puesto que no era relevante. Finalmente, el resultado se
escribió en un archivo CSV. A continuación, un ejemplo del proceso completo realizado para
el año 2004.
18
Figura 7: Proceso realizado en KNIME a través del año 2004
Una vez se realizó este mismo procedimiento para cada año, se creó un código en
Python (referenciado en Anexos como “datos-finales.py”) en donde, primero, leyera cada
archivo CSV creado desde KNIME. Luego, obtuviera la información necesaria para el
archivo “2004-2018.json” como, por ejemplo, el código de la pregunta o cada respuesta. Y,
posteriormente, filtrara todos aquellos datos en donde la respuesta estuviera marcada como
un “.z” o un “Inaplicable”. Desde aquí se realizó el conteo total de respuestas por pregunta y
se añadió un número al inicio sobre cada respuesta que perteneciera a un tipo de escala. Esto
permitió que, más adelante, se ordenaran de menor a mayor con excepción de las respuestas
“No sabe” y las respuestas “No responde” que se dejaron al final. Como último detalle, se
cambiaron las respuestas para que todos comenzaran en mayúsculas y finalmente se realizó la
creación del archivo con cada nuevo dato obtenido y procesado en el código de Python. Cabe
mencionar que para correr este script es necesario transponer los datos desde Excel y quitar el
“Count()” en las variables que lo contengan. Un ejemplo de una pregunta se muestra a
continuación:
Figura 8: Ejemplo de un objeto en el archivo “2004-2018.json”
Por otra parte, en el archivo de preguntas había varias casillas vacías. Sin embargo,
este representó un gran punto de partida para hacer esto mismo, pero por medio de un código
hecho en Python. Se realizó un procedimiento desde KNIME muy similar al presentado en la
creación del archivo “2004-2018.json” con la excepción de que en el nodo Column Filter
también se omitió la columna que tuviera el conteo de las ocurrencias de cada valor. Es decir,
19
solo se dejó los valores posibles encontrados en cada pregunta. La lógica de código consistía
en leer el archivo resultante de cada año de KNIME y, luego, determinar que si en la casilla
posterior había una respuesta marcada como “.z” seguida de una cadena vacía entonces en ese
año no se había realizado dicha pregunta. Con esto se creó un nuevo archivo actualizado en
donde 1 representaba que se había hecho esa pregunta en dicho año y 0 en los casos en que
no. Para ya la creación del archivo en formato JSON se convirtió el 1 por el año
correspondiente al que pertenecía. Por ejemplo, si marcaba 1 en la columna “2014” entonces
se cambiaba ese 1 por 2014. Con resultado, se obtuvo un archivo en formato JSON con el
código de la pregunta:
Figura 9: Ejemplo de un objeto en el archivo “Preguntas.json”
Se siguió esta estructura para que fuera más directo poder leer el año en que se había
o no se había realizado la pregunta y, eventualmente, fuera más rápida la lectura al momento
de leer el archivo desde el Front.
20
Figura 10: Diagrama de proceso para el manejo de los datos del Observatorio de la Democracia.
5.2. Congreso Visible:
La implementación de la herramienta y el manejo de los datos proveídos por
Congreso Visible, se fueron realizando en diversas fases a lo largo de todo el desarrollo. Cada
una de las fases descritas a continuación tiene un objetivo y un desarrollo explicado:
5.2.1. Apropiación de la base de datos:
Para esta fase preliminar se tuvieron varias reuniones con los encargados de Congreso
Visible: la directora del departamento de Ciencia Política de la Universidad de los Andes,
Laura Wills Otero y la coordinadora de Congreso Visible, Beatriz Helena Gil. Gracias a estas
reuniones se empezaron a estructurar y construir las ideas principales que constituyen lo que
es hoy Civis Sum.
Para lograr la apropiación de la base de datos, y debido a que los dos principales
contactos con esta iniciativa no tenían los conocimientos necesarios para indicar los métodos
de acceso a la misma, se optó por hacer una revisión al servidor en donde está desplegada la
21
página de Congreso Visible. Una vez realizada la revisión del servidor, en donde sólo se
encontraba el Back de la página, se recopiló la información que era relevante para el
cumplimiento de los objetivos propuestos y se determinó que lo ideal era utilizar los datos de
todas las votaciones de los proyectos de ley para los últimos 3 cuatrienios. Estos datos son los
mismos que se utilizan en la herramienta, nombrada en el numeral antecedentes, de nuestro
co-asesor John Guerra.
El número total de registros de las votaciones de los congresistas para cada proyecto
de ley de los últimos 3 cuatrienios es de 404,651. Cada registro consta de 9 atributos, los
cuales se muestran en la siguiente tabla:
Atributo Valor
tema_principal Tema principal del proyecto de ley al que
pertenece el voto - 43 temas en total
tema_secundario Tema secundario del proyecto de ley al que
pertenece el voto - 43 temas en total
congresista Nombre del congresista que realizó el voto -
669 congresistas en total
voto Tipo de voto que realizó el congresista: sí, no,
se abstuvo, no asistió
partido Nombre del partido al que pertenece el
congresista que realizó el voto - 54 partidos en
total
iniciativa Tipo de iniciativa a la que pertenece el
proyecto de ley al que pertenece el voto:
gubernamental, legislativa, mixta, popular y
otras entidades
fecha Fecha en la que fue realizado el voto del
proyecto de ley al que pertenece el voto
corporación Tipo de corporación asociada al proyecto de
ley al que pertenece el voto - 23 corporaciones
en total
legislatura Año legislativo que está asociado con el
proyecto de ley al que pertenece el voto - 12
22
años legislativos en total
5.2.2. Procesamiento de los datos
Los datos descritos en el numeral anterior estaban acogidos todos en un archivo de
valores separados por coma (CSV), por tal motivo, se optó por utilizar la herramienta de
minería de datos Knime como principal instrumento para el procesamiento de los datos
(KNIME Analytics Platform, 2006). Con esta plataforma desarrollada sobre la plataforma
Eclipse, se permite la construcción de nodos de procesamiento de datos de manera visual, en
donde cada nodo tiene una única tarea de procesamiento. A cada tarea se le establece los
parámetros necesarios para que se logre los resultados acordes al objetivo y que se utilizarán
en el siguiente nodo de la cadena.
Para este proyecto, se usaron alrededor de 100 nodos de procesamiento, los cuales se
muestran a gran escala en la imagen a continuación:
Figura 11: representación visual de los nodos de procesamiento
Para lograr relacionar los datos de Congreso Visible con los de Observatorio a la
Democracia, se puso sobre la mesa las 82 etiquetas que fueron recogidas de las preguntas del
Observatorio a la Democracia, y con base en estas etiquetas se empezaron a relacionar los
23
proyectos de ley. Debido a la gran cantidad de datos que se tenían para Congreso Visible, no
era viable asignar etiquetas a cada uno de los proyectos, así que se ideó una estrategia para
lograr relacionar cada voto a un proyecto de ley, que a su vez está relacionado a las etiquetas
anteriormente dichas. En primer lugar, se utilizaron los atributos de cada voto llamados
tema_principal y tema_secundario, y para todos los 404,651 registros de votos que se tenían,
se creó una nueva columna que contenía, para cada registro, un string nuevo con el tema
principal seguido del tema secundario. Esto facilitó en gran medida la asociación, puesto que
una vez realizado el join, se procedió a indexar cada uno de los registros creados y se les
asignó un número de identificación único, creando así el nuevo atributo llamado id_proyecto.
Como era de esperarse, al ser una tabla de votaciones a los proyectos de ley, el
atributo id_proyecto para cada voto podría ser repetido, por tal motivo se realizó el conteo de
proyectos que se tenían para los 404,651 datos y se determinó un total de 271 proyectos. Una
vez finalizado este proceso, seguía el procedimiento de relacionamiento con las etiquetas de
Observatorio de la Democracia. Para esta etapa, se recogieron los 271 proyectos que se
habían filtrado anteriormente, con su tema principal y secundario, y con base en esto, se
empezó a relacionar proyecto por proyecto con cada una de las etiquetas que serían afines a
este.
Finalizado el proceso de relacionamiento principal para las dos bases de datos, se
procedió con el filtrado de estos con la herramienta anteriormente presentada, Knime
(KNIME Analytics Platform, 2006). Antes que nada, se necesitaban tener datos primordiales
como congresistas, partidos, fechas (cuatrienios), entre otros; y para esto se crearon archivos
CSV nuevos que contenía cada una de estas especificaciones, asignando a cada congresista,
partido y cuatrienio su propio id único. Asimismo, se generaron todas las iniciativas de cada
uno de los proyectos, entre las cuales están gubernamental, legislativa, mixta, popular y otras
24
entidades; estas ayudan a que el profesional de Ciencia Política tenga en cuenta bajo qué
iniciativa se encuentra cada proyecto de una manera rápida y sencilla.
Por otro lado, un filtrado de datos de gran importancia para el cumplimiento del
objetivo de este proyecto de grado es el del conteo de los votos. Cada registro de los datos
obtenidos es un voto, así que cada congresista puede tener cientos o miles de registros. Para
solucionar esto y obtener una tabla con el conteo para cada tipo de voto de todos los
congresistas, se utilizó el nodo de Knime llamado pivoting, el cual convierte filas en
columnas según sean los parámetros de configuración de este. Para el caso específico de las
votaciones, se organizaron todos los congresistas de manera ascendente bajo los siguientes
patrones: en primer lugar, organizar ascendentemente el id del congresista, el cual está
organizado alfabéticamente; seguido del id del proyecto asociado el voto y finalizando con el
tipo de votación con su respectivo conteo de votos para cada congresista, dejando un
resultado como el que se muestra a continuación para cada uno de los votos:
Figura 12: tabla generada de los votos
Con esta tabla, se puede iniciar con el proceso de pivotado, creando una columna
nueva para cada tipo de votación y un único registro para cada congresista por proyecto,
logrando un resultado como el siguiente:
25
Figura 13: tabla de congresistas y conteo de votos
Una característica que también es muy importante para tener en cuenta, y que es de
interés primordial para los profesionales de Ciencia Política, es la discriminación por
cuatrienios. Para lograr esto se tuvo que corregir el formato de las fechas para los 404,651
registros, pasando de una fecha escrita de la forma d/MM/yy a una fecha con formato correcto
dd/MM/yyyy. Para lograr esto no bastaba con una búsqueda simple, sino que se tuvo que
implementar una búsqueda de expresión regular (Regex) para que sea válido con cualquier
tipo de fecha para todos los registros; se utilizaron dos búsquedas, una para el día y otra para
los años. Dichas expresiones se demuestra a continuación: (\d/) y (/[0-9]+/)([0-
9]+). Lo que hace realmente cada expresión es guardar en subgrupos, por medio de los
paréntesis, cada coincidencia: la expresión (\d/) guarda en el grupo 1 todos los dígitos de
una sola cifra que están a la izquierda de una barra diagonal, los cuales serían los días del 0 al
9; la expresión (/[0-9]+/) guarda en el grupo 2 todos los dígitos de cualquier número de
cifras que están entre dos barras diagonales, que serían todos los meses; y por último, la
expresión ([0-9]+) guarda en el grupo 3 todos los dígitos de cualquier número de cifras.
Una vez seleccionadas todas las fechas que deben ser corregidas, se corrige primero el grupo
1 (para que la segunda expresión no afecte a las fechas que tienen el formato dd) agregando
un 0 antes de este, con la siguiente expresión: 0$1, la cual significa que todas las fechas
quedan con el día correcto. Ahora, para los años se deja de una manera similar: $220$3, esto
26
indica que el grupo 2 irá seguido de un 20 y luego el grupo 3, para dejar todas las fechas con
el formato correcto de dd/MM/yyyy. Todo lo anterior se hizo para lograr dividir los votos por
cuatrienios desde el 2006 hasta el 2018.
5.2.3. Creación de archivos JSON
Culminado el procesamiento de datos que se describió en el numeral anterior, se
procede a crear los archivos JSON, que son una opción excelente para recorrer los datos de
manera eficiente y rápida en la tecnología utilizada para desarrollar la herramienta,
JavaScript. Estos archivos y su contenido se describen a continuación.
Para los datos de Congreso Visible se crearon 12 archivos JSON con base en los datos
anteriormente filtrados. En primer lugar, se tiene el archivo “Congresistas.json”, el cual
contiene un arreglo de objetos partidos, el cual registra el id del partido, el nombre y un
arreglo de objetos congresista, que incluye cada congresista asociado a ese partido con el id
del congresista y el nombre de este. En el caso de los proyectos, se creó un archivo
“Proyectos.json” que contiene un arreglo de objetos proyecto, el cual registra el id de cada
proyecto de ley, el nombre de este, según el tema principal y secundario, y un arreglo de
etiquetas, el cual contiene el id y nombre de cada una de las etiquetas asociadas a dicho
proyecto de ley.
Teniendo en cuenta los dos archivos descritos anteriormente, se creó un archivo
“Anios.json”, el cual acoge tres dimensiones muy importantes para el filtrado por congresista,
años y temas. En este archivo se encuentra un arreglo de años, en el que cada índice es un año
y un arreglo, a su vez, de congresistas que han votado en ese año. En este arreglo de
congresistas se encuentran el id de cada congresista y los proyectos que están en este año.
Los congresistas están organizados de manera ascendente por su id y en el arreglo de
proyectos están el id del proyecto asociado al congresista para ese año y la fecha de votación
27
de dicho proyecto. Para un mejor entendimiento de la estructura de este archivo se demuestra
un ejemplo de este, es válido aclarar que los datos presentados en este ejemplo no se
asemejan a la realidad y los id fueron creados con el objetivo de ilustrar:
Figura 14: muestra de ejemplo Anios.json
El archivo descrito anteriormente guarda todas las votaciones de todos los congresistas para
todos los años de los últimos 3 cuatrienios. Es un total de 404,651 datos registrados.
De manera similar al anterior archivo descrito, se creó “Votos_unido.json”, el cual
acoge el conteo de todos los votos de un congresista en específico, organizados por el tipo de
voto, siendo estos sí, no, se abstuvo y no asistió. Este archivo contiene un arreglo de objetos
congresista, el cual incluye el id del congresista y un arreglo de proyectos, en donde se
registra el id del proyecto y el conteo de votos para ese proyecto organizados por el tipo de
votación. Para un mejor entendimiento de la estructura de este archivo se demuestra un
ejemplo de este, es válido aclarar que los datos presentados en este ejemplo no se asemejan a
la realidad y los id y votaciones fueron creados con el objetivo de ilustrar:
28
Figura 15: muestra de ejemplo Votos_unido.json
Gracias a los archivos “Congresistas.json”, “Anios.json”, “Proyectos.json” y
“Votos_unido.json” se logró representar de manera gráfica y por cada congresista, las
votaciones a cada uno de los proyectos de ley.
Figura 16: Diagrama de proceso para el manejo de los datos.
29
6. Diseño de Ingeniería:
6.1. Arquitectura:
Civis Sum es una herramienta web diseñada y desarrollada en JavaScript, HTML y
CSS. Escrito en JavaScript un lenguaje orientado a objetos, dinámico y basado en prototipos,
lo que facilita su ejecución en exploradores al ser muy ligero. El manejo de datos se realizó
por medio de archivos JSON y CSV que fueron resultado del procesamiento, que durante el
proyecto se logró que fueran los más reducidos posibles y contuviera la información
necesaria para los objetivos planteados.
Figura 17: Arquitectura de Civis Sum
De acuerdo con la Figura 14, se presenta la arquitectura de Civis Sum, que se
construye en el Client-Side es decir en el buscador (Chrome, Firefox, Safari). La arquitectura
maneja tres vistas principales correspondientes a: index.html, vista-datos.html y filtrado.html
que hacen uso de CSS para de esta manera presentar el Front-end de la herramienta, luego, a
modo de controladores, algunos archivos JavaScript recolectan los datos de las vistas, están
escuchando constantemente la interacción del usuario y poseen la lógica del software. Dentro
de los controladores, encontramos algunas librerías externas que se presentarán en el
30
siguiente numeral, las cuales permiten cumplir con el funcionamiento de las visualizaciones y
del filtrado de información de las consultas. Para modelar los datos, el resultado de su
procesamiento con archivos que modelan los datos de forma sencilla y de acuerdo con la
información que requiere el sistema, por ende, se poseen archivos JSON y CSV que
contienen la información y son el insumo para las visualizaciones. En resumen, la
arquitectura se basa en poseer objetos sencillos que puedan ser procesados y filtrados a partir
de las vistas de Civis Sum.
Las vistas implementadas en Civis Sum, específicamente en el filtrado presentado, se
esquematizan en 6 pasos que faciliten y cumplan el objetivo de mostrar y filtrar la
información de la manera más fácil y eficiente posible. Se construyó por medio del estilo
Storytelling un flujo de tareas que permiten al Back-end procesar los datos y hacer las
consultas solicitadas por el experto de ciencia política de acuerdo con las dimensiones
específicas. A continuación, se presenta el flujo de actividades que Civis Sum tienes y se
relacionan a las posibilidades que tiene el experto para consultar, todos los filtros son
opcionales a excepción de la dimensión de Temas y Categorías, el cual es el requisito mínimo
para ir de lo más global a lo mas especifico para ofrecer los resultados cualitativos y
cuantitativos acerca de la representación ciudadana.
31
Figura 18: Esquematización de actividades de Civis Sum
6.2. Librerías e Implementación:
Para el presente proyecto se realizo el uso de librerías externas para la
implementación de las visualizaciones y funcionalidades de Civis Sum, todas librerías para
JavaScript, entre ellas encontramos:
6.2.1. D3 JS:
D3 es una librería de JavaScript para manipular documentos basados en datos, esta
librería ayuda a visualizar los datos usando HTML, SVG y CSS, teniendo en cuenta los
protocolos estándar, D3 funciona y es estable en todos los exploradores, permitiendo al
programador ser dueño del Framework, tener múltiples componentes de visualización y una
manipulación de los datos en el DOM (Bostock, s. f.). Para el desarrollo del proyecto se
usaron las versiones V5.0 y V3.0 de D3, para la visualización de los datos en elementos como
burbujas y flores. Para la implementación de esta librería, en primer lugar se procesaron todos
los proyectos de ley que fueron votados en el Congreso de la República que fueron
clasificados en las 82 categorías mencionadas anteriormente, mediante una función
JavaScript, se realizó el conteo de cuantos proyectos habían relacionados a cada una de las
categorías globales, asimismo, de los JSON que contenían los proyectos de clasificar la
iniciativa de la que provenía el proyecto de ley, el CSV que salió como resultado, permitió
alimentar la visualización de burbujas usando D3.js con una estructura de: el id,
correspondiente a la categoría global, el groupid, correspondiente a la iniciativa (1,2,3,4,5) y
el size, correspondiente a la frecuencia de proyectos en el tema en específico.
32
Figura 19: muestra de ejemplo iniciativas.csv
Figura 20: resultado de visualización Burbujas.
Por otra parte, la implementación de la visualización que muestra el conteo de las
votaciones para un congresista o para un partido político para cada uno de los temas
seleccionados por el usuario, fue realizado a partir de tres archivos JSON que contiene toda la
actividad legislativa de los congresistas y los respectivos proyectos de ley. Por medio de una
función de JavaScript, se realiza un fetch de la información, haciendo un recorrido al filtrar
los datos para cada una de las dimensiones aplicadas, como los años y las categorías; a
continuación, se realiza el conteo de los votos de los congresistas para los proyectos de ley
resultantes del filtrado. Teniendo en cuenta los tipos de voto, la visualización contiene cuatro
flores que muestras en conteo de votos para cada tipo de voto, siendo estas a favor, en contra,
33
abstenciones e inasistencias. Por lo anterior, la siguiente estructura presenta el objeto
Congresista o Partido Político del cual se realiza el conteo de votos para proyectos de ley.
Figura 21: muestra de ejemplo votos.unido.json
Figura 22: resultado de visualización Flores: votos a favor y en contra en temas de aborto de los partidos:
Alianza Verde, Cambio Radical, Centro Democrático y Conservador Colombiano
Por medio del uso de D3.js se realizó la implementación de tooltips que permiten
observar detalles de la visualización, por ejemplo, para ambos tipos de visualización
implementadas (burbujas y flores), es posible obtener el tema y la frecuencia de votos para
proyectos relacionados con la consulta del usuario.
34
Figura 23: Tooltip en la visualización de burbujas
6.2.2. Vega-Lite JS:
Vega-Lite es una librería de JavaScript especializada en gráficas interactivas de alto
nivel y visualizaciones de datos provenientes de Properties, usando JSON sintaxis genera
gráficas de forma rápida. Vega Lite compila automáticamente componentes y visualizaciones
como los ejes, leyendas y escalas respetando las reglas de comportamiento de las gráficas
(UW IDL, s.f.). Esta librería fue usada en el proyecto para realizar la visualizaciones y
gráficas de barras de los resultados de las preguntas hechas por el Observatorio de la
Democracia. En dichas gráficas se puede analizar el porcentaje de respuestas hechas por cada
ciudadano sobre cada pregunta, y si se escoge más de un año, se puede estudiar el
comportamiento de estos a través del tiempo.
Para el caso en que se escogiera un solo año, por medio de Vega-Lite, se logró hacer
una visualización por medio de una gráfica de barras. En cada gráfica está representada una
pregunta para un solo año (el año escogido), en el eje x aparece el porcentaje personas que
escogieron cierta respuesta a dicha pregunta y en el eje y se encuentra cuál fue dicha
respuesta escogida.
35
Figura 24: Gráfica de barras para un solo año
El formato de entrada de los datos es en formato JSON el cual contiene una respuesta,
con su respectivo valor, y un porcentaje, con su respectivo valor.
Figura 25: JSON de entrada utilizado para la visualización
Por otro lado, cuando se escoge más de un año aparece un nuevo tipo de gráfica en el
que en el eje x se muestran los años escogidos o los años en donde se hicieron determinada
pregunta, en el eje y sale el porcentaje de ciudadanos que hayan escogido determinada
respuesta y luego dichos datos aparecen por cada una de las respuestas de cada pregunta. En
el caso de la imagen se ve una escala del 1 al 7 en donde 1 es Nada y 7 es Mucho.
36
Figura 26: Gráfica para más de un año
El formato de entrada de los datos es en formato JSON el cual contiene el año
escogido y/o año en que se realizó la pregunta, una respuesta, con su respectivo valor, y un
porcentaje, con su respectivo valor.
37
Figura 27: JSON de entrada utilizado para la visualización
6.2.3. JQuery JS:
JQuery es una librería de JavaScript rápida y pequeña que facilita la manipulación de
documentos HTML, animaciones y Ajax que permite por medio de una API funcionar en
todos los navegadores (JS Foundation, s. f.). Esta librería fue usada para manipular los
HTML de Civis Sum, y en el uso de interacciones como botones.
6.2.4. Bootstrap JS/CSS:
Bootstrap es un Framework y un conjunto de herramientas de código abierto para el
diseño de aplicaciones web. Contiene variados elementos y plantillas de diseño para
elementos visuales basado en CSS y HTML y plugins de JavaScript centrado en el desarrollo
de Front-end (Otto, s.f.). Civis Sum usa Bootstrap para el diseño de la página, el estilo
Storytelling, botones, títulos, entre otros. Se desarrolló el Front-end usando esta librería.
6.2.5. Slim Select JS:
Slim Select es una librería de JavaScript que despliega un avanzado Select dropdown
en el HTML. Permite tener un select con múltiple elección de opciones, que responde a
eventos, permite la búsqueda y un estilo limpio (Voelker, 2020). Se usó este componente para
realizar los filtros sobre la información facilitando al usuario la selección de filtros sobre la
consulta en Civis Sum. En el proyecto se usó esta librería en 4 ocasiones diferentes: select de
los años, select de las categorías o etiquetas, select de las preguntas y select de los
congresistas o partidos. Estos select dropdown son el eje central de toda la herramienta Civis
Sum, ya que como mínimo, para lograr generar alguna visualización, se debe seleccionar por
lo menos una categoría. Con esto se pueden generar, en el caso de Congreso Visible, la
38
representación gráfica general de los votos para todos los congresistas registrados y que estén
relacionados con el tema elegido.
El formato de entrada de los datos es un objeto con un atributo text, el cual es el dato
que se mostrará en el select. Para cada uno de los select se debe realizar un proceso antes: en
el caso de los años, se imprimen los años desde el 2004 hasta el 2018; para las categorías o
etiquetas se recolectó toda la información del archivo “Etiquetas.json” (que registra las 82
etiquetas) y las guarda en un objeto local para cada opción del select; por el lado de las
preguntas, este select es generado al momento de hacer el filtrado de las etiquetas, logrando
obtener todas las preguntas relacionadas a los años y temáticas seleccionadas en los apartados
anteriores; por último, para los congresistas se tiene dos opciones, el select por congresistas y
el select por partidos, ambos utilizan el archivo “Congresistas.json”, y según sea escogido por
el usuario se genera el select con la información que este haya escogido.
7. Desarrollo de Front-end y Experiencia de Usuario:
Basado en un modelo Storytelling, Civis Sum fue diseñado para ser una herramienta
web de fácil acceso, que le brinda al usuario la narración de una historia interactiva mediante
la acción del usuario (Scrolling), usando tecnologías web como HTML5, JavaScript, D3,
Vega lite. En primer lugar, por medio de un landing page Civis Sum ofrece la información
general de la herramienta, sus funcionalidades y el acceso a las diferentes visualizaciones
(Contexto de los datos y Acceso a las Consultas).
39
Imagen 28: Landing page Civis Sum
7.1. Visualización de datos:
La primera sección corresponde a la titulada “Vista general de los datos”, en la cual se
cuenta la introducción a la historia de Civis Sum, los datos que se usaron con algunas
especificaciones y visualizaciones generales de los datos desde el 2004 para Observatorio de
la Democracia y desde el 2006 para Congreso Visible. Para presentar estos datos se utilizó
una visualización con tooltips de tipo bubbles, donde cada burbuja corresponde al conteo de
un elemento (frecuencia) con características comunes. A continuación, se presentan las
visualizaciones implementadas para mostrar el contexto general de los datos procesados para
la funcionalidad de Civis Sum:
40
Figura 29: Visualización de Burbujas (Congreso Visible)
Figura 30: Visualización de Burbujas para los últimos tres periodos legislativos (Observatorio de la
Democracia)
Luego de conocer los datos y dar un contexto general al usuario, la próxima
experiencia corresponde a la consulta o pregunta de investigación que se podrá realizar sobre
las bases de datos. Civis Sum le pedirá al usuario algunos datos para generar visualizaciones y
concluir sobre la representación ciudadana, el o los años (campo opcional), Tema/s (campo
obligatorio), preguntas realizadas por el Observatorio de la Democracia (campo opcional) y
el congresista o partido político (campo opcional). Los componentes Select realizan el
filtrado de los datos de acuerdo con la dimensión aplicada, y acorde a la experiencia, le
brinda al usuario la posibilidad de establecer sus propias condiciones para una consulta
específica.
41
Figura 31: Filtros de Temporalidad y Temas o Categorías.
Figura 32: Filtros de Preguntas y Congresistas/ Partido Político.
Luego de que el usuario especifica las dimensiones para las conclusiones de la
representación ciudadana, se implementaron dos tipos de visualización para mostrar los
datos. En primer lugar, es posible visualizar en diagramas de puntos las preguntas filtradas
por años y temas realizadas por el Observatorio de la Democracia, donde el eje y representa
el porcentaje de personas que respondió a la pregunta, el eje x los años en los que se realizó la
pregunta y la leyenda especifica el color de cada una de las posibles respuestas de la
pregunta, así es posible ver el comportamiento de las respuestas a través del tiempo.
42
Figura 33: Visualización de pregunta: “Hasta qué punto tiene confianza en las autodefensas”.
Por otro lado, la segunda visualización corresponde al conteo de votos (A favor, En
contra, Inasistencia, Abstención) de los congresistas o partidos políticos filtrados por el
usuario, sino se elige ninguno, se tomará el conteo total de la actividad legislativa de todo el
Congreso de la República, esta visualización es llamada flower, para cada tema se genera la
visualización de cuatro flores que representan el conteo de votos de proyectos de ley sobre
ese tema específico, cada uno de los pétalos corresponde al conteo de votos un congresista o
partido político, por lo tanto en un flor aparece la comparación de los votos de los
congresistas o partidos políticos seleccionados para cada uno de los temas categorías. Esta
visualización posee un tooltip que indica para cada partido (pétalo), el nombre del partido
político, el número de congresistas y el conteo de votos.
43
Figura 34: Visualización de conteo de votos para congresistas o partido político del tema: Aborto.
7.2. Conclusiones Cualitativas:
Civis Sum luego de permitir el filtrado de datos, de acuerdo con comportamiento
presentado en las visualizaciones, ofrece conclusiones cualitativas sobre la opinión ciudadana
o el comportamiento legislativo, brindando herramientas adicionales para encontrar una
relación de la representación ciudadana. Para los datos de la opinión ciudadana se presenta
una conclusión que resume los datos más importantes sobre la consulta, como el año al que
está relaciona la respuesta, la respuesta o respuestas más significativas de la pregunta de
acuerdo con sus porcentajes de elección, las opciones y la pregunta que responde, por ende,
se genera una conclusión para cada año en que la o las preguntas se realizaron en las muestras
nacionales.
44
Figura 35: Ejemplo de conclusión cualitativa para una pregunta hecha por el Observatorio de la Democracia
en la muestra nacional en el año 2016.
Ahora para el caso del comportamiento legislativo de los congresistas o partidos
políticos, se presenta una conclusión cualitativa que resume de forma global los resultados
más interesantes del conteo de las votaciones en proyectos de ley relacionados a los temas
filtrados definidos por la consulta. Se presenta una conclusión para uno de los congresistas o
partidos políticos para cada tema consultado, se muestra el congresista o partido político, el
tema o categoría, el conteo mayor entre los cuatro tipos posibles y una posible relación con la
segunda votación más alta.
45
Figura 36: Ejemplo de conclusión cualitativa para el conteo de votos en proyectos de ley relacionados al
Aborto registrado por Congreso Visible.
8. Evaluación:
Desde una perspectiva global, la herramienta muestra la unión de dos bases de datos
por medio de la clasificación de un conjunto de categorías que integra las preguntas
realizadas por el Observatorio de la Democracia y las votaciones de los proyectos de ley
encontrados en los datos dados por Congreso Visible.
Con dicha clasificación se logró construir dos visualizaciones que muestran, por una
parte, la visión general de los datos por medio del conteo de preguntas por categoría y, por el
otro lado, el número de proyectos de ley asociados a los distintos tipos de iniciativas. En
paralelo, dicha unión también converge en términos temporales. A través de este es posible
conocer comportamientos de los datos en torno a cuatrienios que son de importancia para
aquel que quiera entender la distribución de estos, a través de una misma exhibición de datos
con base en los tiempos manejados por el Congreso de la República.
Desde una visión más específica, es posible desde la herramienta filtrar los datos por
medio de cuatro dimensiones: años, temas o categorías, congresistas o partido, y preguntas
realizadas a los ciudadanos. Posterior a este filtrado se obtiene lo que son las primeras
representaciones visuales como gran punto de comparación y que no solo representan el
resultado del filtrado sino del procesamiento, limpieza y clasificación de los datos realizados
desde un comienzo. Es en este punto en donde el usuario puede realizar una contrastación
directa de ambos conjuntos de datos y logra llegar a Insights. Finalmente, se recopila una
serie de conclusiones con el fin de orientar mejor al usuario a entender los resultados
obtenidos previamente en las visualizaciones.
46
Con base en lo presentado previamente, y gracias a los comentarios recibidos por el
Observatorio de la Democracia y Congreso Visible, fue posible concluir que la experiencia de
usuario al momento de usar la página web no era la más adecuada, ya que resultaba ser poco
intuitiva y no era clara la organización de la información. Otra dificultad evidenciada surge
en que muchos usuarios nuevos llegaban directamente a la funcionalidad de los filtrados sin
antes de pasar por la visión de los datos, lo cual causaba confusiones y poco entendimiento
sobre la herramienta.
Sin embargo, en términos de funcionalidad, se obtuvieron comentarios positivos y
críticas hacia mejoras en torno a nuevos prospectos por trabajar en este proyecto. Los
expertos consideraron que la herramienta les era de gran utilidad, les permitía entender mejor
cada conjunto de datos y, gracias a las visualizaciones, pudieron generar un conjunto de
preguntas e Insights para responder a la problemática inicial sobre el nivel de representación
ciudadana. Resaltaron el gran número de posibilidades e interacciones que posee actualmente
la página web y del potencial que tiene a futuro.
9. Resultados:
Los resultados de la implementación de Civis Sum y del procesamiento de datos logrados
en este proyecto de grado son:
- Obtención de la visión global y específica de los datos de Congreso Visible y
Observatorio de la Democracia, dado por el procesamiento y comprensión de los
datos usando herramientas y funciones de minería de datos. Esta actividad permitió
obtener los datos necesarios y archivos JSON y CSV para la visualización filtrado en
Civis Sum.
47
- Exposición y visualización de los proyectos de ley votados en el congreso entre los
años 2006 al 2018 y las preguntas realizadas por el Observatorio de la Democracia
entre los años 2004 al 2018 por medio de herramientas de Visual Analytics con el uso
de librerías externas.
- Realizar una consulta sobre la representación ciudadana en Colombia, filtrando de la
información de Congreso Visible y el Observatorio de la Democracia teniendo en
cuenta 4 dimensiones de búsqueda: (1) Años, (2) temas o categorías, (3) Congresista/s
y (4) Preguntas hechas a los ciudadanos.
- Exportar la información resultado de la consulta en archivos con formato CSV.
- Exposición y visualización del conteo de votos (Actividad legislativa) de cada uno de
los temas para cada congresista o partido político de la consulta, también, el
comportamiento de la opinión ciudadana a través de el tiempo de acuerdo con cada
pregunta y sus correspondientes respuestas.
- Conclusiones cualitativas para una consulta general o específica.
10. Conclusiones:
10.1. Observatorio de la Democracia:
Si bien el archivo de respuestas proporcionado por el Observatorio de la Democracia
contenía un número mayor de datos solo fue posible usar aquellos en donde se pudiera
relacionar el código de este con el código en el archivo de preguntas para así saber el nombre
de la pregunta. Esto causó que se filtraran un número muy alto de preguntas que pudieron
haber sido usadas en la herramienta. Se propone que para trabajo a futuro se pueda agregar el
nombre de la pregunta a estos datos que no pudieron agregarse y así crecer el conjunto de
datos del Observatorio de la Democracia dentro de la página web.
48
Por otra parte, para poder clasificar cada pregunta dentro de una categoría se realizó
un proceso manual y leyendo uno a uno los datos. Por lo tanto, se propone que se genere un
mecanismo de clasificación más automatizado en donde se pueda relacionar directamente el
tema de la pregunta y asignarlo a una categoría. Esto ayudará que sea mucho más escalable y
que dicho proceso sea mucho más rápido y eficiente. Una forma de realizar esto es que a
medida que se cree una nueva pregunta se asigne inmediatamente un nuevo atributo y que
dicho atributo sea una categoría específica. Esto, asimismo, permitirá que el conjunto de
categorías crezca y sea más diverso.
10.2. Congreso Visible:
Durante todo el proceso realizado para lograr este proyecto, desde el lado de
Congreso Visible, se fueron encontrando diferentes factores que podrían ser utilizados para el
trabajo futuro de la herramienta. En primer lugar, se tuvo como limitante el formato en el que
se manejan los datos en congreso visible, ya que el CSV principal en donde se tienen los 404
mil datos de los votos de proyectos de ley y que fue descrito en el numeral 5.2.1., no cuenta
con un atributo en el que se demuestre de manera explícita si el proyecto de ley al que
pertenece cada voto es a favor o en contra de manera positiva o negativa, p. ej., para un
proyecto de ley que está asociado con la etiqueta Aborto, los cuatro tipos de votaciones que
se tienen no dicen de manera explícita si el congresista que está votando está a favor o en
contra del aborto per se, sino del proyecto por el que está votando, el cual podría ser legalizar
el aborto. Si el congresista votó sí, quiere decir que está a favor del aborto, sin embargo, si
para para el mismo congresista con un proyecto de ley que sea prohibir el aborto, en este
caso el congresista votaría no. La solución a este problema es leer y estudiar uno a uno los
proyectos de ley que se tienen en la base de datos de Congreso Visible y etiquetar con un
nuevo atributo booleano cada proyecto y que esto indique si es un voto positivo o negativo al
proyecto. Esta solución se optó para dejar como trabajo futuro ya que sería responsabilidad
49
de Congreso Visible el acceder a la base de datos de la plataforma y etiquetar todos y cada
uno de estos proyectos.
Teniendo en cuenta lo anterior, si se logra clasificar cada uno de los proyectos de ley,
se podrían generar conclusiones más dicientes para el profesional de ciencia política que
estaría utilizando la herramienta. Estas conclusiones utilizarían este nuevo atributo para poder
determinar si las votaciones de los congresistas están acordes con las respuestas que se tienen
del Observatorio de la Democracia, logrando así determinar cuál sería la representación
ciudadana en el Congreso de la República. Asimismo, se podrían agregar diferentes
visualizaciones para dichas conclusiones, en donde sea mucho más fácil para el usuario
entender cómo es la convergencia de los datos de ambas bases de datos.
Reconociendo el trabajo actual y el recorrido de la curva de aprendizaje sobre los
datos de Congreso Visible y El Observatorio de la Democracia, uno de los puntos principales
que cambiaría bajo un escenario de inicio de cero del proyecto, sería las visualizaciones, pues
teniendo en cuenta las múltiples implementaciones de Visual Analytics y estudio previo de
que tipo de visualización sería óptima para presentar la implementación sería diferente. Por
otra parte, la experiencia de usuario que actualmente es estática y lineal puede ser
implementada para buscar priorizar la interactividad y la facilidad de uso para cualquier
usuario sin necesidad de una capacitación. Otro punto relevante, corresponde al
procesamiento de datos que obedezca a un objetivo final y no a pequeños logros objetivos,
pues esto evita tener un proceso estándar de manipulación de la información que puede ser
pensado más eficiente para el trabajo futuro. Finalmente, es necesario considerar en
centralizar toda información y archivos de lógica que fueron usados para el proyecto, de esta
manera permitir que las organizaciones puedan continuar y avanzar sobre la herramienta
actual.
50
11. Anexos
Civis Sum está desplegada en el servicio de alojamiento de GitHub llamado “GitHub
Pages” y puede encontrarse en el siguiente enlace: juanpablor5.github.io/CV-OD. El software
Civis Sum es de código abierto y el repositorio en donde este se fue almacenando a lo largo
de todo el proceso se encuentra en el siguiente enlace: github.com/Juanpablor5/CV-OD. A
continuación, se muestran los diferentes anexos necesarios para la sucesión del proyecto en el
futuro; estos anexos se encuentran en la carpeta Anexos en el repositorio compartido
anteriormente.
11.1. Observatorio de la Democracia:
Para poder continuar a futuro con el crecimiento de esta herramienta se comparten
una serie de archivos utilizados para el procesamiento de datos desde la etapa inicial hasta el
último paso en donde se crean los archivos en formato JSON utilizados directamente sobre la
página web. Los primeros dos archivos son scripts utilizando el lenguaje de programación
Python. El primero, llamado “años-preguntas.py” fue utilizado para poder determinar si en
cierto año se hizo cierta pregunta y el segundo, llamado “datos-finales.py” en donde se
realizan los pasos siguientes a los realizados sobre la herramienta KNIME y en donde se
realiza tanto el orden de los datos y su conversión a archivos CSV. En este script es necesario
cambiar la ruta del archivo que se lee, la ruta del archivo que se escribe y la variable “anio”
correspondiente al año del archivo que se está tratando. Asimismo, este script se debe correr
para cada archivo obtenido desde la herramienta KNIME. Una vez se corre este script se
obtiene un archivo CSV y, finalmente, se uno cada archivo resultante en uno solo y se
convierte a JSON. Finalmente, se comparte el workflow de Knime llamado “Knime-
OD.knwf” con todos los nodos necesarios para el procesamiento de los datos partiendo del
CSV obtenido por la conversión del archivo inicial en formato .dta.
51
11.2. Congreso Visible:
Para continuar con el trabajo futuro de la herramienta, se comparte el workflow de
Knime llamado “Knime-CV.knwf” con todos los nodos necesarios para el procesamiento de
los datos partiendo del CSV base. Para importarlo a Knime, se debe ingresar al programa y en
el apartado File, seleccionar Import Workflow. Cada nodo está configurado para lograr el
procesamiento que se necesita para dejar los archivos JSON preliminares, sin embargo, es
necesario realizar otros procesos a dichos archivos para lograr construir cada uno de los
archivos JSON necesarios para que la herramienta funcione como es debido. Para lograr esto,
se recomienda utilizar el programa “Data-processor-CV.py” programado en lenguaje Python
que también queda anexo a este documento, el cual realiza varios de los últimos procesos a
los datos para luego afinarlos con base en el formato descrito en el apartado 5.2.3. por medio
de búsquedas de expresión regular (Regex).
12. Referencias:
[1] Guerra Gómez, J. (2018). Visualización de los patrones de votación de los Senadores
Colombianos. Bogotá, CO.: johnguerra.co. Recuperado de:
https://johnguerra.co/viz/senadoColombia/.
[2] Guerra Gómez, J. (2017). Navio. Bogotá, CO.: johnguerra.co. Recuperado de:
https://navio.dev/.
[3] Oficina de Comunicaciones y Prensa de la Registraduría Nacional del Estado Civil. (s. f.).
ESTOS SON LOS MECANISMOS DE PARTICIPACIÓN CIUDADANA. Recuperado 2 de
junio de 2020, de https://www.registraduria.gov.co/Estos-son-los-mecanismos-de.html
[4] Secretaria General del Senado. (1991, julio 20). Constitución Política de la República de
Colombia. Recuperado 2 de junio de 2020, de
http://www.secretariasenado.gov.co/index.php/constitucion-politica.
[5] Congreso Visible. (2018). ¿Qué es el Congreso de la República? Recuperado 2 de junio
de 2020, de https://congresovisible.uniandes.edu.co/democracia/congreso/.
[6] Congreso Visible. (s. f.). Congreso Visible - ¿Qué es Congreso Visible? Recuperado 2 de
junio de 2020, de https://congresovisible.uniandes.edu.co/quesomos/.
[7] Subgerencia Cultural del Banco de la República. (2015). Ideologías políticas. Recuperado
de: http://www.banrepcultural.org/blaavirtual/ayudadetareas/politica/ideologias_politicas.
[8] Council of Europe. (s. f.). Democracia COMPASS: Manual de Educación en los Derechos
Humanos con jóvenes. Recuperado 2 de junio de 2020, de
https://www.coe.int/es/web/compass/democracy.
52
[9] Thomas, J. J., & Cook, K. A. (2005). Illuminating the Path: Research and Development
Agenda for Visual Analytics. U.S.: IEEE-Press.
[10] KNIME Analytics Platform (Nº de version 4.1.2). (2006). Windows. Zúrich, Suiza:
KNIME.com GmbH.
[11] Observatorio de la Democracia. (s. f.). ¿QUIÉNES SOMOS? Recuperado 2 de junio de
2020, de https://obsdemocracia.org/nosotros/.
[12] Voelker, B. (2020). Slim Select. Recuperado 7 de junio de 2020, de
http://slimselectjs.com
[13] University of Washington Interactive Data Lab. (s. f.). Vega-Lite – A Grammar of
Interactive Graphics. Recuperado 7 de junio de 2020, de https://vega.github.io/Vega-Lite/.
[14] Otto, M. J. T. (s. f.). Bootstrap. Recuperado 7 de junio de 2020, de
https://getBootstrap.com.
[15] JS Foundation. (s. f.). jQuery. Recuperado 7 de junio de 2020, de https://jquery.com.
[16] Bostock, M. (s. f.). D3.js - Data-Driven Documents. Recuperado 7 de junio de 2020, de
https://d3js.org
[17] Castro Varón, J. (2018). Partidos políticos en Colombia: ¿gobiernistas o
antigobiernistas? Bogotá, CO. Recuperado de: https://congreso.castrovaron.com/.
Top Related