Posts

Disponible el fichero de datos abiertos más goloso de ambas castillas: las rutas de Bicimad

R

Albricias, el ayuntamiento de Madrid ha liberado el fichero más goloso de ambas castillas: el de las rutas de usuarios de Bicimad, viaje a viaje, con su estación de origen, estación de destino, tiempo de recorrido, etc. Tiempo os falta para echarle un vistazo y hacer cosas chulas con él.

Los datos están aquí.

Se puede leer con código no muy distinto de este:

library(RJSONIO)

raw <- readLines("201808_Usage_Bicimad.json")
dat <- iconv(raw, "latin1", "utf8")
dat <- sapply(dat, fromJSON)

A bote pronto, se me ocurren algunas cosas que se pueden hacer con esos datos:

Creo que necesitamos un neologismo para la versión pobre de solucionar

Mis colegas tecnólogos son casi todos víctimas de una confusión del pensamiento que se ha dado en llamar solucionismo tecnológico: identifican problemas y se les ocurren líneas de código en Python que podrían solucionarlos. Les recomiendo una incursión por las páginas de To Solve Everything Click Here.

Una ONG, no sé cuál, compró la publicidad en los andamios de un edificio próximo a mi casa. Decía que a 1400 niños les pasaba nosequé cosa mala al año (me acuerdo de la cifra y no de la cosa, lo siento) y exigían una ley para solucionar el problema. Identifican un problema y se les ocurren líneas de texto en el BOE que podrían solucionarlo. Supongo que existirá un adjetivo adecuado a solucionismo que identifique con precisión su particular patología intelectual. Y de paso, una instructiva lectura de la historia, que exisitirá, sobre las distintas leyes sobre vagos y maleantes que han existido y sus correspondientes eficacias.

Una anécdota sobre el mercado eléctrico y sus mermas

Hace años, algunos ya, di un curso de R en una empresa de consultoría bastante grande. La impartí dentro de un grupo que desarrollaba soluciones para el mercado eléctrico. Hablando con ellos, a la hora del café, me contaron uno de los proyectos en los que trabajaban: un sistema de optimización de la distribución eléctrica que podía ahorrar millones (no recuerdo bien la cifra, pero era impresionante) a las compañías eléctricas en concepto de energía que se disipaba y perdía sin beneficiar a nadie. Sin embargo, el proyecto no tenía comprador por un muy particular motivo: la legislación del mercado eléctrico obliga a los usuarios finales a compensar a las empresas por esas pérdidas. De modo que si se reducía la pérdida, se reducía igualmente la facturación de las compañías.

Ocurrencias: cuotas de gente de letras en la "ciencia de datos"

Cada vez me dejo ver menos por Meetups y similares. Pero el otro día no pude decir que no a pasar por un evento organizado por la gente de Politikon sobre el futuro del trabajo, el trabajo del futuro y otras cosas que no vienen al caso.

(No viene al caso pero lo resumo: acerca de la tecnología y su efecto en el trabajo en el futuro hay dos visiones contrapuestas: la de que dejará una masa enorme de desocupados y la de que no. El ponente era partidario de la segunda. Pero como sobre eso hay tanto escrito, mi posteriori movió mi priori —que era, a su vez, posteriori de muchas otras lecturas— un milímetro a la derecha.)

Los datos están histogramizados... ¿quién los deshisotogramizará?

Hace un tiempo quise hacer cosas malísimas con datos fiscales de España y Dinamarca. Pero los datos estaban histogramizados:

Gracias a Freakonometrics di con binequality. Adaptando su código, escribo

library(rvest)
library(plyr)

dk <- read_html("http://www.skm.dk/english/facts-and-figures/progression-in-the-income-tax-system")
tmp <- html_nodes(dk, "table")
tmp <- html_table(tmp[[2]])

header <- tmp[1,]
tmp <- tmp[-c(1, 2),]
colnames(tmp) <- header

# elimino declaraciones negativas
tmp <- tmp[-1,]

# elimino el total
tmp <- tmp[-(nrow(tmp)),]

colnames(tmp) <- c("rango", "contribuyentes",
    "X1", "income", "tax1", "tax2", "pct")

irpf_dk <- tmp[, c("rango", "contribuyentes",
    "income", "tax1", "tax2")]

irpf_dk$contribuyentes <- as.numeric(irpf_dk$contribuyentes)
irpf_dk$income <- as.numeric(irpf_dk$income)
irpf_dk$tax1 <- as.numeric(irpf_dk$tax1)
irpf_dk$tax2 <- as.numeric(irpf_dk$tax2)

irpf_dk$tax <- irpf_dk$tax1 + irpf_dk$tax2
irpf_dk$tax1 <- irpf_dk$tax2 <- NULL
irpf_dk$pct <- irpf_dk$tax / irpf_dk$income


irpf_dk$desde <- c(0, 25, 50, 75, 100, 125, 150,
    200, 250, 300, 350, 400, 500, 750, 1000)
irpf_dk$hasta <- c(irpf_dk$desde[-1], Inf)

irpf_dk$desde <- irpf_dk$desde / 7.44
irpf_dk$hasta <- irpf_dk$hasta / 7.44
irpf_dk$income <- irpf_dk$income / 7.44
irpf_dk$tax    <- irpf_dk$tax / 7.44

irpf_dk$mean_income <- irpf_dk$income /
        irpf_dk$contribuyentes * 1000

irpf_dk$rango <- NULL

para bajar y preprocesar los datos y después

El anómalo verano de 2018

Las temperaturas diarias máximas promedio durante el verano de 2018 en España han sido

Son las del trazo grueso y las he representado sobre las de los veranos anteriores (trazo fino) para darles contexto. (Nota: no existe tal cosa como temperatura promedio, por supuesto. He partido de temperaturas provinciales (que tampoco existen, en sí mismas pero que proporciona AEMET) y he promediado ponderando por población.)

Se aprecian dos anomalías claras, una por exceso y otra por defecto.

Contraargumentando (materialmente) sobre la falacia del fiscal

R

Hace un par de días hablé de la falacia del fiscal y granos de arroz. La entrada iba acompañada de

y la lección era: es raro no encontrar ningún clúster cuando se tiran al azar granos de arroz sobre una superficie. De lo que se derivaban más cosas que es ocioso repetir aquí.

Pero el gráfico no es desconocido para los viejos del lugar: se parece mucho al de la página 319 de ESL. Para los que no lo tengáis a mano, la parte donde se habla de un algoritmo que se llama igual que un general de Reus con calle en Méjico DF: PRIM.

¿Funcionan los programas sociales?

En España estamos acostumbrados a que los programas sociales se implementan y ya. Se convierten, como la semana santa o las navidades, en fenómenos culturales que, simplemente, están ahí (p.e., el PER) y tienen que estarlo necesariamente.

En otros países se evalúan, se miden y cabe preguntarse: ¿funcionan?

Pues en otros sitios donde se miden esas cosas, se han obtenido números como estos (que es de donde traduzco):

  • Tal vez el 80% de los que se han medido usando técnicas rigurosas y con una muestra suficiente no funcionan, es decir, producen un efecto que compense el coste.
  • Tal vez un 1-10% tiene efectos negativos.
  • Los proyectos que no han sido medidos son probablemente peores (porque se tiende a investigar más los más promisorios).

Lo anterior tiene, no obstante, una lectura positiva: ¡el ~20% funcionan! Es decir, que si este tipo de proyectos se evaluasen tempranamente y pudiesen ser cancelados de no funcionar, aplicando una especie de metáfora del reinforcement learning, en unos años casi todos serían buenos.

La falacia del fiscal: la/mi mejor explicación para profanos hasta la fecha

Leyendo The Tiger That Isn’t di con una manera alternativa para explicar la llamada falacia del fiscal de la que ya me he ocupado aquí y aquí.

Relata lo ocurrido en un pueblo inglés en el que una noche, unos vecinos (presuntamente), descendientes sin duda de aquellos campesinos búlgaros que huían de la vacuna, echaron abajo una antena de telefonía móvil que tenía al pueblo en vilo (la historia, aquí). Porque, resulta, alrededor de ella se habían dado recientemente n casos de cáncer: aquello era un clúster de cáncer. Y puestos a buscar culpables, ¿por qué no el electromagnetismo?