Acerca del CIS y la cocina

Escribo hoy acerca del CIS y la cocina de la intención de voto. Lo hago desde la ignorancia informada en esos temas y sin pretensión alguna de ser o parecer más listo que otros.

El CIS realiza unas encuestas (con un muestreo amplio y bien diseñado, cuentan), de las que obtiene, entre otras cosas, una serie de datos, $latex x$ que incluyen simpatía, recuerdo de voto, etc. Existe por otra parte un valor enteléquico, $latex y$, no siempre observable, que conocemos por resultados electorales si se votase hoy o algo parecido. La llamada cocina es simplemente una función $latex f$ tal que $latex \hat{y} = f(x)$ es próxima a $latex y$. Esta función se construye gracias a que históricamente, cada vez que se convocan elecciones, se han observado parejas $latex (x, y)$.

Hoy he asistido a un "evento" sobre ciencia de datos en Cabify: dos partes y una reflexión

La primera parte

Métodos sofisticados (técnica, metodológicamente) para hacer más eficiente la movilidad urbana. Nowcasts en lugar de forecasts (¡genial!), técnicas de NPL aplicadas en otros contextos (¡bien!), vector embeding) (hummmm…),… y, en general un derroche de talento para conseguir hacer más con menos (y, por el camino, ganar algo de dinero, por supuesto).

La segunda parte

Con pizza y cerveza y en petit comité, cómo todo eso puede desaparecer de un plumazo de los que se publican en el BOE por obra y gracia de la caverna. Que bien podría pasar que Cabify tuviese en el futuro que dejar de operar en el país que lo vio nacer, España, si al regulador le da por ahí.

Recordatorio: ideas para futuros TFMs de "ciencia de datos"

Todos los años me toca proponer potenciales TFMs para mis alumnos de donde quiera que sean. Para no olvidarme, anoto aquí esta: bajar el histórico de barómetros del CIS (¿será posible?) y las preguntas que entran a la cocina de la intención de voto. Con ellas, crear un modelo que lo prediga.

Bonus: identificar un cambio estructural tras la entrada de Tezanos al CIS.

Así de floja está la evidencia científica (sobre el impacto de Airbnb en el mercado inmobiliario)

Un reciente artículo de El País tiene un título que lo dice todo: Los informes que refutan a la CNMC: Airbnb sí infla el precio de la vivienda en EE UU. Dice en la entradilla:

Tres estudios universitarios muestran que las plataformas de alquiler turístico han encarecido el mercado del alquiler en ciudades como Los Ángeles y Boston.

Así que he buscado uno de los tres, How Airbnb Short-Term Rentals Exacerbate Los Angeles’s Affordable Housing Crisis: Analysis and Policy Recommendations y me dispongo a comentarlo en vivo, página a página.

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