Política

Droga dura: El retorno de los chamanes

He pasado unos días enganchado a El retorno de los chamanes, un libro de mi paisano Víctor Lapuente.

Es una obra sobre política escrita por un politólogo. Por lo que no habría lugar comentarlo en estas páginas. Pero hay varios motivos por los que sí.

Vaya por delante que es un libro que me resulta difícil por mi formación y, sobre todo, mi deformación. Soy matemático y durante años mi trabajo ha consistido en abstraer, teorizar, extraer la esencia, crear modelos generales para poder aplicar después el método deductivo. Me han programado para buscar cierres teóricos, listas de axiomas de los que se deduzcan razonadamente hasta los más humildes corolarios. He sido educado y socializado durante años para convertirme en chamán.

Campaña de alfabetización numérica... para diputados

¿Sabe de números tu próximo representante?

Al preguntar a los diputados actuales acerca de la probabilidad de obtener dos caras consecutivas al lanzar una moneda, solo el 40% de ellos obtuvieron la respuesta correcta. ¿Lo harán mejor lo siguientes?

[…]

Así, pero en inglés, comienza esta nota de la Royal Statistical Society que sugiere a los votantes (del RU, desgraciadamente) invitar a sus candidatos a formarse en los rudimentos de la estadística y el análisis y comprensión de datos.

¿Cómo votan los diputados?

Tras leer el otro día Visualizando la matriz de acuerdo legislativo, pensé que esta bitácora no podía quedarse atrás. Casi desisto. Pero cerrando ya casi el navegador vi que en la página de las votaciones del Congreso de los Diputados había dos enlaces aprovechables: en uno ponía XML y en el otro, “histórico”.

He aquí pues el código concomitante que fue apareciendo en mi sesión de RStudio:

library(XML)
library(reshape)
library(corrgram)
library(psych)

# descarga y manipulación de datos

dia.votacion <- function( n.votacion ){
    dir.create("tmp")
    url <- paste( "http://www.congreso.es/votaciones/OpenData?sesion=",
            n.votacion, "&completa=1&legislatura=10", sep = "" )
    download.file(url, destfile = "./tmp/votos.zip")
    try(unzip("./tmp/votos.zip", exdir = "./tmp"), TRUE)

    ficheros <- dir("./tmp", pattern = ".*xml", full.names = T )

    if ( length(ficheros ) == 0)
        return(NULL)

    res <- sapply(ficheros, function(fichero){
        datos <- xmlTreeParse(fichero)
        datos <- xmlToList(datos)$Votaciones

        if( is.null(datos) )
            return(NULL)

        datos <- as.data.frame(t(datos))
        datos <- as.data.frame(lapply( datos, unlist))
        },
        simplify = F
    )

    unlink( "./tmp", recursive = T)      # borra el directorio temporal

    res
}

res <- list()
for ( i in  1:54 ) res <- c( res, dia.votacion(i) )
# la 32, 33 está trucha
for ( i in 34:54 ) res <- c( res, dia.votacion(i) )

Con él se pueden bajar unas docenas de ficheros XML correspondientes a ciertos plenos de la X Legislatura, procesarlos mínimamente y guardarlos en la lista res. No estoy seguro de la profundidad histórica de los datos (aparentemente, sólo están disponibles los del 2012, aunque la X Legislatura arrancó, creo, antes). Además, falla la descarga de los ficheros correspondientes a las sesiones 32 y 33. Ese es el motivo por el que he tenido que recurrir a for, como los gañanes, en lugar de utiliza sapply, como era mi natural inclinación.