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

R

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:

¿Hay demasiados paquetes en R?

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).

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.

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).

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'")

Cerebros "hackeados"

Tengo delante Los cerebros ‘hackeados’ votan de Harari, autor de cierta y reciente fama. Elabora sobre un argumento simple y manido: el cerebro funciona como un ordenador y los seres humanos somos no solo perfectamente predecibles sino también perfectamente manipulables. De lo que se derivan muchas funestas consecuencias en lo político y en lo social.

El artículo me ha sido recomendado por dos personas cuyo criterio tengo en muy alta estima. Pero otra lo ha criticado con saña aquí.

NMDS y un poquito más allá

Nunca he sido muy partidario de esas técnicas a medio camino entre lo descriptivo (con descripciones que apenas nadie entiende) y lo inferencial (con inferencias que pocos se creen). Entre ellas, MDS (multidimensional scaling). Pero este fin de semana y por exigencias del guión (¿se acentúa guión aún?) he tenido que replicar unos análisis en que se usaba NMDS a la vegan.

Seré breve y me limitaré a definir el problema, enlazar una referencia con código y una discusión mejor que la mía y a mostrar una de las representaciones que uno podría llegar a construir.

Reglas de "scoring" impropias: un ejemplo

Todo lo que he venido escribiendo sobre reglas de scoring propias vino en el fondo motivado por Damage Caused by Classification Accuracy and Other Discontinuous Improper Accuracy Scoring Rules, una entrada en el blog de Frank Harrell en la que se discute el siguiente caso:

  1. El tipo simula unos datos para ser ajustados mediante una regresión logística (de manera que conoce la verdad subyacente).
  2. Construye varios modelos alternativos para ajustarlos.
  3. Utiliza varios scorings distintos para seleccionar el mejor modelo.

Uno de los scorings elegidos es el accuracy (es decir, el número de observaciones correctamente clasificadas). Pero resulta que este criterio, contra lo que cabría esperar, prefiere un modelo distinto del óptimo.

¿Es Madrid ciudad para startups (relacionadas con los datos)?

[Esta entrada, simplemente, plantea una hipótesis altamente especulativa; expone una serie de argumentos su pro pero deja la pregunta abierta y la respuesta al buen criterio del lector.]

El año pasado di un curso de estadística bayesiana (¿a alguien le interesaría que lo impartiese en su empresa o institución?) en la UPC, en Barcelona. En un descanso hablé brevemente con una alumna que estaba buscando trabajo en el mundo de la ciencia de datos. Le pregunté si no le interesaría mudarse a Madrid (quienes vivimos en Madrid sabemos que no hay vida inteligente fuera de nuestra provincia, ¿verdad?) y me contestó que en Madrid no había nada, que no había empresas, que no había movimiento; que en BCN había muchas, pero que en la villa no le constaba. Me sorprendió (y lo admito, me ofendió un poquito) y respondí lo obvio: que si BBVA, que si Santander, que si Telefónica, que si Amadeus, que si… ¡tenemos decenas de factorías/churrerías de ciencia de datos por toda la periferia de la M-30!

Scorings: interpolando (y extrapolando) entre el de Brier y el lineal

Rápidamente y para poner el limpio unas cosas que tenía en borrador. El scoring lineal del que me he ocupado en entradas anteriores (p.e., esta o esta) está asociado a un exponente $latex \lambda = 1$ y el de Brier, a $latex \lambda = 2$. Entre ambos (y a la derecha del 2) hay otros scorings posibles.

Una penalización de $latex (1-p)^\lambda$ (véanse las entradas enlazadas más arriba para averiguar a qué me refiero), un predictor tiene un incentivo para modificar su predicción para alcanzar un scoring más alto, salvo en el caso en que $latex \lambda = 2$, en el que le compensa ser lo más sincero posible.

Cointegración: un modelo generativo

[Esta entrada tiene que ver con una nueva manía que he adquirido con la edad: construir modelos generativos para esos modelos explicados siempre de una manera sumamente críptica.]

La cointegración es una relación muy particular entre dos (o más) series temporales. Una de ellas, $latex x_t$ puede ser cualquiera. Tanto da. Vamos a construir la cointegrada, $latex y_t$. Para ello, primero, necesitamos una serie más, una serie estacionaria, p.e., $latex \nu_t$. Puede ser un ruido blanco, pero también una serie ARMA cualquiera (aunque siempre estacionaria). Por ser estacionaria, la serie $latex \nu_t$ no se aleja nunca demasiado de su valor medio, que podemos suponer cero.

Mejores predictores: un ejemplo (el de Brier)

La entrada de hoy casi me la escribe un comentarista (al que le estoy muy agradecido) ayer. Retomo el tema.

Ayer premiaba a cada predictor con $latex p(X)$, es decir, le daba $latex p$ punticos si ocurría $latex X$ y $latex 1-p$ punticos sin no ocurría. La cosa no cambia si nos alineamos con lo que está escrito por ahí y en lugar de premiar, penalizamos. Es decir, si en lugar de maximizar $latex p(X)$, buscamos minimizar $latex 1 - p(X)$. Nada cambia.

Una de las mil maneras malas de elegir al mejor predictor

El contexto, ayer.

La cosa es que se nos podría ocurrir premiar a los predictores cuando asignan probabilidad alta a los sucesos que ocurrieron y baja a los que no. Por ejemplo, si el evento $latex i$ ocurre, premiar al predictor con $latex p_i$ y si no ocurre, con $latex 1 - p_i$. Escrito de otra manera, con $latex p_i(X_i)$ (que quiere decir la probabilidad correspondiente al evento observado).

Como hay varios eventos, cada predictor se llevaría un premio igual a $latex s = \sum_i p_i(X_i)$ y sería mejor aquél predictor con el mayor valor de $latex s$. Estupendo.