R

Enlaces parasociológicos

Tenía tan bien guardados en el disco duro una serie de enlaces de interés parasociológico que no había forma humana de dar con ellos.

Para que no me vuelva a pasar y por su potencial interés para otros, los cuelgo aquí.

El primero de ellos (que no sé por qué lo guardé) son las diapositivas de una charla acerca de cómo transformar porcentajes de votos en escaños en España.

Los otros tres se refieren a la metodología que utiliza la gente de electionforecast.co.uk:

Extingámonos con dignidad: generaciones actuales y futuras, no incurramos en los errores de las anteriores

Participé el otro día en una cena con gente friqui. Constaté con cierto desasosiego cómo han virado los sujetos pasivos de nuestra indignación profesional a lo largo de los años.

Antaño, fueron los viejos que seguían apegados a la paleoinformática. Hogaño, los primíparos que usan Python y desdeñan R.

Tengo sentimientos encontrados y no sé qué más añadir.

"Embeddings" y análisis del carrito de la compra

Escribiendo la entrada del otro día sobre embeddings, no se me pasó por alto que la fórmula

$$ \frac{P(W_i,C_i)}{P(W_i)P(C_i)}$$

que escribí en ella es análoga al llamado lift (¿es el lift?) del llamado análisis del carrito de la compra, i.e., el estudio de productos que tienden a comprarse juntos (véase, por ejemplo, esto).

Lo cual me lleva a sugerir mas no escribir una entrada en la que se rehagan este tipo de análisis usando embeddings: los ítems como palabras, los carritos como textos, etc. Si alguien tiene tiempo y le sale algo potable, que avise y lo enlazo aquí.

Planes de búsqueda y rescate con R

Existe un paquete muy curioso en CRAN, rSARP para diseñar, optimizar y comunicar la evolución de planes de búsqueda y/o rescate (p.e., de un niño desaparecido en un monte).

Es particularmente interesante porque este tipo de problemas lo tienen todo: desde distribuciones a priori (sobre dónde es más probable encontrar lo que se busca) hasta la decisión final (explórese tanto aquí y tanto allá) teniendo en cuenta restricciones de tiempo y recursos.

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:

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

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.

¿Por que slt-ear si puedes stR-ear?

La función stl (véase aquí un ejemplo de uso). Pero tiene sus limitaciones.

El paquete stR la extiende y permite, entre otras cosas, introducir distintos tipos de estacionalidades (p.e., anuales y semanales).