Predicción

k-vecinos + lmer

El de los k-vecinos es uno de mis métodos favoritos de modelización. Al menos, teóricamente: luego, en la práctica, es complicado construir una función de distancias decente. Pero tiene la ventaja indiscutible de ser tremendamente local: las predicciones para una observación concreta dependen únicamente de su entorno.

lme4::lmer (y sus derivados) es ya casi la lente a través de la que imagino cómo operan las variables dentro de un modelo. Desafortunadamente, es un modelo global y no gestiona particularmente bien las interacciones, cuando son muchas y complejas.

Clasificación vs predicción

Aquí se recomienda, con muy buen criterio, no realizar clasificación pura, i.e., asignando etiquetas 0-1 (en casos binarios), sino proporcionar en la medida de lo posible probabilidades. Y llegado el caso, distribuciones de probabilidades, claro.

La clave es, por supuesto:

The classification rule must be reformulated if costs/utilities or sampling criteria change.

Intervalos de confianza, intervalos de predicción

Contexto:

modelo <- lm(dist ~ speed, data = cars)

Intervalos de confianza:

head(predict(modelo, interval = "confidence"))
#        fit        lwr       upr
#1 -1.849460 -12.329543  8.630624
#2 -1.849460 -12.329543  8.630624
#3  9.947766   1.678977 18.216556
#4  9.947766   1.678977 18.216556
#5 13.880175   6.307527 21.452823
#6 17.812584  10.905120 24.720047

Intervalos de predicción:

head(predict(modelo, interval = "prediction"))
#        fit       lwr      upr
#1 -1.849460 -34.49984 30.80092
#2 -1.849460 -34.49984 30.80092
#3  9.947766 -22.06142 41.95696
#4  9.947766 -22.06142 41.95696
#5 13.880175 -17.95629 45.71664
#6 17.812584 -13.87225 49.49741

Creo que la diferencia (y el significado) es claro. Para todos los demás, esto.

"Para razonar rigurosamente bajo incertidumbre hay que recurrir al lenguaje de la probabilidad"

Así arranca este artículo, que presenta una extensión de XGBoost para predicciones probabilísticas. Es decir, un paquete que promete no solo una estimación del valor central de la predicción sino de su distribución.

La versión equivalente de lo anterior en el mundo de los random forests está descrito aquí, disponible aquí y mucho me temo que muy pronto voy a poder contar por aquí si está a la altura de las expectativas.

Análisis y predicción de series temporales intermitentes

Hace tiempo me tocó analizar unas series temporales bastante particulares. Representaban la demanda diaria de determinados productos y cada día esta podía ser de un determinado número de kilos. Pero muchas de las series eran esporádicas: la mayoría de los días la demanda era cero.

Eran casos de las llamadas series temporales intermitentes.

Supongo que hay muchas maneras de modelizarlas y, así, al vuelo, se me ocurre pensar en algo similar a los modelos con inflación de ceros. Es decir, modelar la demanda como una mixtura de dos distribuciones, una, igual a 0 y otra >0, de manera que la probabilidad de la mixtura, $latex p_t$, dependa del tiempo y otras variables de interés.

¿Tienes un sistema predictivo guay? Vale, pero dame los dos números

No, no me vale que me digas que aciertas el 97% de las veces. Dime cuántas veces aciertas cuando sí y cuántas veces aciertas cuando no.

Si no, cualquiera.

Nota: estaba buscando la referencia a la última noticia de ese estilo que me había llegado, pero no la encuentro. No obstante, seguro, cualquier día de estos encontrarás un ejemplo de lo que denuncio.

¿Escenarios jerárquicos? (para encuestas electorales en contextos multipartidistas)

Existe una brecha conceptual entre los pronósticos electorales,

que son continuos y cómo percibimos los resultados, de manera discreta: p.e., el partido X y el partido Y suman (o no).

Después de las elecciones, sobre todo de muchas de las últimas, el público siente perplejidad (frente a los resultados que acaban siendo) a la vista de las predicciones que se hicieron. Y los hacedores de pronósticos publican el consabido artículo explicando que esos escenarios que acabaron sucediendo estaban de alguna manera recogidos en sus (en el óptimo de los casos) histogramas.

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.

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.

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.

¿Quién será el mejor predictor? ¿Cómo se podrá medir?

He tropezado con un problema nuevo y sobre el que escribiré más estos días. Hoy y aquí solo lo formulo.

Existe una serie de eventos dicotómicos $latex X_i$ que pueden ocurrir o no ocurrir, cada uno de ellos con su probabilidad real (pero desconocida) de ocurrencia $latex q_i$. Antes de que ocurran o no, a dos expertos se les preguntan las probabilidades de ocurrencia de dichos eventos y producen predicciones $latex p_{1i}$ y $latex p_{2i}$.