Un párrafo afortunadísimo sobre las "nuevas aptitudes"

Traduzco: Las nuevas aptitudes que tanto atraen la atención de los medios no sirven para resolver más eficazmente el problema de la inferencia; son puras técnicas de supervivencia para gestionar los artefactos inducidos por la computación distribuida a gran escala. Lidian con las enormes restricciones que impone el mundo de los sistemas multiproceso y distribuidos sobre los algoritmos. En este mundo tan constreñido, el elenco de algoritmos utilizables es tan limitado si se lo compara con el disponible en el de un único procesador, que es inevitable adoptar técnicas estadísticas que hubieran sido tachadas de rudimentarias, si no de inadecuadas, en otros tiempos. Estos problemas consumen nuestro tiempo y energía, deforman nuestro criterio sobre lo que resulta adecuado y nos desvían de las estrategias de análisis de datos que habríamos aplicado de oficio en otras circunstancias. ...

9 de marzo de 2017 · Carlos J. Gil Bellosta

Reducción de la dimensionalidad con t-SNE

Voy a explicar aquí lo que he aprendido recientemente sobre t-SNE, una técnica para reducir la dimensionalidad de conjuntos de datos. Es una alternativa moderna a MDS o PCA. Partimos de puntos $x_1, \dots, x_n$ y buscamos otros $y_1, \dots, y_n$ en un espacio de menor dimensión. Para ello construiremos primero $n$ distribuciones de probabilidad, $p_i$ sobre los enteros $1, \dots, n$ de forma que $$ p_i(j) \propto d_x(x_i, x_j),$$ donde $d_x$ es una determinada distancia entre puntos en el espacio original. De la misma manera, construimos sendas distribuciones de probabilidad, $q_i$, ...

8 de marzo de 2017 · Carlos J. Gil Bellosta

En contra del estado "de derecho"

Nos engañaron malamente. Nos prometieron que estudiar matemáticas nos abriría la puerta de los misterios más sutiles del conocimiento y ahora no hacemos otra cosa que celebrar como gilipollas el día de $\pi$ a golpe de retuiteo. Nos dijeron que aprendiendo ingeniería conoceríamos el funcionamiento de las cosas y acabamos usando ordenadores armados con pegamento. Con la estadística seríamos capaces de estudiar y entender los movimientos y cambios sociales, el funcionamiento de los mercados financieros, etc., y nunca pasamos de los k-vecinos. ...

7 de marzo de 2017 · Carlos J. Gil Bellosta

Cuantiles, sí, pero ¿de qué tipo?

Porque resulta que los hay de varios tipos. En R, hasta nueve de ellos: set.seed(1234) muestra <- sort(rt(100, 3)) mis.cuantiles <- sapply(1:9, function(tipo) quantile(muestra, 0.834, type = tipo)) mis.cuantiles # 83.4% 83.4% 83.4% 83.4% 83.4% 83.4% 83.4% 83.4% 83.4% #0.9065024 0.9065024 0.8951710 0.8997036 0.9053693 0.9331290 0.9015846 0.9077920 0.9063154 Las definiciones de todos ellos pueden consultarse en Sample Quantiles in Statistical Packages. Las diferencias entre ellos, de todos modos, decrecen conforme aumenta el tamaño muestral: n.obs <- seq(100, 1e5, by = 1e3) res <- sapply(n.obs, function(n){ x <- rt(n, 3) diff(range(sapply(1:9, function(tipo) quantile(x, 0.834, type = tipo)))) }) plot(n.obs, log10(res), type = "l", xlab = "n obs", ylab = "discrepancia", main = "Diferencias entre los distintos tipos de cuantiles") ...

6 de marzo de 2017 · Carlos J. Gil Bellosta

Wikipedia + prophet

El otro día escribí sobre visitas a la Wikipedia. El otro día (posiblemente otro) oí hablar de prophet. Hoy con library(wikipediatrend) library(prophet) library(ggplot2) visitas <- wp_trend( "R_(lenguaje_de_programaci%C3%B3n)", from = "2010-01-01", to = Sys.Date(), lang = "es") mis.visitas <- visitas[, c("date", "count")] colnames(mis.visitas) <- c("ds", "y") pasado <- mis.visitas[1:1500,] m <- prophet(pasado) futuro <- make_future_dataframe(m, periods = nrow(mis.visitas) - 1500) prediccion <- predict(m, futuro) pred.plot <- plot(m, prediccion) pred.plot + geom_line(data = mis.visitas[1501:nrow(mis.visitas),], aes(x = ds, y = y), col = "red", alpha = 0.2) + xlab("fecha") + ylab("visitas") + ggtitle("Predicción de visitas a la página de R\nen la Wikipedia con prophet") construyo que muestra la predicción del número de visitas a la página de R en la Wikipedia basada en las primeras 1500 observaciones de la serie. Para las restantes, el gráfico muestra tanto los valores predichos como los reales (en rojo pálido). ...

3 de marzo de 2017 · Carlos J. Gil Bellosta

"Todas" las terrazas de Madrid

es un mapa en el que, en rojo, figuran todas (véase la coda) las terrazas de Madrid. Los datos están extraídos del censo de locales, sus actividades y terrazas de hostelería y restauración del ayuntamiento y están procesados con terrazas <- fread("http://datos.madrid.es/egob/catalogo/200085-17-censo-locales.txt") terrazas$coordenada_x_local <- as.numeric(gsub(",", ".", terrazas$coordenada_x_local)) terrazas$coordenada_y_local <- as.numeric(gsub(",", ".", terrazas$coordenada_y_local)) tmp <- terrazas[terrazas$coordenada_x_local > 1000, ] tmp <- terrazas[terrazas$coordenada_y_local > 3e6,] # UTM a siglo XXI library(rgdal) terrazas.utm <- SpatialPoints( cbind(tmp$coordenada_x_local, tmp$coordenada_y_local), proj4string=CRS("+proj=utm +zone=30")) terrazas.latlong <- spTransform(terrazas.utm, CRS("+proj=longlat")) library(ggmap) madrid <- get_map("madrid", zoom = 12) tmp <- as.data.frame(terrazas.latlong) ggmap(madrid) + geom_point( aes(x = coords.x1, y = coords.x2), data = tmp, size = .5, col = "red", alpha = 0.3) Sobre las cursivas de todas: ...

2 de marzo de 2017 · Carlos J. Gil Bellosta

Sobre una poco conocida y para nada menguante "brecha de género"

Con datos del INE sobre mortalidad he construido el gráfico que muestra las tasas de mortalidad relativas (la de hombres entre la de mujeres) desde 1975 para cada edad. Como no se aprecia debidamente el efecto que da pie a esta entrada, reorganizo los ejes (y promedio, ¡glups!, las tasas de mortalidad por grupos quinquenales de edad): Se observa una manifiesta tendencia creciente, uno de esos gender gaps, brechas de género o como quiera que se llamen a estas cosa en neolengua que, lejos de menguar, crece y crece. ...

1 de marzo de 2017 · Carlos J. Gil Bellosta

Al cabo de más de 50 meses hemos observado un fenómeno que ocurriría en uno de cada cincuenta

En efecto, mean(rpois(100000, 28 * 60 / 365) >= 10) #[1] 0.01964 Por referencia, 28 es el número de días de febrero 60 viene de aquí 10 viene de aquí

28 de febrero de 2017 · Carlos J. Gil Bellosta

Consultando el número de visitas a páginas de la Wikipedia con R

Hace un tiempo probé el paquete wikipediatrend de R ya no recuerdo para qué. Desafortunadamente, el servicio que consulta debía de estar caído y no funcionó. Ahí quedó la cosa. Una reciente entrada de Antonio Chinchón en su blog me ha invitado a revisitar la cuestión y ahora, al parecer, stats.grok.se vuelve a estar levantado. Por lo que se pueden hacer cosas como: visitas <- wp_trend("R_(lenguaje_de_programaci%C3%B3n)", from = "2010-01-01", to = Sys.Date(), lang = "es") [Aquí ahorro al lector unos párrafos de pésima literatura.] ...

27 de febrero de 2017 · Carlos J. Gil Bellosta

¿Un detector de nepotismo?

Un conocido quiere cambiar de vida, dejar la hostelería y formalizarse. Es decir, buscarse un empleo fijo, con horario definido y, a poder ser, cobrando o del Estado o de alguna de sus submanifestaciones administrativas. Ha estado indagando cómo convertirse en conductor del metro (de Madrid, para más señas) pero lo ha dejado enseguida. Dizque sin enchufe, no hay nada que hacer: allí solo trabajan los hijos, sobrinos, ¿parejas sentimentales?, etc. de. Los demás, lo tienen crudo. Así que busca por otra parte. ...

24 de febrero de 2017 · Carlos J. Gil Bellosta