may 292011
 
urna-votos-300x300

En el artículo anterior se presentaba la simulación del reparto de representantes que resulta de la aplicación del sistema de D’Hondt y sus variantes. Más interesante, en cambio, resulta analizar el coste relativo, en términos de votos necesarios para la obtención de cada representante. Y también, evaluar cuántos votos harían falta para ganar un representante adicional, y cuántos votos menos de los alcanzados conllevarían la pérdida de un representante obtenido.
Continue reading »

may 232011
 
urna-votos-300x300

Después de un proceso electoral como el vivido ayer, 22 de mayo, y más con los movimientos sociales de la semana anterior (acampadas en céntricas plazas de muchas ciudades), las tentaciones de extraños análisis post-electorales son habituales. Como lo mío no es la sociología, sino los datos, os dejo una función que realiza el reparto de escaños de acuerdo con el criterio de D’Hondt y otras variantes. Las sencillas matemáticas detrás de estos criterios de asignación de representantes se pueden ver en los enlaces anteriores.

La función en R que devuelve el reparto mediante el sistema de D’Hondt y variantes es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
reparto.dhondt < - function(votos, esc, inc=1) {
    votos     <- abs(votos)
    esc       <- abs(round(esc))
    divisores <- seq(1, by=inc, length=esc)
    tabdhondt <- outer(votos, divisores, "/")
    colnames(tabdhondt) <- paste("div", 1:ncol(tabdhondt))
    if (is.null(names(votos))) {
       rownames(tabdhondt) <- LETTERS[1:length(votos)]
    } else {
       rownames(tabdhondt) <- names(votos)
    }
    if (ncol(tabdhondt) <= 10) print(tabdhondt)
    last <- sort(tabdhondt, decreasing=TRUE)[esc]
    elec <- apply(tabdhondt>=last, 1, sum)
 
    return(elec)
}

La función espera un vector numérico de votos en su primer argumento, el número de escaños/concejales/representantes a asignar en el segundo y un incremento para calcular los divisores del sistema de D’Hondt como tercer argumento. El criterio que se aplica en las elecciones españolas hace inc=1, que es el valor por defecto. Valores superiores de inc producen repartos más proporcionales. La función devuelve la distribución de representantes para los correspondientes elementos del vector de votos.

Ahora, un sencillo análisis. Los resultados de las seis candidaturas más votadas para el Ayuntamiento de Madrid, en forma de vector de R son:

vv < - c(PP=756952, PSOE=364600, IULV=163706, UPyD=119601, ECOLO=13425, CENB=10795)

y el reparto que se obtiene de las 57 concejalías es el conocido:

> reparto.dhondt(vv, 57)
   PP  PSOE  IULV  UPyD ECOLO  CENB 
   31    15     6     5     0     0

¿Y si el incremento de los divisores fuese mayor?

> reparto.dhondt(vv, 57, 2)
   PP  PSOE  IULV  UPyD ECOLO  CENB 
   30    14     7     5     1     0 
> reparto.dhondt(vv, 57, 3)
   PP  PSOE  IULV  UPyD ECOLO  CENB 
   29    14     7     5     1     1

Es decir, con un incremento de divisores inc=3, los dos siguientes grupos en número de votos, Verdes de Madrid (ECOLO) y Ciudadanos en Blanco (CENB) podrían haber obtenido un representante cada uno a costa de PP y PSOE que verían reducida su representación en un concejal cada uno.

¿Y si los electores que votaron en blanco hubiesen votado a Ciudadanos en Blanco? En las elecciones al Ayuntamiento de Madrid se contabilizaron 43 292 votos blancos. Supongamos que la mitad hubiesen ido a parar a la candidatura que los "representa". Entonces:

> vv["CENB"] < - vv["CENB"]+(43292/2)
> reparto.dhondt(vv, 57)
   PP  PSOE  IULV  UPyD ECOLO  CENB 
   31    15     6     4     0     1

En este caso, habría sido Izquierda Unida el partido que habría perdido un concejal que pasaría a Ciudadanos en Blanco.

Bueno, que disfrutéis la función, seguro que salen resultados curiosos al hacer política-ficción. Por cierto, recordad que no todas las candidaturas entran al reparto, deben superar (en elecciones municipales) un 5% del total de votos válidos (es decir, votos a partidos más votos en blanco). Así, ni ECOLO ni CENB han entrado en la distribución de representantes porque hacían falta un mínimo de 76 169 votos para el Ayuntamiento de Madrid.

Por otra parte, en algunos municipios pequeños no se aplica la distribución por el criterio de D'Hondt, porque se vota a personas (tipo listas abiertas), aunque dichas personas se presenten por cierto partido.