Programación: aspectos sicológicos

Esta entrada tiene una doble (o triple) motivación. Por un lado, servir de de introducción a otra en la que se tratará la sicología de la estadística y la ciencia de datos. Por otro, plantear una serie de cuestiones —sin intención de aportar solución alguna— relevantes sobre el asunto. Y si se me permite, una tercera: dejar constancia que en su día semileí el librito The Psychology of Computer Programming, que fue el que me ha hecho pensar de vez en cuando sobre estos asuntos y prestarles atención desde entonces.

Ajuste de modelos lineales y predicción de valores con numpyro

Una de mis aficiones más excusables es la de participar en el mercado de predicciones de Hypermind. Una de las preguntas que se suele plantear anualmente —y en la que, gracias a apostar contra el común/apocalíptico sentir, logré pingües beneficios el año pasado— tiene que ver con cuándo nos vamos a morir todos. De otra manera:

Este año también quiero participar, pero como no sabía por dónde empezar, he bajado los datos. En su perspectiva más relevante, tienen este aspecto:

Nueva "edición" de mi libro de R

R

Acabo de subir —que suena menos pomposo que publicar— la primera versión de la segunda edición de mi libro de R. Los cambios con respecto a la primera son:

  • He migrado a Quarto.
  • Algunas correcciones, sobre todo en bloques de código que dejaron de funcionar por hacer llamadas a servicios que han desaparecido (o, como Google Maps, han cambiado el método de suscripción).
  • Algún material nuevo, sobre todo relacionado con dplyr y el tidyverse. Aun asi, el libro sigue siendo fundamentalente agnóstico con respecto a ese dialecto.
  • He incorporado algunas mejoras sugeridas por algún amable lector en el pasado.
  • He comenzado —solo comenzado— a preparar soluciones para los casi 200 ejercicios planteados en el libro.

El enlace, ahora sí, aquí.

Llevando la contabilidad de los grados de libertad

Esta entrada es una pequeña exégesis de esto:

Lo que se ve es el resultado del ajuste de una curva logística de cuatro parámetros a una serie de datos. En particular, voy a discutir qué es eso de la logística de cuatro parámetros, por qué el ajuste es bueno y qué tienen que ver los grados de libertad en todo esto.

La función logística de cuatro parámetros es la función logística de toda la vida,

Esta entrada no tiene título porque no se me ocurre ninguno sin "spoilers"

Esta entrada principia con el siguiente gráfico:

Queda a la discreción del lector si la línea tiene algún tipo de tendencia más o menos clara.

Una vez completado el ejercicio, le indicaré que:

  • El eje horizontal es la cuota de mercado (con perdón) de la educación pública (preuniversitaria) por CCAA en España extraída del informe Datos y Cifras correspondiente al curso escolar 2021-2022 publicados por el ministerio de educación (y el enlace, que seguro que dura poco, es este).
  • El vertical, la diferencia bruta en puntos en la prueba de matemáticas de PISA de vaya uno a saber qué año según se muestran aquí.

¿Por qué es la tendencia de este gráfico relevante? Porque, según A. Tabarrok, el autor de Private Education in India: A Novel Test of Cream Skimming, ayuda a determinar en qué medida la educación privada aporta valor añadido real más allá de, simplemente, operar sobre mejor materia prima. Según sus propias palabras (con mi traducción):

Funciones de enlace "por defecto" en (ciertos) GLMs

Después de publicar Una regresión de Poisson casi trivial con numpyro me riñeron por usar la identidad como función de enlace en la regresión de Poisson. Es decir, por especificarlo como

$$\lambda_t = a + b t$$

en lugar del estándar

$$\lambda_t = \exp(a + b t).$$

Hay varias cosas bastante bien conocidas y una que lo es bastante menos —y que resulta mucho más paradójica— que decir al respecto.

Antes necesito añadir que:

Una regresión de Poisson casi trivial con numpyro

El otro día hubo, parece, cierto interés por modelar la siguiente serie histórica de datos:

Notas al respecto:

  1. El eje horizontal representa años, pero da igual cuáles.
  2. El eje vertical son números naturales, conteos de cosas, cuya naturaleza es poco relevante aquí, más allá de que se trata de eventos independientes.
  3. Se especulaba con un posible cambio de tendencia debido a una intervención ocurrida en alguno de los años centrales de la serie.

Lo que se ve es el resultado del ajuste de un modelo de Poisson casi trivial. Es casi trivial porque utiliza el tipo más simple de splines para modelar una tendencia quebrada en un punto desconocido, uno de los parámetros del modelo.

Autoencoders: una serie de lecciones aprendidas

Estos días pasados he tenido que usar autoencoders como mecanismos para reducir la dimensión de una serie de conjuntos de datos. El principal problema al que me he enfrentado —cómo no— ha sido el de diseñar una arquitectura adecuada para el problema en cuestión. El principal motivo es que la práctica totalidad de los tutoriales, ejemplos, etc. disponibles por ahí tienen como aplicación principal el tratamiento de imágenes y en mi caso no.

Otra forma de llegar a la distribución normal

¿Cómo llegamos a la distribución normal? Típicamente, por aplicación —implícita, explícita, rutinaria o litúrgica— del teorema central del límite: una variable aleatoria es normal porque la creemos consecuencia de pequeñas perturbaciones independientes.

Pero hay otra vía.

Supongamos que tenemos tres —o, para el caso, $n > 1$— variables aleatorias continuas independientes con la misma distribución. Su densidad, por tanto, puede factorizarse así:

$$f(x_1, x_2, x_3) = f(x_1) f(x_2) f(x_3).$$

Supongamos además que $f(x_1, x_2, x_3)$ depende solo de $x_1^2 + x_2^2 + x_3^2$, la distancia al origen. De otro modo, que

"Denoising diffusion" en una dimensión (entre otras simplificaciones)

I. Motivación e introducción

Denoising diffusion —DD en lo que sigue— es uno de los principales ingredientes del archipopular stable diffusion. Es un algoritmo que se usa fundamentalmente para generar imágenes y que funciona, a grandes rasgos así:

  • Se parte de un catálogo de imágenes, que son vectores en un espacio (de dimensión alta).
  • Esos vectores se difuminan utilizando un proceso concreto —piénsese en una especie de movimiento Browniano— hasta que su distribución es aproximadamente una normal (en ese espacio de dimensión elevada).
  • A partir de valores aleatorios de esa distribución normal, invirtiendo el proceso de difusión, se obtienen muestras del espacio original (de las fotos).

Subyace a todo este tinglado la conocida como hipótesis de la subvariedad. Todas las fotos son, en el fondo, vectores en $R^N$ donde si las fotos son, digamos, $1000 \times 1000$, $N$ es 3M (número de píxeles por el número de canales). La hipótesis de la subvariedad dice que la distribución de las fotos que reconocemos como tales —piénsese que la mayoría de las fotos de $R^N$ no dejan de ser manchas grises— residen en una subvariedad de dimensión baja incrustada en $R^N$. Generar imágenes equivale entonces a muestrear dicha subvariedad, con el problema de que no sabemos ni qué forma tiene ni dónde está. Lo que proporciona DD es un caminito para llegar a ella desde un punto cualquiera del espacio.