numeroteca https://numeroteca.org Nada es raro porque nada es normal Fri, 24 Oct 2025 09:50:15 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 https://numeroteca.org/wp-content/uploads/2021/12/cropped-icono-web-numeroteca-32x32.png numeroteca https://numeroteca.org 32 32 108445078 Cuando las infraestructuras digitales de transparencia no funcionan https://numeroteca.org/2025/10/24/cuando-las-infraestructuras-digitales-de-transparencia-no-funcionan/ https://numeroteca.org/2025/10/24/cuando-las-infraestructuras-digitales-de-transparencia-no-funcionan/#respond Fri, 24 Oct 2025 09:37:34 +0000 https://numeroteca.org/?p=6683 Recientenemente me han ocurrido varios hechos, que de por sí podrían ser meros errores o bugs en el sistema, pero que todos juntos evidencia que algo falla en las herramientas de transparencia y rendición de cuentas.

Por un lado, la página web que sirve de archivos a las “Solicitudes de acceso a la Información Pública” del Gobierno Vasco (https://www.gardena.euskadi.eus/solicitudes-de-acceso-a-la-informacion-publica/webgar00-contgen/es/) no funciona, tampoco su versión en euskera.

La página web con las Solicitudes de acceso a la Información Pública, no funciona
La página web con las Solicitudes de acceso a la Información Pública, no funciona

Al hacer click en cualquier de los años se abre por una fracción de segundo la tabla con las solicitudes, pero se vuelve a cerrar, haciendo imposible navegar por la información. A ver, se puede trucar el css y html para poder verlo, pero supone una barera inslvable para acceder a la información para practicamente todo el mundo que visite esta página. Aquí un poco de contexto, de una investación en la que colaboré hace años, sobre la Comisión Vasca de Acceso a Información Pública, que es quien publica estas resoluciones sobre las solicitudes. Pongo el link porque es el que uso para llegar a la web que lista todas las solicitudes, que no suele ser fácil de encontrar. Por otro lado, en este listado no siempre se publican los datos que reclamaban las solicitudes de información pública que tuvieron éxito, pero esa ya es otra historia. Esta página lleva sin funcionar, al menos según la captura de Archive.org, desde el 18 junio de 2025.

Al ver que la web no funcionaba, creé una petición pública en Irekia, que canaliza las peticiones ciudadanas, para ver si podían repararla. De esto hace un mes (23 de septiembre de 2025) y sigue esperando aprobación ¿aprobación de quién? ¿qué más hace falta? Seguimos sin poder acceder a las solicitudes.

Mi petición sigue esperando que sea aprobada.
Mi petición sigue esperando que sea aprobada.

En el plano Bilbao, me entero por la asociación vecinal Uribitarte Anaitasuna que la web municipal de datos abiertos del Ayuntamiento de BIlbao, Bilbao Open Data, lleva caída desde septiembre (según Archive.org, desde el 13 de septiembre de 2025 ya no funciona) y no pueden acceder a los datos de los sonómetros con los que trabaja. La asociación ya ha notificado al Ayuntamiento, pero sigue sin solucionarse.

La web de BIlbao Open Data lleva caida desde septiembre.
La web de BIlbao Open Data lleva caida desde septiembre.

Cuando las herramientas falllan y los mecanismos para avisar y que se solucionen los problemas fallan ¿qué podemos hacer desde la ciudadanía?

Seguimos hablando de la IA y cómo entrenar a supercomputadoras, pero muchas veces nos están faltando los datos y las herramientas más básicas.

]]>
https://numeroteca.org/2025/10/24/cuando-las-infraestructuras-digitales-de-transparencia-no-funcionan/feed/ 0 6683
Condenan en costas al Ayuntamiento de Bilbao por la multa por circular en bici con mis hijos por un parque https://numeroteca.org/2024/09/18/condenan-costas-ayuntamiento-bilbao/ https://numeroteca.org/2024/09/18/condenan-costas-ayuntamiento-bilbao/#respond Wed, 18 Sep 2024 22:54:58 +0000 https://numeroteca.org/?p=6634 El Ayuntamiento de Bilbao consiguió evitar el juicio que iba a celebrarse hoy jueves para no tener que dar explicaciones sobre la aplicación de la normativa. El juzgado condenó simbólicamente al Ayuntamiento en costas.

Apatruyando la ciudad
Por el parque con su coche
Apatruya la ciudad
(Foto tomada minutos después de que me pusieran la multa).

En mayo de 2023 me multaron por ir con mis hijos en bici por el parque de Doña Casilda en Bilbao. Recurrí la multa y el Ayuntamiento de Bilbao desestimó mis alegaciones. Recurrí entonces ante los juzgados de lo contencioso-administrativo para que se aclarara si era acorde a la normativa o no circular en bicicleta por el parque. Tras varios aplazamientos, se fijó el juicio para el 19 de septiembre.

En agosto de 2024, el gobierno municipal intentó mediante la anulación de la multa evitar el juicio y así no tener que dar explicaciones sobre la normativa que regula la circulación en bici. Su argumento, 16 meses después de poner  la multa, era que el expediente no había sido “debidamente tramitado” y solicitaba el archivo por satisfacción extraprocesal. Esto de “satisfacción” es un eufemismo, porque seguimos sin aclaración de cuál es la correcta  aplicación de la normativa, que era y es el principal objetivo.

Presentamos alegaciones, porque no habían anulado la multa conforme a los procedimientos requeridos en el derecho administrativo, ni la habían motivado ni notificado correctamente. Hoy ha llegado la notificación del juzgado que anuncia el archivo definitivo del juicio, pasando por alto las alegaciones. Se condena en costas al Ayuntamiento a pagarme 50€ en costas: “Se impone a la parte demandada las costas causadas en el presente recurso, por importe de 50 euros sin incluir el IVA”.

El importe es simbólico, porque imaginad lo que habría podido suponer pagar a un abogado, si no fuera porque apoyó esta causa gratuitamente desde el principio. Donaré esa cantidad a la Asociación Biziz Bizi, Asociación de ciclismo urbano de Bilbao, que me ha apoyado en todo este proceso. Un dinero, que, por otra parte, lo hemos pagado entre todos.

Es una victoria agridulce, ya que el consistorio ha reconocido implícitamente que no tenía razón, pero se ha salido con la suya y no ha tenido que aclarar si se puede o no ir en bicicleta por el parque y en zonas peatonales cuando la concurrencia de personas así lo permita. Como dicen desde Biziz Bizi, muerto el perro se acabó la rabia. Anulada la sanción se acaba la posibilidad de litigar con el Ayuntamiento.

Nos toca buscar otros caminos para que la normativa se aclare. Seguiremos informando. Hablo en plural, porque en el proceso hemos aunado fuerzas la buena gente Biziz Bizi y Aitor Anchía, el abogado que ha hecho posible este proceso judicial. Una alegría encontrar nuevos amigos mientras intentamos hacer el mundo un poco mejor. Han pasado más cosas positivas en este proceso. Por ejemplo, que al principio de todo esto monté una web donde poder buscar en las ordenanzas municipales, porque la web del Ayuntamiento solamente te permite descargar cada PDF por separado. Y más tarde,  siguiendo con esta idea de “abrir” lo que contienen los PDF y hacerlos buscables, hice otra web para buscar en las actas de los plenos municipales y los de distrito desde 2007.

Ahora puedo circular de nuevo en bici por Doña Casilda cuando la concurrencia de personas así lo permita, aunque no tenga la sentencia que me hubiera gustadoa enseñar a la policía si me paraba. De momento he ido a probar hoy, de camino a la inauguración-protesta del carril bici de Biziz Bizi. No me han puesto multa.


PD1: Publicaremos todos los documentos de este litigio, convenientemente anonimizados, por si pueden servir a otras personas en sus luchas contra la Administración.

PD2: El Ayuntamiento vio que iba a tener que responder en el juicio a este listado de preguntas que el juzgado había aprobado:

1. ¿Es cierto que el Ayuntamiento de Bilbao, a través de sus Ordenanzas permite que adultos circulen en bicicleta u otros medios de transporte similares en zonas peatonales cuando la concurrencia de personas así lo permita, extremándose en todo caso las medidas de seguridad por parte de la persona usuaria de tales artilugios?

2. ¿Es cierto que el Ayuntamiento de Bilbao, a través de sus Ordenanzas permite que adultos acompañen en bicicleta u otros medios de transporte similares, a menores hasta ciertas edades, ya sea 7, 10 o 12 años?

3. ¿Es cierto que la Policía Municipal de Bilbao tenía un dispositivo de vigilancia especial en la fecha de la multa en el parque de Doña Casilda? Si la respuesta es afirmativa, ¿en qué consistía ese dispositivo y qué motivo el mismo?

4. ¿Existen informes que justifiquen la actuación de ese dispositivo impidiendo a un adulto acompañar en bicicleta u otros medios de transporte similares a menores en bicicleta hasta ciertas edades, ya sean 7, 10 o 12 años?

5. ¿El Ayuntamiento ha realizado la evaluación de las Ordenanzas Espacio Público y de Espacios Verdes que indica el artículo 130 LPAC desde su aprobación hasta la actualidad? Si la respuesta es negativa, ¿por qué no se ha realizado?

6. ¿El Ayuntamiento ha publicado las evaluaciones de las Ordenanzas Espacio Público y de Espacios Verdes que indica el artículo 130 LPAC desde su aprobación hasta la actualidad? – Si la respuesta es afirmativa, ¿dónde las ha publicado? Si la respuesta es negativa, ¿por qué no las ha publicado?

7. ¿El Ayuntamiento ha realizado a través de la policía municipal cursos para aprender a hacer uso de la bicicleta? Si la respuesta es afirmativa, ¿en esos cursos se ha transitado por zonas que luego la policía municipal ha sancionado a personas desplazándose en bicicleta como el paseo de Deusto junto a la ría?

]]>
https://numeroteca.org/2024/09/18/condenan-costas-ayuntamiento-bilbao/feed/ 0 6634
Voy a juicio (o quizás ya no): multa por ir en bici por el parque en Bilbao https://numeroteca.org/2024/09/07/juicio-por-multa/ https://numeroteca.org/2024/09/07/juicio-por-multa/#comments Sat, 07 Sep 2024 22:06:10 +0000 https://numeroteca.org/?p=6618 ¿Os acordáis de la multa que me pusieron por ir con mis hijos en bici por Doña Casilda? Eso fue en mayo de 2023. La recurrí en julio y su desestimación me llegó en octubre. En diciembre presenté una demanda contra el Ayuntamiento de Bilbao para recurrir la multa mediante un recurso contencioso-administrativo en los juzgados. Tras varios aplazamientos, el juicio será el jueves 19 de septiembre, justo en mitad de la Semana Europea de la Movilidad. No creo que hubieran podido escoger mejor fecha. Pero, para ser rigurosos, ya no es seguro que haya juicio, porque el Ayuntamiento ha anuladola multa, al menos aparentemente, para intentar evitarlo.

En un principio me ofrecieron un procedimiento abreviado, pero elegí la vista oral, 

porque el objetivo de todo esto es esclarecer para mi, para mis hijos y para todos mis compañeros, que si alguien vuelve a ir en bici por el parque no le pondrán una nueva multa. Queremos saber qué implican, en la práctica, las confusas normativas municipales sobre ir en bici por el parque de Doña Casilda. Y ya que estamos, sobre todos los parques y otras zonas peatonales donde también han puesto multas a ciclistas, como en el paseo junto a la ría entre el puente de Gehry y Elorrieta.

Extracto del documento del Ayuntamiento donde se dice que el expediente administrativo de la multa no fue debidamente tramitado.

Sin embargo, el gobierno municipal no parece estar interesado en esclarecer nada de esto. Ha propuesto al juzgado que no se lleve a cabo el juicio porque ha anulado la multa “al apreciarse irregularidades procedimentales en su tramitación” y que “se comprueba que no fue debidamente tramitado”. Me quitan la multa, pero por problemas en el trámite, sin especificar, así que nos quedamos como estamos. La dificultad, por no decir imposibilidad, de interpretación de las normas genera una inseguridad jurídica que lleva indirectamente a establecer un margen de arbitrariedad que no permite nuestro ordenamiento jurídico.

Y todo esto ha ocurrido unos días antes de celebrarse el juicio, 16 meses después de ponerme la multa. Precisamente justo después de que el juzgado haya aceptado una serie de preguntas que el Ayuntamiento debía contestar por escrito y unos requerimientos de información que debía aportar. Hacen un requiebro (una cobra) administrativa para evitar responder a esta sencilla pregunta: ¿Es cierto que el Ayuntamiento, a través de sus ordenanzas municipales, permite la circulación en bicicleta en zonas peatonales cuando la concurrencia de personas así lo permite? 

A las 52 personas multadas por este motivo en Bilbao desde el 17 de junio de 2023, según lo publicado por el Área de Seguridad en febrero de este año, seguro que también les interesa conocer la respuesta. Como a mí, también les sancionaron por infracción grave, cuando la nueva Ley de Tráfico no lo permite.

En este viaje me he encontrado con Biziz bizi, asociación de ciclismo urbano de Bilbao, como apoyo. Hemos lanzado una encuesta para conocer otros casos similares al mío. Personas multadas por ir en bici por zonas peatonales y así poder denunciar colectivamente esta situación. Ayudadnos a difundirla. 

Porque, en definitiva, ¿de qué va verdaderamente el discurso de apoyo a la movilidad urbana sostenible si multan a un padre por ir con sus hijos en bici por un parque para luego quitarle la multa 16 meses después solamente porque ha sido capaz de recurrirla en un juicio?

En breve os contaré más novedades sobre el caso.

]]>
https://numeroteca.org/2024/09/07/juicio-por-multa/feed/ 2 6618
Cosa https://numeroteca.org/2024/05/15/cosa/ https://numeroteca.org/2024/05/15/cosa/#respond Wed, 15 May 2024 08:36:12 +0000 https://numeroteca.org/?p=6611 ]]> https://numeroteca.org/2024/05/15/cosa/feed/ 0 6611 Alegaciones, desestimación e impugnación, esta multa no termina https://numeroteca.org/2023/11/07/alegaciones-desestimacion-impugnacion-multa-dona-casilda/ https://numeroteca.org/2023/11/07/alegaciones-desestimacion-impugnacion-multa-dona-casilda/#respond Tue, 07 Nov 2023 22:15:03 +0000 https://numeroteca.org/?p=6588 ¿Por dónde íbamos? Ah, sí, me habían puesto una multa por ir en bici con mis hijos, menores de edad, por un parque de Doña Casilda semivacío y estaba a punto de presentar mis alegaciones.

En julio de 2023 presenté las bien argumentadas y sentidas alegaciones a la multa (gracias, Aitor, por la ayuda) que apuntan tanto a aspectos formales como de fondo. He aprendido mucho en el proceso. Espero que estas alegacione sean útiles para más ciclistas y hagan recapacitar a las autoridades y técnicos municipales:

Unos meses después, en octubre, me llegó la siguiente respuesta desestimando mis alegaciones:

Desestimación alegaciones multa. Carta oficial.
Desestimación alegaciones multa. Carta certificada oficial.

El Órgano sancionador competente por razón de la materia, en función de los datos, antecedentes y circunstancias existentos en el expediente administrativo debidamente comprobados, en ejercicio de las atribuciones que le corresponden, ha dictado la siguiente:
RESOLUCIÓN

1º.- DESESTIMAR las alegaciones presentadas en el expediente sancionador de referencia por la persona interesada, en razón de las siguientes consideraciones:

  1. El artículo 121.5 del Reglamento General de Circulación establece que la circulación de toda clase de vehículos en ningún caso deberá efectuarse por las aceras y demás zonas peatonales.
  2. El párrafo quinto del artículo 21 de la Ordenanza de Espacio Público de Bilbao señala que los y las menores de 12 años, bajo la exclusiva responsabilidad de las personas que ostenten su patria potestad, podrán utilizar las zonas peatonales, plazas y parques de Bilbao, para circular en bicicleta, monopatín, patines y similares cuando el número de personas concurrentes en dichos espacios lo permita. En el caso que nos ocupa, la circulación con la bicicleta se realizó por una persona mayor de 12 años, no concurriendo por tanto, la excepción preceptuada en el referido artículo.
  3. La referencia que el artículo 21 realiza a la utilización de bicicletas y otros elementos de desplazamiento fuera de las zonas habilitadas al efecto, cuando la concurrencia de personas así lo permita, refiere únicamente a zonas peatonales en sentido estricto, no entendiendo por éstas las plazas y parques de Bilbao.

2.- Enviadas las alegaciones al agente denunciante de conformidad con lo establecido en el art. 95.2 del RDL 6/2015 de 30 de octubre, las ha desestimado ratificándose en los términos de la denuncia.

2º.- ESTIMAR por el organo instructor no necesaria la apertura de período de prueba y audiencia en los términos previstos por el artículo 13 del R.D. 320/1994, por el que se regula el Reglamento del procedimiento sancionador en materia de Tráfico, Circulación de vehículos a motor y Seguridad Vial, para la averiguación y calificación de los hechos o para la determinación de las posibles responsabilidades, por haber resultado debidamente constatados los hechos denunciados en la fase instructora del expediente sancionador.

A los efectos procedentes, el órgano instructor pone a disposición de la persona interesada para su examen el expediente sancionador en las dependencias del Área.

Ahora voy a impugnar esta desestimación mediante Recurso contencioso-administrativo ante el Juzgado de lo contencioso-administrativo del Tribunal Superior de Justicia del País Vasco.

Os seguiré informando. Hasta pronto.

]]>
https://numeroteca.org/2023/11/07/alegaciones-desestimacion-impugnacion-multa-dona-casilda/feed/ 0 6588
¿Cuándo hablaron de _______ en el pleno municipal de Bilbao? https://numeroteca.org/2023/08/31/cuando-hablaron-pleno-municipal-bilbao/ https://numeroteca.org/2023/08/31/cuando-hablaron-pleno-municipal-bilbao/#respond Thu, 31 Aug 2023 16:13:58 +0000 https://numeroteca.org/?p=6576

0. ¿De verdad no hay una forma sencilla de buscar en las actas de los plenos municipales?

Te ha pasado. Bueno, hagamos como si te hubiera pasado.

Quieres saber cuándo, en el pleno de tu ayuntamiento, han hablado de tal o cuál tema. Vas a la web del ayuntamiento y tras un rato navegando encuentras la página ¡bingo!

Una URL maravillosamente larga: https://www.bilbao.eus/cs/Satellite?c=Page&cid=3000015482&language=es&pageid=3000015482&pagename=Bilbaonet%2FPage%2FBIO_ListadoSesionesPlenarias.
Puedes acceder a las actas en PDF. Todo bien.

Basta ahora con descargarlas una a una, abrir cada documento y buscar. Puede resultarte algo tedioso. Lo haces para el 2023, pero cuando llegas a 2022 ya te cansas ¿no existe una manera mejor para poder buscar en todas las actas? Y si las tuvieras descargadas ¿cómo buscar en todas ellas?

En la web del ayuntamiento hay disponibles actas de los plenos desde noviembre de 2007, pero descargarlas todas te llevaría más tiempo del que dispones. Son 193 a día de hoy (y eso sin contar con los extractos de las actas, que están disponibles desde 2002).

Las actas están ahí. Están publicadas. Cualquiera puede acceder a elllas. Otra cosa es que alguien tenga el tiempo para descargarlas y analizarlas.

¡Este es un caso para Abrir Datos Abiertos!

No es la primera vez que me pasa. Tener la información al alcance y no poder procesarla, porque no está publicada de una forma que pueda ser fácilmente consumida. Requiere demasiado trabajo.

Así que me puse manos a la obra.

Lo primero es 1) obtener la lista completa de actas; luego 2) descargar todos los PDF; y por último3) procesar todos los textos para poder hacer búsquedas.

1. Scraping

Para lo primero hace falta “escrapear” (de scraping, en inglés), esto es, descargar sistemáticamente la información de la web. Para ello le pregunté a Ekaitz si se le ocurría algo, porque el escrapeado no era imposible, pero tampoco trivial. En unas horas me mandó este código de python, que sirve para genera un archivo JSON que contiene la lista y URL de todos los documentos para poder descargarlos:

# Copyright 2023 Ekaitz Zárraga <[email protected]>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse, urljoin

import json


if __name__ == "__main__":
    base_url = urlparse("https://www.bilbao.eus/cs/Satellite?c=Page&cid=3000015482&language=es&pageid=3000015482&pagename=Bilbaonet%2FPage%2FBIO_ListadoSesionesPlenarias")
    r = requests.get(base_url.geturl())
    soup = BeautifulSoup(r.text, "html.parser")
    years = { i.text: i["value"] for i in soup.select("select#anioId option[value]") if i.text.isdigit()}
    data = []

    for year, id in years.items():
        r = requests.post(base_url.geturl(), {"anioId": id})
        soup = BeautifulSoup(r.text, "html.parser")

        table = soup.find('table', class_='tablalistados')

        headers = [ th.text.strip() for th in table.find("tr").find_all("th") ]

        data_rows = table.find_all("tr")[1:]
        
        print(year)
        
        for data_row in data_rows:
            line  = { k: v for k, v in zip(headers, data_row.find_all("td"))}
            line["Fecha"] = line["Fecha"].get_text().strip()
            line["Número"] = line["Número"].get_text().strip()
            line["Sesión"] = line["Sesión"].get_text().strip()

            # Los que tienen archivo: guardar enlace (luego se puede hacer un GET)
            for field in ["Orden del día", "Actas", "Resumen sesión", "Extractos", "Vídeos"]:
                link = line[field].find("a")
                url = urlparse(urljoin(base_url.geturl(), link["href"])) if link else None
                line[field] = url.geturl() if url else None
            data.append(line)

    with open("plenos.json", "w") as f:
        f.write(json.dumps(data))¡

2) Descargar los PDF

Para eso me fui a R, que es donde me encuentro más cómodo para trastear. Este archivo de R lee el JSON descargado, descarga todos los PDF y genera un archivo CSV en el que en cada línea guarda: el texto contenido en una página de cada PDF, el número de página, la URL al PDF original del acta y la fecha del pleno municipal.

# Cargar librerías
library(tidyverse)
library(pdftools)
library(tm)
library(rjson)


# Genera archivo .json con el código de plenos.py
# Archivo descargado plenos_230823.json


# Segundo archivo, en vista de que han cambiado las URL
data <- fromJSON(file= paste0("data/original/plenos_230823.json") )

# Apana (flat) el archivo json para operar más fácilmente  --------
for( i in 1:length(data) ) {
  print(i)
# for( i in 1:2 ) {
  fecha <- data[[i]]$Fecha
  num <- data[[i]]$Número
  sesion <- data[[i]]$Sesión
  orden <- data[[i]]$"Orden del día"
  extractos <- data[[i]]$Extractos
  actas <- data[[i]]$Actas
  resumen <- data[[i]]$"Resumen sesión"
  video <- data[[i]]$Videos
  
  if( is.null(orden) ) { orden = NA }
  if( is.null(extractos) ) { extractos = NA }
  if( is.null(actas) ) { actas = NA }
  if( is.null(resumen) ) { resumen = NA }
  if( is.null(video) ) { video = NA }
  
  if ( i == 1 ) {
    
    plenos <- data.frame(fecha = fecha, num = num, sesion = sesion, orden =orden, extractos = extractos, actas = actas, resumen = resumen, video =video)
  } else{
    
    plenos <- rbind( plenos,
                     data.frame(fecha = fecha, num = num, sesion = sesion, orden =orden, extractos = extractos, actas = actas, resumen = resumen, video =video)
    )
  }
}

# Format date  (pon en formato fecha)
plenos <- plenos %>% mutate(
  fecha = as.Date(fecha, format="%d/%m/%Y")
)


# Descarga los PDF - Download ----
for( i in 1:nrow(plenos) ) {
# for( i in 1:22 ) {
  print(plenos$actas[i])
  
  if ( !is.na(plenos$actas[i]) ) {
  
    print(plenos$fecha[i])

    #Descarga el archivo
    download.file(plenos$actas[i],
                  paste0("data/output/actas_230823/",plenos$fecha[i],"_acta_pleno-municipal-bilbao.pdf"))
  }
}

# Read pdf -------

# Guarda el resultado de cada página en una celda, junto con fecha y número de página
for( i in 1:nrow(plenos) ) {
  print( paste(i,"fila"))
  print(plenos$fecha[i])
  
  if ( !is.na(plenos$actas[i]) ) { # Que exista el acta
    
    text <- pdf_text(paste0("data/output/actas/",plenos$fecha[i],"_acta_pleno-municipal-bilbao.pdf"))
    
     if ( i == 5 ) {  # TODO: Para el primer pleno que tiene acta (metido a mano, mejorar!) en este caso el 5
       
       
      for( j in 1:length(text)) { # itera por todas las páginas de cada pdf
        print( paste("row:", j, " ----------------------------------"))
        
        if( j == 1) { # Para la primera iteración
          print("j es 1")
          all_pages <- text[j] %>% as.data.frame() %>% rename( txt = 1) %>% mutate(
            pag = j,
            fecha = plenos$fecha[i],
            actas = plenos$actas[i]
            )
          
        } else (
          page = as.data.frame(text[j]) %>% rename( txt = 1) %>% mutate(
            pag = j,
            fecha = plenos$fecha[i],
            actas = plenos$actas[i]
          )
        )
        
        if( j != 1) {
          
          all_pages = rbind(all_pages, page)
          
        }
      }
      
    } else {
      
      for( j in 1:length(text)) { # itera por todas las páginas de cada pdf
        if( j == 1) {
          print("4")
          all_pages_temp <- text[j] %>% as.data.frame() %>% rename( txt = 1) %>% mutate(
            pag = j,
            fecha = plenos$fecha[i],
            actas = plenos$actas[i]
          )
        } else (
          
          page = as.data.frame(text[j]) %>% rename( txt = 1) %>% mutate(
            pag = j,
            fecha = plenos$fecha[i],
            actas = plenos$actas[i]
          )
        )
        
        if( j != 1) {
          
          all_pages_temp = rbind(all_pages_temp, page)
        }
      }
            
      all_pages = rbind(all_pages, all_pages_temp)
      
    }
  } else { 
    print("No existe acta")
  }
}

# salvar archivo como CSV
write.csv(all_pages, "data/output/paginas-actas-plenos_230823.csv")

3. Página para buscar

A partir del CSV generado en el paso anterior monte un buscador básico (sólo se puede buscar por una palabra) desarrollado en PHP (ver código):

lab.montera34.com/plenosbilbao

¿Qué le sobra, qué le pasa, qué le falta a esta web? ¿os resulta útil? ¿cómo podíais vivir sin ella? ¿encontrais algo interesante? Encantados de escucharos.

Bola extra: si has llegado, quizás te interesa la web que he montado para buscar en las ordenanzas del ayuntamiento de Bilbao u otros proyectos de abrir datos abiertos que hemos hecho desde Montera34.

]]>
https://numeroteca.org/2023/08/31/cuando-hablaron-pleno-municipal-bilbao/feed/ 0 6576
Multa por ir en bici por doña Casilda (y publicar ordenanzas) https://numeroteca.org/2023/07/03/multa-bici-casilda-bilbao/ https://numeroteca.org/2023/07/03/multa-bici-casilda-bilbao/#comments Mon, 03 Jul 2023 21:31:50 +0000 https://numeroteca.org/?p=6512 El 3 de mayo de 2023 me pasó lo siguiente:

Me acaban de poner multa por ir con mis hijos en bici por el parque Doña Casilda (Bilbao) el agujero negro para las bicicletas. Parque semi vacío, dos agentes a la espera del ciclistas ¿alguien sabe si hay posibilidades al recurrir la multa?

Me ha pedido la documentación y empezado a escribir la multa sin decir nada más, sin siquiera explicar qué es lo que estaba haciendo mal. Esa es la imagen que mis hijos se llevan de la policía municipal

Tras pregutarle, el agente municipal citaba la ordenanza de bicis (no existe como tal) y no era capaz de indicar qué normativa en concreto había incumplido más alla de “la ordenanza de Bilbao” y el código de circulación. Aquí las ordenanzas municipales de Bilbao. Fuente del mapa.

Apatruyando la ciudad
Por el parque con su coche
Apatruya la ciudad.
(Así estaban los policías minutos después de multarme)

Facilitar el acceso y búsqueda a las ordenanzas municipales

A raíz de la multa por ir en bici por un parque (y ante la imposibilidad de buscar en la web del Ayto. de Bilbao qué normativa trata sobre bicicletas y/o zonas peatonales) he montado esta web para buscar en las ordenanzas. Es un ejercicio rápido de transparencia para abrir datos (que deberían) ser abiertos.

Tuve que pasar las ordenanzas de PDF a html. En un caso tuve que hacer OCR (reconocimiento de caracteres en imágenes) porque la ordenanza estaba publicada como imágenes escaneadas. En otro casono pude usarla porque el link al PDF de la ordenanza daba error.

Como prueba de concepto de lo que debería ser una web municipal creo que vale.

Dejo anotado aquí el cómo se hizo, casi todo desde línea de comandos:

  1. Un script en R para descargar todos los PDF.
  2. Con el comando pdftohtml convierto los PDF en html.
    Algunos los tengo que limpiar ya que tienen demasiadas imágenes repetidas. Además, en la página no usaré imágenes. Lo hago con “sed -e ‘s/]*>//g’ input.html > output.html”
  3. En el caso de la ordenanza del Casco Viejo no se puede copiar el texto, son imágenes:
    3.1 Convertir PDF a imágenes con pdftoppm
    3.2 OCR con tesseract con loop “for i in casco-??.png; do tesseract “$i” “text-$i” -l eng; done;”
    3.3 Unir los textos “cat text-casco-*.png.txt > fin.txt”
    3.4 Sustituyo los múltiples espacios juntos que genera tesseract “&nbsp;” por ” “.
  4. Abro el html generado de cada ordenanza en navegador y copio el contenido y lo pego en una página de wordpress (una página por ordenanza). Cambio de fecha de la página a fecha de aprobación.
  5. Retoques en wordpress mínimos y resaltar buscador.

Borrador de alegaciones

Publiqué en Twitter todo esto y con las sugerencias recibidas (y la ayuda de Bizi Bizi Bilbao) publiqué este borrador y recopilación de información para escribir las alegaciones. Pronto publicaré las alegaciones finales y actualizaré este post. El documento compartido también incluye una recopilación de toda la normativa aplicable en mi caso.

Esto no lo hago por mi solamente, para no pagar la multa, sino para que se reconozca que las bicis sí podemos circular por espacios peatonales.

Por mi y por todos mis compañero/as ciclistas.

]]>
https://numeroteca.org/2023/07/03/multa-bici-casilda-bilbao/feed/ 1 6512
Read my thesis (chapter by chapter) https://numeroteca.org/2023/06/21/read-my-thesis/ https://numeroteca.org/2023/06/21/read-my-thesis/#respond Wed, 21 Jun 2023 10:59:10 +0000 https://numeroteca.org/?p=6447 Well, I know you are not going to read the entire PhD thesis and annexes, so I am publishing it little by little, chapter by chapter. I am transforming the content to html, so I can use all the hyperlinks features and make it easier to navigate. It will take months, but I’ll complete the job.

I’ve created a page that is a summary of all the extra content of the dissertation: Color of corruption. Visual evidence of agenda-setting in a complex mass media ecosystem submitted on December 2022 and defended successfully on June 2023.

I’ve already uploaded all the code for the data gathering and analysis as well as the data bases that I’ve used.

I haven’t posted as much as I wanted to tell what I was doing, but I hope this page will help introduce what I’ve been doing. It’s been a long very long journey.

Páginas y capítulos de la tesis Color of corruption.
A visual analysis of all the pages of the PhD dissertation.

PS: In the past I’ve also published my research online, see these two examples. The goal was to publish the process, not only the final results, and make them available for everyone else:


Puedes leer en castellano un resumen sobre la evolución del proyecto en Montera34.

]]>
https://numeroteca.org/2023/06/21/read-my-thesis/feed/ 0 6447
Deja tu comentario https://numeroteca.org/2022/12/16/deja-tu-comentario/ https://numeroteca.org/2022/12/16/deja-tu-comentario/#respond Fri, 16 Dec 2022 12:58:41 +0000 https://numeroteca.org/?p=6277 https://numeroteca.org/2022/12/16/deja-tu-comentario/feed/ 0 6277 What can you do to reduce viral transmision through indoor aerosols? https://numeroteca.org/2022/03/15/what-can-you-do-to-reduce-viral-transmision-through-indoor-aerosols/ https://numeroteca.org/2022/03/15/what-can-you-do-to-reduce-viral-transmision-through-indoor-aerosols/#comments Tue, 15 Mar 2022 10:36:21 +0000 https://numeroteca.org/?p=5880 You can do nothing:

If you want to reduce viral transmission through indoor aerosols, of SARS-Cov-2 and other viruses, three methods can be applied to the air to reduce the chance of infection:

You can ventilate. With ventilation you expel the air with the aerosols outdoors, and introduce outdoor virus-free air. This can be achieved by opening doors and windows or adjusting the HVAC system to introduce more outdoor air. Note that moving air around with a recirculating forced air system, window air conditioner or minisplit air conditioner unit, or with a fan, is not ventilation in this sense, only air mixing.

You can filter. With filtration you keep the air indoors, but remove the floating aerosols. In environments where air is recirculated, or there is inadequate flow of outside air, stationary HVAC systems or portable air filters (e.g. HEPA filters or Corsi-Rosenthal boxes) can remove the virus and other contaminants from the air.

You can disinfect. With disinfection you keep the air and floating aerosols indoors, but “kill” (inactivate) the virus.

A summary of the four situations:

Update (2023-07-24): I’ve made a version in blue-red for people with color blindness:

These are all drawings, in real life you’ll not see things floating in the air:

Made in collaboration with Jose Luis Jiménez.

]]>
https://numeroteca.org/2022/03/15/what-can-you-do-to-reduce-viral-transmision-through-indoor-aerosols/feed/ 2 5880
Suave https://numeroteca.org/2022/01/13/suave/ https://numeroteca.org/2022/01/13/suave/#respond Fri, 14 Jan 2022 00:22:16 +0000 https://numeroteca.org/?p=5868 La anterior versión en español tenía diferente la última pancarta. Hay una versión en inglés.

Y otra en polaco

]]>
https://numeroteca.org/2022/01/13/suave/feed/ 0 5868
Feliz afuera https://numeroteca.org/2021/12/24/feliz-afuera/ https://numeroteca.org/2021/12/24/feliz-afuera/#respond Fri, 24 Dec 2021 16:28:56 +0000 https://numeroteca.org/?p=5780 https://numeroteca.org/2021/12/24/feliz-afuera/feed/ 0 5780 Imprime “En el aire” https://numeroteca.org/2021/12/20/imprime-en-el-aire/ https://numeroteca.org/2021/12/20/imprime-en-el-aire/#respond Mon, 20 Dec 2021 23:22:53 +0000 https://numeroteca.org/?p=5769 En vista de la nueva ola y de que todavía las cosas no están muy claras ahí fuera, he decidido publicar en papel las viñetas de En el Aire que he ido publicando este año.

Pensé en imprimir y distribuir personalmente en mi entorno más cercano, pero iba a ser imposible gestionarlo en otros lugares, así que os dejo con el PDF por si queréis imprimirlo y regalarlo por ahí. Si lo imprimís, me encantará que mandéis una foto. Lo regalo o lo vendo por el costo de impresión, para producir más.

  1. Imprime el PDF en A4 a doble cara. Importante: no ajustar al imprimir.
  2. Corta en 4 por la mitad.
  3. Ordena los 4 trozos.
  4. Dobla.
  5. Si puedes, grapa.

El resultado es un librito de 16 páginas en formato A7.

]]>
https://numeroteca.org/2021/12/20/imprime-en-el-aire/feed/ 0 5769
Luchando con los barómetros del CIS https://numeroteca.org/2021/05/30/luchando-con-los-barometros-del-cis/ https://numeroteca.org/2021/05/30/luchando-con-los-barometros-del-cis/#respond Sun, 30 May 2021 18:22:14 +0000 https://numeroteca.org/?p=5637 TLDR: cómo procesar uan pregunta de todos los barómetros del CIS que no está en los archivos fusionados. Necesito para mi tesis procesar todos los microdatos. Preguntas y próximos pasos al final.

Una de las fuentes de datos que uso para mi tesis son los barómteros del CIS. Cada mes desde hace muchos años el CIS hace una encuesta, barómetro, en donde se pregunta por los tres principales problemas que tiene España.

Como los microdatos de cada barómetro están disponibles, esto es, cada una de las respuestas a los cuestionarios está publicada, es posible analizar y cruzar variables por edad, comunidad autónoma o profesión. El primer problema es conseguir y procesar los datos.

Disponibilidad de los datos: web y FID

Lo primero es dirigirse a la página del CIS a descargarlos (pestaña Estudios http://www.analisis.cis.es/cisdb.jsp), pero se encuentra uno el primer problema: hace falta introudcir tus datos personales (nombre, apellidos, universidad, email, objeto) para descargarlo, lo cual descarta un scrapero rápido automatizado de los datos. Existen datos fusionados de varios barómetros juntos para algunos años, pero no están disponibles para todos los años.

Así que la siguiente opción es usar los Fichero Integrado de Datos (FID) (http://analisis.cis.es/fid/fid.jsp)  “un único fichero, de los microdatos de un conjunto de variables, para los estudios del CIS que se seleccionen”:

“El interfaz permite al usuario elegir de forma rápida y cómoda a partir de una colección, los estudios que desee y, de estos, las variables deseadas de entre las contenidas en el diccionario del FID. Posteriormente, la solicitud se envía al CIS y, una vez que el CIS procede a su autorización, el fichero con los microdatos seleccionados se puede descargar en formato ASCII o SAV, de modo sencillo y fácil de tabular por diversos programas estadísticos. Es necesario el registro del usuario o identificación del mismo (si el usuario ya está registrado), para completar una petición de datos”.

Web del CIS. Explicación sobre los Fichero Integrado de Datos (FID).

El problema es que la pregunta que necesito “¿Cuál es el principal problema que existe en España? ¿ y el segundo? ¿y el tercero?”, aunque su enunciado concreto ha ido variando a lo largo de los años, no está disponible en los FID, ya que solamente se ofrece un subconjunto de las variables integradas.

.zip a .zip

Así que he solicitado por email todos los barómetros disponibles, esta es la lista de todos los disponibles: https://code.montera34.com/numeroteca/barometro_cis/-/blob/master/data/original/barometros-cis.csv

Según me han indicado soy el primero en hacerlo. Me parece raro que nadie lo haya hecho antes, ciertamente. Seguramente hayan usado otros métodos.

Tras una serie de pruebas con unos archivos de prueba para comprobar que los abría bien han procedido a preparar para que descargue todos los microdatos de los barómetros en zips por año. En pocos días me he hecho con la colección completa de microdatos de barómetros.

.zips esperando paciente a ser abiertos.

Un poco de código para descomprimirlos fácilmente:

unzip ‘*.zip’        unzipear todos los archivos
mv */* .            mover los que están en directorios al raiz
mv MD*/* .
rm -r 19* 20*  fu*    eliminar directorios vacíos
Ahora que tengo todos, volver a unzipear:
unzip ‘*.zip’

Ahora creo un archivo con todos los *.sav:
ls | grep sav > files.csv

Ahora tengo el listado de todos los barómetros disponibles (los de 2020 y 2021 me da un problema para abrirlos que tengo que resolver “error reading system-file header”). Puedo procesar todos los microdatos de los barómetros desde junio de 1989, los anteriores solamente están disponibles uno de 1987 (nº 1695), dos de 1985 (nº 1442 y 1435) y otro de 1982 (nº 1320), que me enviarán cuando sea posible. Para el resto desde junio de 1979 no hay microdatos y habría que pagar por ellos si los quisiera.

Encontrar la pregunta y su número

Documentos que se incluyen en un .zip de un barómetro.

Para poder analizar las respuestas por CCAA, que es mi objetivo, tengo que encontrar el código de la pregunta, que, oh sorpresa, va cambiando a lo largo de los años. Para ello he montado una hoja de cálculo para anotar qué código lleva la pregunta (https://docs.google.com/spreadsheets/d/1xxlt8FnWanVzYkIQdU2yaWlE8-HUvnzVXSiE2QvNJRU/edit#gid=0). Así, la primera vez que aparece es en los archivos disponibles es de mayo de 1992, y tiene los códigos P501, P502 y P503, una por cada uno de los problemas percibidos. Ese código ha ido variando a lo largo de los años a la pregunta: P1401, P701, P1601, P1201… los primero números indican el número de la pregunta. Para averiguar el código hay dos maneras. Cada barómetro está compuesto por un conjunto de archivos. Así, el barómetro nº 3134 tiene los siguientes archivos:

  • 3134.sav microdatos
  • DA3134 archivo dat
  • ES3134
  • FT3134.pdf ficha técnica
  • cues31314.pdf cuestionario original
  • codigo3134.pdf códigos utilizados
  • tarjetas3134.pdf tarjetas que usan los encuestadores

Al principio miraba si la pregunta estaba en el cuestionario, pero luego vi que era más rápido mirar directamente si en el archivo con los códigos venía la pregunta y su número: “P.7 Principal problema que existe actualmente en España. El segundo. El tercero” que con suerte correspondería con la variable P701, P702 y P703. 

El problema es que en algunos casos contados ponen la “p” de la variable con minúscula y el código es p701. Algo que solamente se puede averiguar abriendo el archivo .sav. Para ver lo que contiene el archivo.sav con la librería “foreign” en R: df <- read.spss(data, use.value.label=TRUE, to.data.frame=TRUE), siendo data el “path” al archivo .sav correspondiente.

Desde Rstudio se puede previsualizar el archivo .sav cargado y mirar cuál es el código correcto:

Así se ve en Rstudio.

Lo que pasa es que muchos barómetros no tienen disponible esa pregunta, pero ¿cómo saberlo para ahorrarnos tiempo? Existe una página, ya ni recuerdo cómo llegué a ella, que tiene todas las respuestas recogidas y procesadas “Tres problemas principales que existen actualmente en España (Multirrespuesta %)  http://www.cis.es/cis/export/sites/default/-Archivos/Indicadores/documentos_html/TresProblemas.htm, esto pernite de un vistazo saber cuáles son los barómetros que tienen respuesta:

Un trozo de la página resumen a la pregunta http://www.cis.es/cis/export/sites/default/-Archivos/Indicadores/documentos_html/TresProblemas.html

Así se puede ir a tiro hecho a buscar el código en los barómetros que sabemos tienen respuesta. Relleno celdas de la hoja de cálculo de las columnas p1, p2 y p3 (cada una corresponde con una de las respuestas a los 3 principales problemas) copiando el valor anterior, hasta que da error el script que lo procesa (ver más adelante).

Clasificando en p1, p2 y p3 los códigos de las preguintas en cada uno de los barómtreos. En negro si lo he mirado, en gris si lo he “acertado” y no ha fallado el script.

Pero no se detienen los problemas. Los encuestadores recogían la respuesta libre (que no se ofrece en los microdatos) para después clasificarla en unos cajones-respuestas establecidos:

Lo que ocurre es que en algunos años “La corrupción y el fraude” no se ofrecían como respuesta posible, así que de haber habido alguna respuesta corrupción como respuesta en aquello años de bonanza económica habrá ido a la casilla de “otros”. Esto pasó entre septiembre de 2000 y julio de 2001, por ejemplo, lo que hará que la serie tenga algunos agujeros. Habrá que hacerlos explícitos.

Procesar 1: juntar todas las respuestas

Una vez sorteadas estas trabas es la hora de programar un script que vaya abriendo cada archivo .sav, seleccione las variables adecuadas y cree un archivo con todas las respuestas:

# Select and load multiple barometro files ------------

# where are files stored
path <- "~/data/CIS/barometro/almacen/tmp/"

# remove if it hasn't got the questions
cis_files <- cis_files %>% filter( p1 != "" )

# iterate through all the files
for ( i in 1:nrow(cis_files) ) {
# for ( i in 1:8 ) {
  print("--------------------")
  print(paste(i,cis_files$name[i],cis_files$date[i]  ) )
  # create path to file
  data <- paste0(path, cis_files$name[i])
  # load data in the file
  df <- read.spss(data, use.value.label=TRUE, to.data.frame=TRUE)
  
  # chec if variable ESTU exists
  if ( "ESTU" %in% colnames(df) ) {
    df <- df %>% mutate(
      ESTU = as.character(ESTU)
    )
  } else {
    # if ESTU is not in the variables, insert the ID of the barometer
    df <- df %>% mutate(
      ESTU = cis_files$id[i],
      ESTU = as.character(ESTU)
    )
  }
    
  # if REGION exixts, rename it as CCAA 
  if ( "REGION" %in% colnames(df) ) {
      df <- df %>% rename(
        CCAA =  REGION
      )
    }
  
  # add date to data by taking it gtom cis_id dataframe
  df <- left_join(df,
                  cis_id %>% select(id,date),
                  by = c("ESTU"="id")
                  # ) %>% select( date, ESTU, CCAA, PROV, MUN, P701, P702, P703 )
  )
  # select the basic columns and the 3 questions
  # the true name of the question is specified in the online document https://docs.google.com/spreadsheets/d/1xxlt8FnWanVzYkIQdU2yaWlE8-HUvnzVXSiE2QvNJRU/edit#gid=0
  selected <- c( "date", "ESTU", "CCAA", "PROV", "MUN", cis_files$p1[i], cis_files$p2[i], cis_files$p3[i])
  
  df <- df %>% select(selected) %>% rename(
    p1 = cis_files$p1[i],
    p2 = cis_files$p2[i],
    p3 = cis_files$p3[i],
  ) %>% mutate(
    p1 = as.character(p1),
    p2 = as.character(p2),
    p3 = as.character(p3)
  )
  
  # For the first file
  if ( i == 1) {
    print("opt 1")

    # loads df in the final exportdataframe "barometros"
    barometros <- df
    
    print(df$date[1])
    print(df$ESTU[1])
    
  } else {
    print("not i==1")

    barometros <- rbind( df, barometros)
  }
  
}

Por el momento tengo 570.795 respuestas a la pregunta analizada de 223 barómetros, a falta de solventar algunos problemas.

Limpiar datos 1: los nombres de las CCAA

Ahora toca limpiar los datos. Lo primero es limpiar los nombres de las CCAA que a lo claro de los años han ido acumulando diferentes nomenclaturas y alguna vez han tenido el código de la CCAA en vez del nombre (ver https://code.montera34.com/numeroteca/barometro_cis/-/blob/master/analizando-CIS.R#L161), copio solamente un extracto:

barometros <- barometros %>% mutate(
CCAA = as.character(CCAA),
CCAA = CCAA %>% str_replace("\{",""),
CCAA = CCAA %>% str_replace("\}",""),
CCAA = CCAA %>% str_replace("\(",""),
CCAA = CCAA %>% str_replace("\)",""),
CCAA = CCAA %>% str_replace(" "," "),
CCAA = CCAA %>% str_replace("Euskadi","País Vasco"),
CCAA = CCAA %>% str_replace("País Vasco ","País Vasco"),
CCAA = CCAA %>% str_replace("Pais Vasco","País Vasco"),
CCAA = CCAA %>% str_replace("País vasco","País Vasco"),
CCAA = CCAA %>% str_replace("País vascoPV","País Vasco"),
CCAA = CCAA %>% str_replace("País VascoPV","País Vasco"),

)

Procesar 2: Contar respuestas por barómetro

Ahora toca agrupar las respuestas por barómetros de nuevo y calcular el número de encuestas por barómetro que hacen mención a tal o cual tema:

# Group by date and CCAA ----------------------
evol_count <- barometros %>% group_by(CCAA,date) %>% summarise(
  # counts number of elements by barometro and CCAA
  count_total = n()
) %>% ungroup()

evol_p1 <- barometros %>% group_by(CCAA,date,p1) %>% summarise(
  # counts number of answers for each type for question 1 by barometro and CCAA
  count_p1 = as.numeric( n() )
  )
evol_p2 <- barometros %>% group_by(CCAA,date,p2) %>% summarise(
  # counts number of answers for each type for question 1 by barometro and CCAA
  count_p2 = as.numeric( n() )
)
evol_p3 <- barometros %>% group_by(CCAA,date,p3) %>% summarise(
  # counts number of answers for each type for question 1 by barometro and CCAA
  count_p3 = as.numeric( n() )
)

# joins p1 and p2
evol <- full_join(
  evol_p1 %>% mutate(dunique = paste0(date,CCAA,p1)) ,
  evol_p2 %>% mutate(dunique = paste0(date,CCAA,p2)) %>% ungroup() %>% rename( date_p2 = date, CCAA_p2 = CCAA),
  by = "dunique"
) %>% mutate (
  # perc_p2 = round( count_p2 / count_total * 100, digits = 1)
) 

# fills the dates and CCAA that were empty
evol <- evol %>% mutate(
  date = as.character(date),
  date = ifelse( is.na(date) , as.character(date_p2), date),
  date = as.Date(date),
  
  CCAA = as.character(CCAA),
  CCAA = ifelse( is.na(CCAA), as.character(CCAA_p2), CCAA),
  CCAA = as.factor(CCAA)
)

# joins p1-p2 with p3
evol <- full_join(
  evol,
  evol_p3 %>% mutate(dunique = paste0(date,CCAA,p3)) %>% ungroup() %>% rename( date_p3 = date, CCAA_p3 = CCAA),
  by = "dunique"
) %>% mutate (
  # perc_p2 = round( count_p2 / count_total * 100, digits = 1)
) 

# fills the dates and CCAA that were empty
evol <- evol %>% mutate(
  date = as.character(date),
  date = ifelse( is.na(date) , as.character(date_p3), date),
  date = as.Date(date),
  
  CCAA = as.character(CCAA),
  CCAA = ifelse( is.na(CCAA), as.character(CCAA_p3), CCAA),
  CCAA = as.factor(CCAA)
)

# add number of answers per barometer and CCAA
evol <- left_join(
  evol %>% mutate(dunique = paste0(date,CCAA)),
  evol_count %>% mutate(dunique = paste0(date,CCAA)) %>% select(-date,-CCAA),
  by = "dunique"
) %>% mutate (
  count_p = count_p1 + replace_na(count_p2,0) +  replace_na(count_p3,0),
  # este sistema da error en los "no contesta" al contarlos varias veces al sumar!!!
  perc = round( count_p / count_total * 100, digits = 1)
) %>% select ( date, CCAA, everything(), -dunique, -date_p2, -date_p3, -CCAA_p2, -CCAA_p3 ) %>% mutate(
  p = p1,
  p = ifelse( is.na(p),p2,p),
  p = ifelse( is.na(p),p3,p),
  date = as.Date(date)
)

Limpiar los datos 2: las respuestas

Toca limpiar las respuestas para eliminar las múltiples formas de escribir “La corrupción y el fraude” o “Corrupción y fraude ” (ojo al espacio después de “fraude” que a algunos vuelve loco). Una tarea de estandarización de las respuestas que hago con OpenRefine y que en algunos casos requiere de decisiones subjetivas, véase el ejemplo:

Detección de respuestas parecidas para su consolidación en OpenRefine.
Proceso de consolidación de respuestas con OpenRefine.

Visualizar

El siguiente paso es visualizar los resultados para detectar los primero errores y corregir problemas en la captura y procesado. Antes de publicar esto ha ocurrido varias veces: detecté unos barómetros de 2016 que no se habían descomprimido, por ejemplo.

En las primeras visualizaciones trato de ver que salen valores congruentes y que no hay agujeros en los datos. En este primer gráfico de rejilla muestro el porcentaje de entrevistas de cada barómetro que tienen como respuesta “El paro” (rosa) y “La corrupción y el fraude” (verde). Ya se pueden ver cómo hay mucho más ruido en lugares como Ceuta y Melilla por el bajo número de respuestas, pero que el resto de valores sigue una tendencia parecida. En La Rioja (fila de abajo, tercera por la izquierda) también se ve ese problema, con sus 17 entrevistas por barómetro.

Un primer vistazo a las visualizaciones, publicaré más cuando tenga más claro que no hay errores en los datos

Problemas y siguientes pasos

Desde el CIS no solamente me enviaron todos los microdatos sino que me asesoraron sobre su uso. Les conté lo que pretendía hacer con los datos y me advirtieron de dos cosas relacionadas con la cantidad de entrevistas por CCAA y la ponderación:

A. Ponderación en SPSS

“Los ficheros Sav, por defecto van con la ponderación activada, siempre, en todos los que hemos pasado ya y en los que pasaremos, de esta lista”, algo que no entiendo del todo bien, porque eso no creo que deba afectar a los microdatos.
Si alguien ha trabajado con los .sav en SPSS quizás me pueda aclarar cómo funciona la ponderación en ese programa, dónde se almacena esa información.

B. Si no tienes más de 400 entrevistas…

“Nosotros no consideramos representativos los datos de Comunidades con un tamaño menor a 400 entrevistas. En los barómetros, salvo los del último año para algunas Comunidades (mire ficha técnica), el tamaño muestral es de entorno a las 2.500 entrevistas, eso significa que habitualmente salvo Madrid y Cataluña, la mayor parte se quedan muy por debajo, incluso de menos de 100. Los márgenes de error cuando se quiere hablar sobre esos datos son muy altos, y más aún si además va a hacer cruces”. Me redirigían a una sección de su web:

ADVERTENCIA: El error muestral aumenta conforme disminuye el número de entrevistas realizadas. Téngase presente sobre todo en los cruces de variables y las preguntas filtradas. A modo orientativo, bajo la hipótesis de muestreo aleatorio simple, P=Q=1/2 y un 95% de intervalo de confianza, véase la siguiente tabla: Fuente: http://www.analisis.cis.es/aAvisoVars.jsp?tipo=2&w=800&h=600

Una cuestión no menor que puede hacer que no use finalmente estos datos para las comunidades, o tenga que emplear grados de incertidumbre demasiado altos.

En los últimos estudios sí aparece la ponderación usada para el valor global:

Tabla de pnoderaciones (en un PDF) en la ficha técnica de un barómetro. Ejemplo http://www.cis.es/cis/export/sites/default/-Archivos/Marginales/3300_3319/3318/Ft3318.pdf

Un cálculo rápido de número de encuestas por barómetro y CCAA:

CCAAmediamediana
Andalucía439.4437
Cataluña396.9395
Madrid328.9328
Valencia261.6265
Galicia167.3164
Castilla y León152147
País Vasco129.8125
Castilla-La Mancha109.8109
Canarias99.599
Aragón75.274
Murcia71.472
Asturias66.864
Extremadura63.262
Baleares48.847
Navarra33.734
Cantabria33.533
Rioja17.117
Ceuta4.14
Melilla4.14
evol %>% select( date, CCAA, count_total) %>% distinct() %>% group_by(CCAA) %>% filter ( date < as.Date( “2017-12-01”)) %>% summarise(
media = round( mean(count_total), digits = 1),
mediana = median(count_total))

Día en que se realiza la entrevista ¿se podría saber?

Tenía interés en cruzar el día de la encuesta para ver si se podía estudiar con determinados escándalos que tienen un día muy marcado su anuncio en los medios de comunicación, podŕia verse su impacto en las encuestas, pero ese dato no está disponible. Lo que se conoce es el periodo en que se realizan las encuestas, que suele ser la primera quincena del mes. ¿se podrá conseguir la fecha exacta de cada entrevista?

]]>
https://numeroteca.org/2021/05/30/luchando-con-los-barometros-del-cis/feed/ 0 5637
Salvados por las mamparas https://numeroteca.org/2021/05/13/salvados-por-las-mamparas/ https://numeroteca.org/2021/05/13/salvados-por-las-mamparas/#respond Thu, 13 May 2021 15:20:41 +0000 https://numeroteca.org/?p=5623 https://numeroteca.org/2021/05/13/salvados-por-las-mamparas/feed/ 0 5623 En el teatro de la higiene… nos bañamos en gel https://numeroteca.org/2021/04/29/nos-banamos-en-gel/ https://numeroteca.org/2021/04/29/nos-banamos-en-gel/#respond Thu, 29 Apr 2021 08:13:31 +0000 https://numeroteca.org/?p=5619 https://numeroteca.org/2021/04/29/nos-banamos-en-gel/feed/ 0 5619 En el teatro de la higiene… No paramos de limpiar superficies https://numeroteca.org/2021/04/28/no-paramos-de-limpiar-superficies/ https://numeroteca.org/2021/04/28/no-paramos-de-limpiar-superficies/#respond Wed, 28 Apr 2021 20:21:59 +0000 https://numeroteca.org/?p=5612 https://numeroteca.org/2021/04/28/no-paramos-de-limpiar-superficies/feed/ 0 5612 Cuando hablan de Cifuentes y su máster en los Telediarios https://numeroteca.org/2021/04/16/cuando-hablan-de-cifuentes-y-su-master-en-los-telediarios/ https://numeroteca.org/2021/04/16/cuando-hablan-de-cifuentes-y-su-master-en-los-telediarios/#respond Fri, 16 Apr 2021 14:14:48 +0000 https://numeroteca.org/?p=5599 En el mes de Marzo de 2018 eldiario.es sacó a la luz irregularidades en el caso del máster de la entonces presidenta de la Comunidad de Madrid Cristina Cifuentes. Para tener más contexto puedes escuchar el magnífico podcast sobre el escándalo que publicó eldiario.es.

En esta serie de posts analizaremos cuantitativa y cualitativamente la cobertura que se le dio al escándalo en diferentes medios de comunicación y redes sociales para intentar entender cómo es el flujo de información entre unos canales y otros.
Estos textos forman parte de la investigación para mi tesis doctoral sobre cobertura de corrupción en España. En su momento ya analicé la cobertura en las portadas de los periódicos en papel.

Porcentaje de noticias en portada Cifuentes (sobre el total) en periódicos digitales.

Hoy analizo las noticias sobre lo que se ha venido a conocer como el caso “Máster” en una nueva base de datos: los Telediarios de Televisión Española que Civio pone fácil estudiar con su herramienta Verba (https://verba.civio.es/). 

Verba permite hacer búsquedas por palabras en las transcripciones de los telediarios de TVE  y descargar los datos. La unidad de medida es la frases que contiene tal o cual palabra.

No centraremos ahora en cuando estalló el escándalo, el 21 de marzo de 2018. El resultado es fruto buscar en Verba tras la búsqueda multipalabra para ese periodo concreto: “Cifuentes”|”Javier Ramos”|”Enrique Álvarez Conde”|”Pablo Chico”|”María Teresa Feito”|”Alicia López de los Cobos”|”Cecilia Rosado”|”Clara Souto|Amalia Calonge”|”Universidad Rey Juan Carlos”.

Los gráficos están hechos con VerbaR, unos scripts de R que he desarrollado para analizar con R datos de Verba. Cada línea negra es una frase que incluye una de las palabras de la búsqueda:

El gráfico está dividido en una parte de arriba, para los telediarios de las 15:00h y la de la abajo, para los de las 21:00h. He marcado los primeros dos minutos para enfatizar la cabecera o “portada” del noticiario. No tengo claro todavía cuánto dura este inicio con las noticias más destacadas.

Aquel 21 de marzo, tras salir publicado el escándalo en eldiario.es el Telediario de las 15:00h se hizo eco de la noticia en su apertura:

  • 1’18”: La Universidad Rey Juan Carlos atribuye a un error de transcripción que en dos asignaturas del máster que Cristina Cifuentes cursó hace seis años figurase como no presentada.
  • 1’28”: Cifuentes aprobó ambas asignaturas, según ha confirmado el rector.

Más adelante expandía la noticia ne el minuto 14:

  • 14’56”: En Madrid, la universidad Rey Juan Carlos niega cualquier irregularidad en el máster de la presidenta Cristina Cifuentes.
  • 15’03”: Un diario digital sostiene que obtuvo la titulación con dos notas falsificadas.

Verba ofrece la posibilida de acceder a la transcripción completa y no solamente a las frases resultado de la búsqueda-

En el gráfico se puede ver cómo en ese primer día hay dos bloques de información: el del resumen inicial, esos 2 ó 3 minutos -estaría bien poder cuantificarlo- y cuando se amplia la noticia. Esa cabecera viene a ser análoga a la portada de los periódicos, donde se seleccionan las noticias más importantes. 

El problema de la búsqueda por palabras es que se deja fuera las frases que no contienen las palabras buscadas pero que pertenecen a la noticia, por ello esos existen huecos en los gráficos entre unas líneas y otras. Por ejemplo, la noticia en cabecera duraba más, pero se quedó fuera de nuestra búsqueda:

  • 1’31”: La oposición pide explicaciones.
  • 1’34”: El Gobierno regional subraya la honorabilidad del comportamiento de la presidenta.

En el gráfico se ha sobredimensionado la duración de las frases asignándoles 30 segundos de duración para facilitar su lectura.

Si pudiéramos distinguir los bloques de noticias, cuando empieza un tema y acaba otro, podríamos ver algo como esto, donde coloreo “a mano” en rojo la posible duración del total de las noticias relacionadas con el máster:

Este otro gráfico visualiza el número de frases que contienen las palabras clave. Suma todas las frases encontradas y las agrega en una columna:

Nos da una idea aproximada de la evolución de la cobertura. Sería interesante poder clasificar esta información según los días que la noticia ha estado en la cabecera del telediario y poder así estudiar la relación de tiempo de frases dedicadas a la noticia con su aparición en el resumen de inicio. También sería interesante conocer la duración de la noticia, y no únicamente el número de frases encontradas.

Si volvemos a hacer el primer gráfico clasificando manualmente las frases seleccionadas, podemos entender mejor la  historia: primero salta la noticia sobre el master (“máster” en verde) , vuelve a aparecer a primeros de abril con fuerza, con 10 días seguidos con noticia en cabecera en el telediario de las 15:00h y se cierra con la dimisión el 26 de abril, tras el nuevo escándalo del vídeo sobre el robo de las cremas en un supermercado:

Podemos ver estos mismo datos agregados en columnas:

Este primer análisis nos permite ver la potencia y las limitaciones de este tipo de visualizaciones:

  • las palabras clave de búsqueda son determinantes
  • es necesario reclasificar la información para poder analizar en profundidad la evolución de la cobertura. Otras variables a analizar serían el enfoque de las noticias.

¿Cómo de relevante fue la cobertura de TVE en relación a otros medios de comunicación o redes sociales como Twitter? Lo veremos en los siguientes capítulos.

He creado una aplicación con Shiny para poder generar gráficos de este tipo y analizar más rápidamente las diferentes búsquedas en Verba: [actualizción: mejor esta versión: https://r.montera34.com/users/numeroteca/verbar/app/] https://numeroteca.shinyapps.io/verbar/

Gracias a que es interactiva puedes ver que contiene cada frase.

Hay una opción que te permite seleccionar una fecha y ver todas las frases de ese día.

]]>
https://numeroteca.org/2021/04/16/cuando-hablan-de-cifuentes-y-su-master-en-los-telediarios/feed/ 0 5599
Cada vez más papeletas https://numeroteca.org/2021/03/22/cada-vez-mas-papeletas/ https://numeroteca.org/2021/03/22/cada-vez-mas-papeletas/#comments Mon, 22 Mar 2021 09:54:00 +0000 http://numeroteca.org/?p=5587 English version.

]]>
https://numeroteca.org/2021/03/22/cada-vez-mas-papeletas/feed/ 1 5587
Vivir es respirar https://numeroteca.org/2021/03/20/vivir-es-respirar/ https://numeroteca.org/2021/03/20/vivir-es-respirar/#respond Sun, 21 Mar 2021 00:43:27 +0000 http://numeroteca.org/?p=5583 English version.

]]>
https://numeroteca.org/2021/03/20/vivir-es-respirar/feed/ 0 5583