A blog about data, information and IT, by Mario Alberich

Sep 24
2007

El sistema d'Hondt


El funcionamiento de la ley de Hondt


Explicar a fondo la ley de Hondt creo que no procede: he leído con detalle la entrada en la Wikipedia en Español sobre la ley de Hondt y lo creo suficiente como introducción.

El proceso de división que se da para cada caso es lo que se podría denominar una sucesión armónica (sería una serie armónica si los cocientes se sumaran) que es equivalente para todos los partidos, salvo porque hay que multiplicar por el número de votos.

Esa sucesión forma una curva asintótica respecto al eje y=0 para valores enteros positivos. A efectos prácticos, puedes imaginarte un avión de papel lanzado desde la ventana de un edificio, que va planeando cada vez más cerca del suelo pero sin llegarlo a tocar nunca.

...No, no hay viento.

Al realizar el cálculo de la ley de Hondt, cada partido lanza ese avión, pero con una diferencia substancial: cuantos más votos, más alta es la posición de lanzamiento. Supongamos que un voto equivale a un centímetro: diez mil votos son cien metros de altura.

El jefe de filas sube la escalera y lanza el avioncito. La trayectoria descrita por cada avión de papel es registrada y se ponen en común las alturas de cada avión en cada segundo. Las mayores alturas se llevan los escaños.

Repasemos mentalmente las trayectorias de los aviones: Cuanto más tiempo transcurre, más parecidas son las alturas de los aviones. Eso implica que cuanto más a repartir entre partidos, más equilibrado es el reparto. Es más equilibrado porque hay algo de aleatorio: haber lanzado unos centímetros más arriba o más abajo el avión, da o quita un escaño: el planeo final es clave. Los aviones sólo quedarían a la misma altura en caso de llegar al infinito, con lo que a largo plazo el partido más votado siempre parece algo más favorecido.

Eso queda algo rebatido al hacer ciertas pruebas, que espero que con la demo ahora tengas más cerca.

La demo


Podéis acceder a la demo desde la página de recursos.

Debo decir antes de todo que la demostración es sencillita y que se podría haber decorado o coloreado más, pero me he limitado a lo estrictamente necesario para que sea funcional.

La he colgado en el apartado "descargas", que he pasado a titular "recursos" (buscando un término genérico).

El funcionamiento es bastante sencillo y salvo el propio archivo de Flash, todo el código utilizado es estático: XHTML y CSS. El archivo Flash muestra en un gráfico de frecuencias los pasos del cálculo de la ley de Hondt, y el reparto resultante de escaños.

  • Lo primero es introducir el número de escaños y el mínimo porcentaje de votos para entrar en el cálculo.
  • En segundo lugar, indica los votos recogidos por cada partido, abstención, en blanco, etc.
  • Una vez introducidos los datos, clicando en "calcular". Ya está.


Los resultados se muestran en tres partes diferentes que paso a comentar.

Tabla de asignaciones


Situada en la parte superior derecha de la página, esta tabla indica los escaños asignados, el porcentaje de votos y el porcentaje de escaños. Esta relación entre los porcentajes anteriores es importante, ya que es el tipo de reivindicación que se da ante la ley de Hondt: que favorece a los partidos grandes.

Puedes comprobar que eso no siempre es así, ya que hay ocasiones en las que los partidos pequeños absorben un escaño del grande. Los últimos escaños a repartir (especialmente cuando se trata de una gran cantidad: más de cien por poner un caso) son una verdadera lotería.

Tabla de divisiones


En la parte inferior de la página, muestra el proceso de dividir los votos en cada iteración. Estas divisiones se ordenan y se muestran en la última columna (que muestra el título Hondt). éste es el resultado de repartir los escaños: indica la cantidad con la que se ha asignado cada escaño.

Gráfico de divisiones


Parecido a lo anterior, el gráfico de divisiones representa gráficamente la tabla anterior. En este caso es de notar que cuanta más competencia hay entre dos partidos (pongamos los dos mayoritarios), más "rugosa" es la curva que marca la asignación de partidos (la línea "Hondt"). El avión encuentra turbulencias.

Transferencia de datos a Open Flash Chart


El gráfico utilizado es de frecuencias sin puntos. He tomado esta decisión porque tenéis la lista de valores en la tabla de debajo, con lo que no hay necesidad de ponerlo de nuevo en el gráfico.

Para los que quieran ver cómo se transfieren los datos a OFC, sólo cabe comentar que se serializan los datos y se identifican con una clave. Esa clave se introduce en la URL en la carga del archivo SWF, y el resto es tarea de OFC.

Podéis ver el contenido que devuelve la llamada del parámetro "data" de la URL, y sacar conclusiones por vuestra cuenta...

Debo hacer notar que a medida que aumenta el número de datos, el tiempo de proceso del gráfico aumenta, aunque en general nada alarmante.

Tags

gestión documental 10     Recuperación información 11     Linux 7     Usabilidad 5     open source 3     Tagging 12     lógica borrosa 2     fuentes de información 12     Google 6     off-topic 6     spam 2     grafos 6     Web social 11     modelización 12     Productividad 11     buscadores 2     utilidades 17     Profesionales 9     SEO 5     estándares 3     veracidad 3     relevancia 2     lingüística 2     PLN 2     lenguajes documentales 2     apis-mashups 3     reseñas 7     Flash 7     Gráficos estadísticos 13     Publicidad 3     Innovación 5     muestreo estadístico 9     PHP 14     internet 2     testeo 12     desarrollo 3     visualizacion 36     javascript 16     datos abiertos 9     elecciones 2     simulación 5     html5 7     phing 9     ssh 2     seguridad 3     indicadores 2     demografía 3     media 2     algoritmos 7     shell 4     mysql 2     backup 2     big data 6     twitter 2     d3js 11     revealjs 2     metodología 6     data-journalism 6     smartcities 2     NYT 2     privacidad 3     benchmarking 4     recopilaciones 21     magento 5     formacion 2     github 2     HHVM 3     psicología 2     angularjs 3     grep 2     nodejs 5     promises 2     mapreduce 3     crossfilter 2     exploración de datos 2     machine learning 2    

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.