Gráficos

Un par de novedades de R 4.4.0 y algunos otros asuntos más

I.

Una vulnerabilidad asociada a R y un análisis sobre la intrahistoria de la misma. Se refiere a la importación acrítica de ficheros binarios de datos en R, en el que un agente malicioso puede haber insertado código que no quieres ver corriendo en tu máquina.

II.

Hay gente que busca asociaciones en tablas con millones de celdas, la mayor parte de las cuales tienen valores 0 o 1. Es un problema con la peor de las pintas del mundo, pero hay artículo y código.

Cortos (sobre R)

I.

El artículo Locally Adaptive Tree-Based Thresholding Using the treethresh Package in R describe una versión sofisticada de un truco que suelo usar para detecter cambios de régimen, etc., en series temporales:

  • Quieres modelar una serie temporal
  • Pero hay motivos para pensar que en realidad es la concatenación de varias series temporales distintas, con regímenes distintos.
  • Quieres filtrar y quedarte con la representativa de hoy (y el corto plazo vendiero).
  • Luego usas árboles más o menos como en el artículo.

II.

Lo que se cuenta aquí me gusta y no me gusta:

Basta una línea para mejorar tus mapas; pero, ¿cuál?

R

A la vista de los mapas

pocos habrán que no prefieran el de la derecha. Los mapas están extraídos de la entrada Improve your maps in one line of code changing map projections, cuyo título ha sido elegido muy acertadamente en tanto que los mapas han sido construidos usando

gd_n2_main_laea <- gd_n2_main %>%
    st_transform(crs = 3035)

a <- gd_n2_main %>%
    ggplot() +
    geom_sf(fill = "#F48FB1", color = NA)+
    geom_sf(data = bord, color = "#C2185B", size = .5)+
    coord_sf(crs = 3857)

b <- gd_n2_main_laea %>%
    ggplot() +
    geom_sf(fill = "#DCE775", color = NA)+
    geom_sf(data = bord, color = "#AFB42B", size = .5)

library(patchwork)

a + b + plot_annotation(tag_levels = "A")

y, por lo tanto, solo difieren en la línea

Subversión de convenciones gráficas: un ejemplo

Un gráfico estadístico —salvo error u omisión— representa fielmente los datos sobre los que se construye: podríamos programar una máquina para que recompusiera la tabla original a partir de cualquier gráfica independientemente de la estética utilizada: sean longitudes, ángulos, tonos de color, etc.

El problema es que los humanos —particularmente, pensando rápido a lo Kahneman— tendemos a fabricar connotaciones que tuercen su sentido. Estas connotaciones —como tantas otras cosas en la vida— pueden tener origen biológico o cultural. Culturales son las convenciones, como que el tiempo fluye de izquierda a derecha o que lo grande va arriba y lo pequeño, abajo.

¿Se puede levantar la mano y decir que la curva, esencialmente, crece y no decrece?

Mirad el gráfico

o

que representa los mismos datos cambiando la escala de las abscisas. He recortado convenientemente las etiquetas de los ejes para que la ideología no confunda a la recta percepción visual de la cosa. La pregunta ahora es: ¿son crecientes las curvas?

Las respuestas de primer y segundo orden son obvias. Creo.

Sin embargo, las gráficas están extraídas de aquí, donde se elabora un discurso a partir de la idea de que las curvas son esencialmente planas si no decrecientes. En ningún punto del texto se dice: “¡eh, contemplad cómo estas curvas son esencialmente crecientes!” Un lector despistado o, incluso, un lector que se quede con el titular, se llevará a la próxima discusión del bar una idea torcida (no sé si decir de la realidad o de la perspectiva de la realidad que recogen los datos subyacentes a las gráficas).

Las reglas generales son para lacayos; el contexto, para reyes

La frase

Las reglas generales son para lacayos; el contexto, para reyes.

apareció, dícese, en un episodio de Star Treck.

[Nótese su metainterpretación: ¡no deja de ser una regla general!]

Pero por los motivos que expongo a continuación resonó como pocas frases hacen: tiene mucho que ver con el día a día de todo lo que hago. El mundo sería tal vez más feliz —y mucho más aburrido— si funcionase así:

La miseria de la sicología de la percepción

A autores como Playfair (tartas), Tukey (diagramas de cajas) o Tufte (pequeños múltiplos) debemos algunas de las técnicas de representación gráfica de datos que usamos habitualmente y a las que el público, mal que bien, está acostumbrado.

Otros autores han tratado de tecnologizar dichas técnicas. Es decir, entender por qué funcionan o cómo hacerlas más efectivas. Para ello se han apoyado en el trabajo de los sicólogos de la percepción. El trabajo pionero al respecto, al menos en el ámbito de la estadística, es de Cleveland y McGill (véase esto y, si procede, sus referencias) y ha sido continuado por otros.

Canales (o estéticas), de mejor a peor, según Healy

Data visualization, de Healy, sicólogo sociólogo (gracias al atento comentarista) para más señas, es dizquel nuevo Cleveland. Que lo pone al día 27 años después.

Una muestra del libro:

Se trata de las estéticas (en su acepción ggplot2) ordenadas de mayor a menor efectividad.

[Estoy leyéndolo y nada nuevo bajo el sol; tal vez, sí, el aggiornamiento que de vez en cuando parece que necesitan las cosas para que se oreen las ideas, las tipografías y las paletas de color de los gráficos.]

PIB trimestral: una alternativa gráfica a la representación tradicional para los tiempos del coronavirus

Gráficas que muestran la velocidad a la que varía el PIB como

han sido habituales para representar la evolución de la economía. En particular, porque antes de los espasmos de los últimos trimestres eran más o menos fáciles de intepretar. Pero ahora ya no.

La velocidad es una medida útil en tanto que varía de manera más o menos suave. En momentos de botes y rebotes, es mejor saber dónde se está que a la velocidad a la que uno no sabe si sube o baja. Por eso es más ilustrativo

IGN + R + leaflet

Iba a escribir una entrada técnica al respecto, pero resulta que ya la había hecho hace un tiempo y no me acordaba.

Solo quiero abundar en el tema para recordaros que si os interesa mostrar mapas de España vía leaflet, en lugar de usar las capas por defecto, que vaya a saber uno de dónde las sacan, uno siempre puede tirar de la cartografía oficial.

Uno de los motivos puede ser que el mapa forme parte de una aplicación seria. Y las (o ciertas) capas por defecto de leaflet muestran hasta los puticlús,

En defensa de iris

R

El archiconocido conjunto de datos iris es víctima reciente de un ataque relacionado con su pecado original: haber tenido unos padres estigmatizados hoy por su otrora popular idea de que gracias a la ciencia podríamos construir un futuro mejor.

También ha sido víctima de ataques, esta vez más endógenos, relacionados con lo menguado de su tamaño y lo trivial de su estructura.

Vengo aquí a romper una lanza —tres, más bien— en favor de este muy querido de los más conjunto de datos. Tres lanzas esgrimidas, como se verá, en contextos, con fines y ante públicos muy concretos.

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