
Después de las entradas sobre web scraping y confianza en la política, quería presentar los indicadores de confianza en la economía y en la política que proporciona el CIS mensualmente de forma visual.
Continue reading »

Después de las entradas sobre web scraping y confianza en la política, quería presentar los indicadores de confianza en la economía y en la política que proporciona el CIS mensualmente de forma visual.
Continue reading »

A cuenta de las recientes entradas sobre web scraping y desconfianza en los políticos, C. Gil Bellosta publicó un artículo titulado “Los principales problemas de España”. Ahora aprovecho su extracción de datos con R para hacer algunos comentarios sobre las preocupaciones de los españoles.

Actualización 5 de septiembre: Me ha llamado la Decana (Begoña García Greciano) para explicarme que los nuevos precios están aprobados para toda la UCM, no es algo que dependa de nuestra cafetería. Gracias, Begoña.

Quería preparar un ejemplo de web scraping (extracción de datos de páginas web) con R y me decidí por utilizar algún indicador de los que publica periódicamente el Centro de Investigaciones Sociológicas (CIS) en los Barómetros mensuales. Elegí los indicadores de la situación política. Ciertamente, no es que anduviera sobrado de esperanza en lo tocante a la confianza que los ciudadanos vienen depositando en los políticos, pero los datos son para llorar, y es que viene de antiguo:

Cuando en septiembre de 2010 compré un ereader (un lector de ebooks) pensé, ingenuamente, que durante una larga temporada tendría cubiertas mis necesidades lectoras. No lo compré en España, ya que con el tradicional retraso hispánico, los aparatos que se vendían aquí eran caros y escasos en prestaciones comparados con el Nook que me trajeron de EE.UU. El aparato tiene wi-fi y un navegador sencillo, suficiente para revisar el correo electrónico o buscar algo en internet sin apartarse de la lectura. Soporta el formato epub, que aparentemente era el estándar de la industria, tanto con protección por DRM (Digital Rights Management, gestionado por Adobe) como sin ella y además permite visualizar (aunque paupérrimamente) archivos en formato pdf (asunto del que escribí en esta entrada). Como por aquel entonces ya había unas cuantas librerías virtuales con literatura en castellano, pensé que la e-lectura, aún en versión hispana, prometía.
Continue reading »

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 »

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.

Ya sabía yo que lo de hacerme social 2.0 (abrevio a HS2.0) me iba a dar trabajo. No me refiero a que ahora tengo que recordar comunicarme: twitear (identi.car suena muy extraño) alguna noticia o blog interesante, compartir en Facebook, revisar con más frecuencia los grupos de LinkedIn,… no es ese el problema, es que también tengo que revisar la enorme cantidad de información que entra. Todo eso consume tiempo. No sé si a medio plazo estar más informado y relacionado merecerá la pena, no lo puedo responder ahora. Por el momento me gustaría organizar todo ese flujo de información que se añade a los correos electrónicos, tanto los que me dirigen personalmente como los que proceden de listas a las que estoy suscrito y dar una lectura, siquiera somera, a las noticias de la prensa. Pero es que, además, tengo que trabajar (no todo lo que se dice de los profesores es cierto).
Con las noticias de prensa lo tenía organizado usando un lector RSS (really simple sindication). Yo uso Google Reader, pero existe una infinidad de ellos que se ejecutan en el ordenador o a través del navegador (en este último grupo, son muy interesantes Good Noows y Netvibes). Además, para los más inclinados a enredar, montar un lector/agregador propio en la web es sencillo si ya se dispone de alojamiento, porque existen varias herramientas libres para hacerlo (Lilina y SimplePie son recomendables).
La idea de los lectores RSS es simple. Los sitios web generan un archivo con un formato estandarizado que contiene la información destacada y que se actualiza cada vez que lo hace la web en cuestión (se añade una
noticia, un artículo en un blog, un twit de quienes sigues,…). A dicho archivo se le llama feed. Como el formato es estándar, los lectores periódicamente revisan dichos archivos y muestran las novedades que encuentran en ellos desde la última revisión. Naturalmente para que el proceso funcione, es necesario indicar al lector la dirección de internet del feed, lo que se denomina suscribir. Para facilitar las cosas, en todos los sitios web que lo soportan (como éste), aparece el icono
o variaciones del mismo y en páginas complejas, como las de periódicos, suele existir un feed diferenciado para cada sección.
Algunos piensan que la inmediatez de Twitter y similares hará obsoletos los feed RSS. Sin embargo, me parece que dicha tecnología, ampliamente extendida, simplifica la organización. Me explico. Para estar al tanto de lo que pasa en Twitter parece necesario tener abierta la página web y mirar periódicamente, y así con otras redes sociales. Alternativamente, existen programas que se instalan en el ordenador y realizan dicho trabajo, avisando al entrar un nuevo twit o mensaje de otro tipo. Mi breve experiencia es que dichos programas son insoportables en el momento en que sigues a un blog o un grupo con muchos participantes que constantemente envían twits (decenas al día), porque la fiesta de ventanas de aviso y sonoros píos desconcentra al más pintando.
Para revisar las noticias y otras fuentes que me interesan, en Google Reader estoy suscrito a mi propio agregador de noticias de economía, que sigue 25 medios (sección de economía de medios generalistas y medios especializados), a dos fuentes de información general (una española y otra británica), a dos agregadores de blogs sobre R (en español y en inglés)… Es la página que abro por las mañanas después de mirar el correo y existen lectores para el teléfono móvil, así que me parecía de lo más natural integrar las redes sociales en el mismo esquema de flujo de información, en el que soy yo quien decido el momento de revisar novedades en lugar de que las novedades me asalten piando como polluelos hambrientos. El lector también facilita compartir cualquier noticia enviándola por correo electrónico o de forma directa a Facebook, Twitter o Identi.ca (véase la Nota 1 para configurarlo). Naturalmente, pulsando sobre las noticias o twits, el navegador se dirige a la página web origen de las mismas. A continuación, la apariencia de mi agregador de noticias de economía en Google Reader:

Para enlazar las redes sociales en el lector RSS era necesario encontrar sus feeds. Lo cierto es que, aunque no es evidente excepto en identi.ca, ha sido bastante sencillo (después de unas cuántas búsquedas, claro, pero “con la ayuda de mi vecino, mató mi padre un cochino”, y esa es la fuerza de la red):
identi.ca genera feeds directamente, el enlace se encuentra en la parte inferior derecha de tu página personal (o de cualquier otra página de esa red).
Twitter requiere dos pasos porque no genera feeds directos. Primero, es necesario crear listas. Yo he creado dos, una para personas o dicho de otra forma, entes que generan pocos twits (menos de 10 diarios) y otra, que llamé blogs, para entes que producen twits masivamente. Las listas deben hacerse públicas. El segundo paso para obtener el feed es acceder a Twitter lists 2 RSS y escribir la dirección de la lista. Twitter lists 2 RSS genera un enlace al feed que se debe usar en la suscripción.
Aunque en Facebook no es tan evidente, una vez se ha iniciado la sesión, si se accede a http://www.facebook.com/notifications.php se puede copiar la dirección del feed RSS con el botón derecho para añadirla al lector.
En el caso de LinkedIn se puede obtener el feed pulsando aquí una vez se ha iniciado la sesión.
Todas las suscripciones anteriores las incluí en una nueva carpeta llamada “Social 2.0″ en Google Reader:

Respecto al móvil, me resulta más cómodo usar un lector de RSS específico en lugar del navegador. En mi Nokia N97 tengo instalado News Blast, gratuito. A buen seguro existen lectores para todos los teléfonos avanzados del mercado. Por su parte, el navegador del ereader es suficiente para estar al tanto de las redes sociales en los intermedios de la lectura.
Una vez suscrito puedo consultar las actualizaciones individualmente o en bloque o establecer otras agrupaciones usando carpetas y/o etiquetas. Los flujos de información están ordenados en un sólo lugar y no interrumpen mi trabajo, a la vez que puedo estar al tanto de lo que ocurre en cualquier momento y responder o enviar referencias a las redes sociales con facilidad. En resumen, he organizado mi pupitre social y progreso adecuadamente (aunque esté mal que yo lo diga).
NOTA 1: Para compartir en Identi.ca es necesario crear un enlace personalizado en el apartado “Enviar a” de la configuración de Google Reader. Los parámetros son:
NOTA 2: Una herramienta web que parece prometedora a la hora de integrar toda clase de información de las redes sociales y otros recursos web es Posterous, aunque todavía no la he probado y depende, como muchas otras, de una empresa.
NOTA 3: Entre mis experiencias vitales de infacia se encuentra “la matanza”, es decir, el sacrificio y preparación de los productos derivados del cerdo. Cuando se vive la matanza de verdad, en un pequeño pueblo de Guadalajara, viendo la colaboración de parientes y vecinos en las tareas, incluidos los niños en las actividades más sencillas, se aprecia mucho mejor el sentido del refrán que mencionaba y lo social 1.0 que estamos perdiendo. Lomos de orza como aquellos de casa de mi abuela, listos para comer en la primavera siguiente a cada matanza, no los he vuelto a encontrar.

No soy social 2.0, o al menos, no especialmente. Me relaciono, claro, tengo familia, amigos, ex-novias, colegas y alumnos, y con todos ellos mantengo un comportamiento social aceptable, pero no soy social 2.0. No siento la imperiosa necesidad de estar en contacto permanente con la gente que conozco, ni siquiera con las personas que quiero o que me caen bien, de los otros (la mayoría) ni hablamos. Tampoco tengo interés en comunicar al mundo cada ocurrencia que me viene al magín (para tranquilidad del mundo) ni informar urbi et orbe sobre mi posición geográfica exacta (¿para qué?).
Continue reading »