Estadística

Charla: predicciones y decisiones, más allá de los errores cuadráticos

El próximo 29 de noviembre (de 2018) de febrero daré una charla dentro del ciclo de Data Konferences de Kschool.

Para la mía han creado el siguiente cartelito:

El resumen que preparé es:

Se hace ciencia de datos para tomar decisiones. Las predicciones, mejores o peores, alimentan procesos de decisión (p.e., ¿se concede este préstamo?). Sin embargo, existe una brecha enorme (en términos de equipos responsables y de comunicación entre ambos) entre quienes construyen los procesos predictivos y quienes toman las decisiones finales. A falta de mejor criterio, los científicos de datos utilizan funciones de pérdida genéricas (p.e., el RMSE) y prestan una atención excesiva a la estimación puntual. Ambas son decisiones subóptimas. Integrar el proceso predictivo en el de toma de decisiones conduciría de forma natural a la adopción de funciones de pérdida distintas y a prestar mucha menos atención al hecho de acertar con las predicciones y más a la idoneidad de las decisiones.

Colinealidad y posterioris

En esta entrada voy a crear un conjunto de datos donde dos variables tienen una correlación muy alta, ajustar un modelo de regresión y obtener la siguiente representación de la distribución a posteriori de los coeficientes,

donde se aprecia el efecto de la correlación entre x1 y x2.

El código,

library(mvtnorm)
library(rstan)
library(psych)

n <- 100
corr_coef <- .9

x <- rmvnorm(n, c(0, 0),
  sigma = matrix(c(1, corr_coef, corr_coef, 1), 2, 2))
plot(x)

x1 <- x[,1]
x2 <- x[,2]
x3 <- runif(n) - 0.5

y <- 1 + .4 * x1 - .2 * x2 + .1 * x3 + rnorm(n, 0, .1)

summary(lm(y ~ x1 + x2 + x3))

stan_code <- "
data {
  int N;
  vector[N] y;
  vector[N] x1;
  vector[N] x2;
  vector[N] x3;
}
parameters {
  real a;
  real a1;
  real a2;
  real a3;
  real sigma;
}

model {
  a ~ cauchy(0,10);
  a1 ~ cauchy(0,2.5);
  a2 ~ cauchy(0,2.5);
  a3 ~ cauchy(0,2.5);

  y ~ normal(a + a1 * x1 + a2 * x2 + a3 * x3, sigma);
}"


datos_stan <- list(
    N = n,
    y = y,
    x1 = x1,
    x2 = x2,
    x3 = x3
)

fit2 <- stan(model_code = stan_code,
              data = datos_stan,
              iter = 10000, warmup = 2000,
              chains = 2, thin = 4)

res <- as.data.frame(fit2)
pairs.panels(res[, c("a", "a1", "a2", "a3", "sigma")])

Goodhart, Lucas y todas esas cosas

Como me da vergüenza que una búsqueda de Goodhart en mi blog no dé resultados, allá voy. Lo de Goodhart, independientemente de lo que os hayan contado, tiene que ver con

es decir, un gráfico causal hiperbásico. Si la variable de interés y es difícil de medir, resulta tentador prestar atención a la variable observable x y usarla como proxy. Todo bien.

Pero también puede interesar operar sobre y y a cierta gente le puede sobrevenir la ocurrencia de operar sobre x con la esperanza de que eso influya sobre y.

Las tres culturas (en LUCA)

Ayer salió publicada una entrada de blog mía en LUCA, i.e., aquí. Pero vamos, como si la hubiese escrito aquí.

Nota: La ortotipografía (particularmente del título de la entrada) no fue cosa mía.

Enlaces parasociológicos

Tenía tan bien guardados en el disco duro una serie de enlaces de interés parasociológico que no había forma humana de dar con ellos.

Para que no me vuelva a pasar y por su potencial interés para otros, los cuelgo aquí.

El primero de ellos (que no sé por qué lo guardé) son las diapositivas de una charla acerca de cómo transformar porcentajes de votos en escaños en España.

Los otros tres se refieren a la metodología que utiliza la gente de electionforecast.co.uk:

ABC (II)

Más sobre lo de ayer. O más bien, una justificación por analogía.

Con monedas.

Tiras una moneda 100 veces y obtienes 60 caras. Tienes una priori $B(a,b)$ (beta). Tomas una muestra de valores $p_i$ con esa distribución y para cada una de ellas repites el experimento, es decir, obtienes lo que en R se expresaría de la forma

rbinom(1, 100, p[i])

Si te quedas los valores $p_i$ tales que esa simulación es 60, enhorabuena, tienes una muestra de la distribución a posteriori.

ABC (I)

Que quiere decir approximate Bayesian computation. Es un truco para pobres y desafortunados que no pueden quitarle la A a BC y usar directamente cosas como Stan o similares. El que no quiera prioris, además, puede usar el ABC para estimar la forma de la verosimilitud alrededor de una estimación puntual.

Por supuesto, el objetivo es obtener una estimación de la posteriori para poder medir la incertidumbre de parámetros, etc. La idea es que se dispone de unos datos, $X$ y un mecanismo de generación de datos $X^\prime = f(\theta)$, donde $\theta$ es un vector de parámetros.

"Embeddings" y análisis del carrito de la compra

Escribiendo la entrada del otro día sobre embeddings, no se me pasó por alto que la fórmula

$$ \frac{P(W_i,C_i)}{P(W_i)P(C_i)}$$

que escribí en ella es análoga al llamado lift (¿es el lift?) del llamado análisis del carrito de la compra, i.e., el estudio de productos que tienden a comprarse juntos (véase, por ejemplo, esto).

Lo cual me lleva a sugerir mas no escribir una entrada en la que se rehagan este tipo de análisis usando embeddings: los ítems como palabras, los carritos como textos, etc. Si alguien tiene tiempo y le sale algo potable, que avise y lo enlazo aquí.