Sopa de bits

Reflexiones sobre la información

By

Visualización con HTML5 – Javascript Infovis Toolkit

Javascript Infovis Toolkit (JIT) es otra de las bibliotecas de gráficos y visualización que he utilizado puntualmente en los últimos meses.  A diferencia de Protovis, se trata de una biblioteca de visualización más enfocada a visualizaciones concretas como se puede ver en las muestras del sitio, aunque con elementos interesantes en su filosofía.

Estructuras de datos más complejas

Aparentemente, el punto de partida de JIT es el inverso al de Protovis.  Si en el caso de Protovis se partía de una estructura de datos principalmente lineal (un listado de elementos a visualizar), sobre los cuales se puede aplicar una estructura de visualización concreta, Infovis parece partir del objetivo de visualizar estructuras complejas, ya sean árboles o grafos.

Infovis también permite la composición.  Es decir, el elemento de una visualización (el nodo de un grafo) puede ser también otro componente (ver el ejemplo del hiperárbol de diagramas de sectores).

La diferencia, eso sí, es también el peso de la biblioteca.  JIT está mucho más pensada para el entorno web y sus archivos de javascript son mucho más ligeros que Protovis.

Velocidad

Infovis sorprende por su velocidad de proceso, especialmente en los casos con estructuras complejas.  Quizá sea por ello que en la mayoría de gráficos de muestra se incluyen por defecto animaciones introductorias, que provocan el sufrimiento de la CPU si no estamos utilizando Google Chrome.

Por lo tanto, es una velocidad con vistas al futuro, considerando que el proceso de optimización a la que están sometidos los navegadores (aparte de la introducción de tecnologías HTML5 especialmente interesante como los web workers) permitirá que en un futuro cercano estas visualizaciones sean potentes en todos los navegadores.

Si utilizas el código de alguna de las visualizaciones de demostración, y prevees su uso en navegadores diferentes de Chrome (pienso en Firefox, y siendo optimistas IE8, aunque mejor es intentarlo antes de decepcionar), procura desactivar las animaciones (o escoger la menos intensiva) para garantizar la experiencia del usuario.

WebGL

Otro de los aspectos a seguir en un futuro próximo es la implementación de WebGL en Infovis.  Este aspecto es sugerente, aunque queda por demostrar en qué casos es realmente necesaria esta tecnología.

En este punto existen dos razones para justificar el uso de WebGL: su capacidad de visualizar en 3D, y por otro lado la capacidad de utilizar la GPU de la tarjeta gráfica para agilizar las visualizaciones concretas.

En el primer caso es una cuestión metodológica y está por ver que el 3D aporte mucho valor a la visualización en general.

En el segundo caso, el uso del webGL puede estar justificado para el caso de visualizaciones que requieren cálculos complejos delegables en la GPU.  Este es el caso de los grafos con representación por equilibrio de fuerzas entre los nodos (Force Directed Layout).  En este punto, el Canvas no es una alternativa frente a una GPU dedicada.

Como muestra de esto último se puede ver el vídeo que muestra Nicolás García Belmonte (creador de JIT) en el blog del proyecto sobre la demostración de Infovis con webGL.

By

Visualización con HTML5 – Protovis

Desde la última vez que comenté herramientas para mostrar gráficos estadísticos en la web (entonces en Flash), han cambiado infinidad de cosas.

HTML5, aunque en vías de implantación (probablemente durante meses o algunos años), representa todo lo que no se hizo durante los últimos 5 años porque se disponía de Flash y ya era suficiente.  Probablemente también porque el mercado de navegadores estaba dominado por Internet Explorer.

Con la nueva versión de HTML aparecen dos elementos clave para representar gráficamente datos en la web: el Canvas y WebGL.  El canvas está pensado para mostrar gráficos en 2D, mientras que webGL está pensado para visualizaciones 3D que aprovechen la unidad gráfica de proceso (o GPU) de nuestra tarjeta gráfica.  En el segundo caso hay un objetivo claro: utilizar juegos con altas exigencias gráficas en el navegador.

Del Flash al HTML5

La primera diferencia que uno siente al trabajar con gráficos basados en HTML5 els la sensación de continuidad: no precisar el cambio de contexto ni de lenguaje de programación para realizar gráficos.

Sin embargo el gran motivo de cambio hacia el HTML5 son los móviles, con los que Flash provoca problemas de rendimiento, si es que lo tienen integrado en los navegadores.

Diferencias claves de Protovis

Existiendo bibliotecas gráficas para HTML5 como raphaeljs, o el port de processing, o Google Charts, entre otras que he visto, me planteo sus factores diferenciales.  Estos factores diferenciales me permiten valorar si el tiempo de aprendizaje me compensa por:

  • Su flexibilidad o su especificidad de acuerdo a nuestros objetivos.
  • Su velocidad.
  • Usabilidad.
  • Tipo de licencia
  • Facilidad de desarrollo (la usabilidad para el programador).
  • Mantenimiento, comunidad y en general, garantías de continuidad.

Los puntos más a favor de esta biblioteca para mis potenciales usos son:

  • Se basa (o al menos se inspira) en el framework de la gramática de los gráficos, por lo que tiene una versatilidad prácticamente ilimitada.
  • El método de configuración de un gráfico es relativamente sencillo, ya que se basa en el método de encadenamiento.
  • Al funcionar por capas conceptuales de la gramática, permite componer gráficos y subgráficos, aparte de facilitar la creación de nuevos elementos en cada nivel de definición del gráfico.
  • Aunque está muy enfocada a los gráficos estadísticos, su método de desarrollo permite pensar en su uso para visualizaciones más bien estructuradas y basadas en los datos.
  • Incorpora algunas funciones estadísticas como preparación de los datos, aunque no es su objetivo principal.
  • Licencia BSD (similar a la MIT), prácticamente la que proporciona más libertad para su uso (tanto si el desarrollo final es también libre o propietario).

También surgieron algunos contras al respecto:

  • Es una biblioteca pesada, más bien pensada para Intranets o conexiones rápidas, aunque con un buen uso del caché de navegador y los ETags sólo se notará en la primera carga.
  • Su potencial es el uso específico, personalizado.  Si el objetivo son gráficos sencillos, existen otras bibliotecas más adecuadas.

Trabajando con Protovis

En el sitio de protovis se hallan ejemplos bastante representativos de las posibilidades generales de protovis, y opciones de personalización interesantes.  La mayoría de gráficos estándares pueden basarse en tales ejemplos de código

Como colofón, se puede encontrar la muestra del gráfico de Minard realizada con Protovis que Tufte considera el mejor gráfico de la historia.  Este gráfico también aparece en el libro de la gramática de los gráficos, como muestra de los factores componentes de esta visualización.

Por otro lado, también es posible incrustar gráficos de Protovis en WordPress, utilizando el plugin de carga de Protovis.

By

Políticos accidentales: ¿Seleccionar legisladores aleatorios mejora la eficiencia parlamentaria?

Curioso artículo el que he encontrado hoy en arxiv.org, sobre una simulación que propone la hipótesis con la que titulo esta entrada (salvo los interrogantes, que los he añadido yo).  El preprint en cuestión está en inglés y se titula Accidental Politicians: How Randomly Selected Legislators Can Improve Parliament Efficiency (puedes descargar directamente la versión PDF del artículo).

El resumen (traducido y con resaltado mío) es el que sigue:

Estudiamos un modelo prototípico de un Parlamento con dos Partidos o dos Coaliciones políticas, y mostramos cómo la introducción de un porcentaje variable de legisladores independientes seleccionados aleatorioamente pueden aumentar la eficiencia global de una legislatura, tanto en términos del número de leyes aprobadas y de la media de bienestar social obtenido.  También encontramos analíticamente un “número áureo de la eficiencia” que permite establecer el número óptimo de legisladores que deben ser seleccionados aleatoriamente después de que las elecciones regulares hayan establecido la proporción relativa de los dos Partidos o Coaliciones.  Estos resultados están alineados tanto con el antiguo sistema democrático Griego como con el descubrimiento de que la adopción de las estrategias aleatorias pueden mejorar la eficiencia de las organizaciones jerárquicas.

El artículo utiliza la metodología de la simulación, por lo que no es un ejemplo real con datos basados en experiencias humanas.  Es por ello que el artículo se basa en una abstracción matemática que puede restar interés para quien no se quiera adentrar en los números.  Trataré de allanar un poco el camino.

Una explicación menos matemática

Para establecer un modelo de simulación como el del artículo es necesario establecer unas reglas de actuación y unos individuos (los agentes), que actuan con una lógica independiente sobre la cual toman decisiones individuales.  La suma de decisiones conforma un escenario que es el objeto del análisis.

En este caso, los agentes se encuentran en un espacio planteado por Carlo M. Cipolla, donde se plantean dos factores:

  • Acciones del individuo que resultan beneficiosas/perjudiciales para sí mismo.
  • Acciones del individuo que resultan beneficiosas/perjudiciales para los otros.

En el modelo, estos dos factores se transforman en:

  • Beneficio personal.
  • Beneficio social

Cada uno de estos factores puede tomar valores entre -1 (muy perjudicial) y +1 (muy beneficioso).  Los cuatro tipos extremos, con valores asignados según lo anterior, son:

  • Los Inteligentes se benefician a ellos y a los demás (+1, +1).
  • Los Incautos benefician a los demás pero no a ellos mismos (-1, +1)
  • Los Malvados se benefician a ellos y perjudican a los demás (+1, -1)
  • Los Estúpidos se perjudican a ellos y a los demás (-1, -1)

Lo anterior son valores extremos y no los casos típicos.  Los he utilizado para clarificar la conversión de palabrasnúmeros.  En la simulación se podrá encontrar agentes con coordenada (0.25, -0.1 -> algo egoísta, ligeramente malvado), por poner un caso.

La razón para escoger el intervalo entre +1 y -1, está en parte explicada en el artículo sobre normalización y distancias normalizadas.  En una palabra: simplicidad y facilidad de cálculo, aparte de ser muy intuitiva.  Se podría escoger +100 y -100, pero esto sólo aumenta la complejidad de los cálculos: a nivel de simulación no aportan valor alguno.

Los agentes pueden realizar dos acciones: presentar una ley, o bien votarla (a favor o en contra).

En el momento de la decisión, los agentes parten de su centro de gravedad, pero están de acuerdo con cualquier ley que tenga valores más positivos que su centro de gravedad.  Gráficamente: que se encuentren más a la derecha y por encima de su centro de gravedad personal.

Por otro lado, cuando los agentes son miembros de un partido, aceptan sus directrices.  Estas directrices se representan gráficamente por el círculo de tolerancia del partido.  Este círculo muestra las leyes que el partido en conjunto está dispuesto a votar.

En suma, el agente depende de su adscripción política (círculo de tolerancia) y de su postura personal (ventana de aceptación).  Esta dependencia impone las siguientes reglas en el juego:

  • El círculo de tolerancia de un agente miembro de un partido muestra en sus decisiones es el mismo que el del propio partido (lo que conocemos com disciplina de voto).
  • El agente miembro de un partido siempre vota a favor de las leyes que presenta alguien de su partido.
  • El círculo de tolerancia del partido es más o menos pequeño, dependiendo de si se trata de partidos más o menos autoritarios (o rígidos, si se prefiere).
  • Los parlamentarios elegidos aleatoriamente no podrán repetir en sucesivas elecciones, para evitar ser abducidos por los partidos mayoritarios.

Y ahí es donde esta la clave de la simulación, en combinación con la disciplina de partido.  Por resumirlo en una frase: Al seleccionar un grupo aleatorio de individuos se cubren las distancias entre los marcos de tolerancia de los partidos.

Gráficamente se puede imaginar dos grandes círculos (los partidos), con todo su entorno salpicado por los individuos seleccionados aleatoriamente.  Estos individuos pueden servir como soporte para leyes que quiera presentar el miembro de un partido, cuando estas leyes estén en el límite.

¿Cuántos diputados escoger aleatoriamente?

La fórmula para el cálculo de los diputados escogidos aleatoriamente (per la página 13 de la versión PDF del artículo) es aparentemente compleja, pero se basa en dos factores básicos:

  • El número de diputados del congreso en cuestión.
  • La proporción de diputados del partido mayoritario.

El gráfico de la página 14 del documento muestra el comportamiento de la función que calcula los diputados independientes.

Considerando el caso del bipartidismo, los votos del partido más votado pueden oscilar desde el 50% hacia arriba.  En el eje vertical vemos el número de diputados en el caso que el congreso tuviera 500 escaños (el caso de la simulación).

Como se puede ver, si el resultado es equilibrado (50-55% para el partido ganador: casi un empate técnico) el número de votantes independientes es pequeño porque es fácil desequilibrar la balanza.  Cuanto más grande es la mayoría, más independientes.

Quizá sea posible esperar nuevas simulaciones con multipartidismo, para así poder analizar casos más complejos.

Aunque la conclusión se basa en un análisis de los resultados de la simulación, la causa, según la explicación de los autores, es relativamente intuitiva:  Si la selección de independientes es realmente aleatoria, su soporte será mayoritario para el partido ganador.  Sin embargo, al evitar la disciplina de voto pueden favorecer a más acuerdos.

En palabras de los autores: No se pierde nada del sistema de partidos (efectividad en los sistemas de votación) y se gana todo por la aparición de diputados independientes (la calidad de sus propuestas).

Dudas

  • ¿Cómo afecta la inclusión de otros partidos a la cantidad de independientes?
  • ¿Por qué la ventana de aceptación de un individuo se establece con un mínimo y aceptar lo que sea siempre más positivo (sobretodo a nivel social)? ¿Se podrían plantear márgenes más cerrados?
  • A nivel de las interacciones: ¿Cómo afectaría al círculo de tolerancia de los partidos la aparición de los independientes?

Conclusiones y aplicaciones:

  • Tratándose de una simulación, el resultado no parece aplicable directamente.
  • El planteamiento del paper es por sí mismo muy creativo y sugerente.  Y eso no le resta en absoluto vínculos con la realidad.
  • ¿Quizá lo aplicable por fórmula del partido más votado se podría aplicar en base a la abstención? ¿Y sobre los votos en blanco?

Un apunte final: En relación a la selección aleatoria de individuos, encontré hace tiempo un artículo de (casi) los mismos autores relacionado con la Promoción aleatoria de personas en las empresas para evitar el principio de Peter.