AUC = Wilcoxon

Construyo unos datos, n <- 30 si <- data.frame(res = "si", score = rnorm(n, 1, 1)) no <- data.frame(res = "no", score = rnorm(n, 0, 1)) dat <- rbind(si, no) que simulan los scorings de un modelo hipótetico en el que comparo unos casos positivos y otros negativos. Comparo con el test de Wilcoxon el scoring según la etiqueta y normalizo (adecuadamente): test <- wilcox.test(score ~ res, data = dat)$statistic test / n^2 Por otro lado calculo el AUC: library(pROC) my_roc <- roc(dat$res, dat$score) auc(my_roc) ¡Lo mismo! Motivo: ambas expresiones dan la probabilidad de que el scoring de un sí elegido al azar sea superior al de un no elegido también al azar. Cosa que está superdocumentada en el ancho mundo. ...

11 de febrero de 2019 · Carlos J. Gil Bellosta

Ya, pero ¿es viable un fact check descentralizado? Entonces, ¿qué hacer?

Me llegó ayer por Twitter lo siguiente: Lo había publicado alguien que no conocía y retuiteado (por eso me alcanzó) una persona que sigo porque me consta que sabe de unos temas pero que ignoro en qué medida está puesta en los geopolíticos y la historia económica de las naciones del mundo. Los datos llaman la atención: son interesantes y no obvios. Pero sabemos que la intersección de lo intersante, no obvio y cierto es prácticamente el conjunto vacío. Por lo que hay una alta probabilidad de que esos datos de presunto origen en el IMF y los muy adictos al Excel (y a meter la pata con él) Rienhart & Rogoff hayan sido embellecidos. ...

8 de febrero de 2019 · Carlos J. Gil Bellosta

"Cocinas electorales" con encuestas muy sesgadas

Muchos hablan de las cocinas de la que salen los resultados de las encuestas electorales pero pocos las han visto. ¿Qué ocurre en ellas y qué problemas tratan de resolver? Lee Forecasting elections with non-representative polls y lo verás (bien hecho, no a lo Tezanos el Metodólogo).

6 de febrero de 2019 · Carlos J. Gil Bellosta

Taxis (y su huelga) y tráfico (en Madrid)

El tráfico (rodado) en una ciudad grande (como Madrid) es un sistema complejo. Los sistemas complejos buscan equilibrios. Un ecosistema es un sistema complejo en el que los corzos comen hierba y los lobos comen corzos. El número de corzos y zorros se autodetermina mutuamente (¿Lotka-Volterra?). De tal manera, además, que siempre están en el límite de la supervivencia: es el hambre y la necesidad la que regula las poblaciones. Hobbes diría que la vida en un sistema complejo es desagradable, brutal y corta. ...

5 de febrero de 2019 · Carlos J. Gil Bellosta

No lo léais, no lo sigáis; todo lo que cuenta es mentira y si acierta es de casualidad

Y me refiero a esto. Pero lo dicho: es, de entre lo malo, lo peor. Hacedme caso.

4 de febrero de 2019 · Carlos J. Gil Bellosta

Demasiados colores (para el hijo de un daltónico)

Mi padre me enseñó muchas cosas (leer, sumar, etc.). Pero mi infancia fue monocromática porque era daltónico. Siempre dibujé con lápiz (primero) y tinta (después). Las témperas y los rotuladores fueron mi tormento. R tiene colores. Un montón. Y paletas de colores. Demasiadas. Una búsqueda entre los paquetes disponibles actualmente en CRAN de color proporciona 88 coincidencias, a las que deben sumarse las 35 adicionales de colour. Algunos de esos paquetes se refieren a asuntos tales como “Optimal Block Designs for Two-Colour cDNA Microarray Experiments”, pero los más ofrecen cosas tales como: ...

1 de febrero de 2019 · Carlos J. Gil Bellosta

¿Hay demasiados paquetes en R?

Por su importancia, traigo aquí y resumo una serie de argumentos que he encontrado en otra parte acerca del ecosistema de paquetes en R. Que son: Muchos paquetes no tienen el soporte adecuado a medio plazo. Además, hay demasiados. Pero su calidad es desigual. Y muchos reinventan la rueda (lo manifiesta la escasa interdependencia entre los paquetes). Finalmente, no es para nada sencillo identificar el paquete que puede ser útil para un fin determinado. Cada cual elige los problemas que quiere tener (y R decidió tener los de un bazar y no los de una catedral). ...

31 de enero de 2019 · Carlos J. Gil Bellosta

Sobre la tesis de Sánchez (y no es lo que se espera de mí)

Me preguntaron mucho (antes de los últimos seis o siete circos mediáticos) sobre la tesis de Sánchez, cuando estaba en el candelabro. La bajé, la leí en parte (muchas de las páginas más infumables en diagonal, lo reconozco) y me centré en la parte estadística. Que es un completo despropósito: es una especie de apéndice que no se usa en el resto del texto, una suerte de añadido para darle una mínima pincelada de matematicidad a la cosa. Hay unas correlaciones basadas en unas pocas observaciones elevadas a la categoría de causalidad; unas regresiones lineales que tienen pinta de haber sido calculadas con Excel; una huérfana fórmula en algo que parece $\LaTeX$ que no tiene que ver con el contexto (parece tomada de algún sitio donde se hablaba de otra cosa), etc. Todo eso (pero nada aprovechable) hay. ...

30 de enero de 2019 · Carlos J. Gil Bellosta

Evaluación de trucos para multiplicaciones aproximadas

En Street Fighting Mathematics (leedlo) hay un capítulo en el que se discuten trucos para realizar mental y aproximadamente operaciones del tipo 3600 × 4.4 × 10^4 × 32. La recomendación es la siguiente: contar ceros primero, gestionar las cifras significativas después. En el caso anterior, el autor identifica 8 ceros (tres del 3600, cuatro del 10^4 y uno del 32), quedando como cifras significativas 3.6, 4.4 y 3.2. Para estas últimas, recomienda aproximarlas a 1, pocos (alrededor de 3) y 10. Pocos es una cifra que vale tres y cuyo cuadrado es 10. Por lo tanto, 3.6 × 4.4 × 3.2 es el cubo de pocos, es decir, treinta. De manera que la aproximación de 3600 × 4.4 × 10^4 × 32 es un tres seguido de nueve ceros (en realidad, es un cinco seguido de nueve ceros). ...

29 de enero de 2019 · Carlos J. Gil Bellosta

El discreto encanto de las animaciones

Representando datos, una animación es un gráfico en el que unas facetas (en terminología de ggplot2) ocultan el resto, como en extraído de aquí y que representa la evolución del tamaño (superficie) de los coches habituales a lo largo del último siglo. Lo mismo pero evitando el indeseado efecto: El código: library(ggplot2) datos <- structure(list(year = c(1930L, 1950L, 1960L, 1970L, 1980L, 1990L, 2000L, 2010L, 2018L), width = c(1.45, 1.59, 1.54, 1.56, 1.64, 1.67, 1.75, 1.76, 1.78), length = c(3.38, 4.02, 3.96, 3.89, 3.98, 4, 4.18, 4.12, 4.23)), class = "data.frame", row.names = c(NA, -9L)) ggplot(datos, aes(xmin = 0, ymin = 0, xmax = length, ymax = width)) + geom_rect() + coord_fixed() + facet_wrap(~ year) + xlab("longitud (m)") + ylab("anchura (m)") + ggtitle("Evolución de la superficie\ndel coche 'promedio'")

28 de enero de 2019 · Carlos J. Gil Bellosta