Estadística

Análisis de arquetipos

De eso trata un artículo de los noventa de Breiman. Es decir, de encontrar dentro de conjuntos de datos conjuntos finitos de sujetos puros que permiten representar cualquier otro como una mezcla (o combinación convexa) de ellos.

Ideas a vuelapluma:

  • Cuando leo sobre el asunto, la palabra que no deja de aparecérseme es outlier. Curiosamente, la busco en el texto y se resiste a aparecer. Pero me aterra la posibilidad de estar caracterizando a los sujetos normales (¿aún se puede usar la expresión?) como combinación convexa de raritos.
  • La técnica podía competir muy favorablemente con el clústering tanto conceptualmente (resuelve el problema de la heterogeneidad de los clústers) como operativamente (se podrían extraer para algún fin los sujetos que participasen en una proporción determinada de un cierto arquetipo).
  • En el fondo, se solapa con otras técnicas bien establecidas y que hacen cosas parecidas como LDA (con D de Dirichlet) o NMF (factorización no negativa de matrices).

Más sobre la presunta sobredispersión en el modelo de Poisson

[Esta entrada abunda sobre la de ayer y sin la cual no se entiende.]

Generemos unos datos, las x:

n <- 1000
sigma <- .5
x <- rep(-2:2, each = n)
x_real <- -1 + .5 * x + rnorm(length(x), 0, sigma)

En el bloque anterior hemos creado una/la variable observada, x, el término lineal que operará en el modelo de Poisson, -1 + .5 * x, y el real, -1 + .5 * x + rnorm(length(x), 0, sigma), que agrega al anterior el impacto de otras variables no tenidas en cuenta a través de un error normal al uso.

No, tus datos no "tienen sobredispersión": es que el gato de Nelder se ha merendado la epsilon

El modelo de Poisson viene a decir que si y es una variable con valores 0, 1,… y x1,…, xn son variables explicativas tiene cierto sentido en algunos casos plantear un modelo de la forma

$$ y | x_i \sim \text{Pois}(\exp(a_0 + \sum_i a_i x_i) ),$$

Es decir , para cada combinación de las xi, el modelo proporciona el parámetro de una distribución de Poisson de la que y es una realización. Hay una incertidumbre (o un error irreductible) que reside en que de y solo conocemos la distribución.

Sobre el efecto medio

Traduzco de aquí:

En estadística y econometría se habla a menudo del efecto medio de un tratamiento. A menudo, he sido [Gelman] escéptico con respecto al efecto medio por la sencilla razón de que, si se trata de un efecto medio, se está reconociendo la posibilidad de variación; y si hay una variación importante (tanto como para hablar del efecto medio y no solo del efecto) es que nos preocupa tanto que deberíamos estudiarla directamente en lugar de reducirla a su promedio.

Sobre la curva ROC como medida de bondad de clasificadores

Esta entrada se entiende mal sin esta otra donde se daba noticia de un clasificador que era mucho mejor o peor (de acuerdo con ciertas métricas) según la tasa de prevalencia de la clase relevante a pesar de que tanto su sensibilidad como su especificidad no eran particularmente malas. Efectivamente, con lo del coronavirus hemos reaprendido a darle la vuelta a las probabilidades condicionales y aplicar el teorema de Bayes para ver qué cabía esperar de un clasificador cuyas bondades se predican en términos de la sensibilidad y la especificidad.

¿Qué queda de la "estadística robusta" clásica?

Estos días estoy muy atento a todo lo que tiene que ver con estadística robusta. El motivo es doble:

  • Estoy involucrado en un proyecto donde quieren ajustar ciertos modelos usando funciones de pérdida robustas (Huber, Tukey, etc.).
  • Hay una $latex 1 > p > 0$ de que me toque meter mano a MOMO y sus derivados para que lo del coronavirus no joda los contrafactuales de 2021 y sucesivos (¿bastará con eliminar unos cuantos meses de 2020?).

Así las cosas, ha aterrizado en mi tableta The Changing History of Robustness, donde, el autor, Stigler:

Un artículo muy raro, raro, raro

Hoy voy a comentar un artículo muy raro que me ha llegado recientemente y que se titula nada menos que Bayesian Estimation with Informative Priors is Indistinguishable from Data Falsification.

Argumenta el artículo alrededor de lo siguiente (que creo que ya sabemos todos: son ejercicios matemáticos básicos de un curso introductorio de probabilidad):

  • Que la inferencia bayesiana con prioris planas (degeneradas, de ser necesario) es equivalente a la inferencia frecuentista.
  • Que para tres ejemplos concretos (binomial, Poisson y normal), de usarse prioris a través de las distribuciones conjugadas, el resultado de la inferencia bayesiana es equivalente a haber añadido datos (problemas de redondeo aparte) a los originales.

Luego añade unos experimentos numéricos para dejar constancia de que no se ha equivocado en las cuentas y mostrar que, efectivamente, sustituyendo las letras por números y operando se obtienen los resultados que anuncian las matemáticas con su árido simbolismo.

Sobremuestreando x (y no y)

Construyo unos datos (artificiales, para conocer la verdad):

n <- 10000
x1 <- rnorm(n)
x2 <- rnorm(n)
probs <- -2 + x1 + x2
probs <- 1 / (1 + exp(-probs))
y <- sapply(probs, function(p) rbinom(1, 1, p))
dat <- data.frame(y = y, x1 = x1, x2 = x2)

Construyo un modelo de clasificación (logístico, que hoy no hace falta inventar, aunque podría ser cualquier otro):

summary(glm(y ~ x1 + x2, data = dat, family = binomial))
#Call:
#glm(formula = y ~ x1 + x2, family = binomial, data = dat)
#
#Deviance Residuals:
#    Min       1Q   Median       3Q      Max
#-2.2547  -0.5967  -0.3632  -0.1753   3.3528
#
#Coefficients:
#            Estimate Std. Error z value Pr(>|z|)
#(Intercept) -2.05753    0.03812  -53.97   <2e-16 ***
#x1           1.01918    0.03386   30.10   <2e-16 ***
#x2           1.00629    0.03405   29.55   <2e-16 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#(Dispersion parameter for binomial family taken to be 1)
#
#    Null deviance: 9485.2  on 9999  degrees of freedom
#Residual deviance: 7373.4  on 9997  degrees of freedom
#AIC: 7379.4
#
#Number of Fisher Scoring iterations: 5

Correcto.

¿Criptobayesianismo?

Titulo así a cuenta de un proceso mental de varios saltos producidos a partir de la lectura del muy recomendable Five ways to ensure that models serve society: a manifesto. En particular del parrafito

Quantification can backfire. Excessive regard for producing numbers can push a discipline away from being roughly right towards being precisely wrong. Undiscriminating use of statistical tests can substitute for sound judgement. By helping to make risky financial products seem safe, models contributed to derailing the global economy in 2007–08.

Sobre predicciones puntuales

Como tan a menudo se nos olvida, Taleb nos recuerda, breve y conciso, un par de cositas sobre las predicciones puntuales aquí. Además, casi todo lo que tiene que decir se resume en:

La regresión logística como el modelo más simple posible (que...)

Problema de regresión. Queremos $y = f(\mathbf{x})$. Lo más simple que podemos hacer: fiarlo todo a Taylor y escribir $ y = a_0 + \sum_i a_i x_i$.

Problema de clasificación. Lo más simple que podemos hacer, de nuevo: linealizar. Pero la expresión lineal tiene rango en $latex (-\infty, \infty)$. Solución, buscar la función $latex f$ más sencilla que se nos pueda ocurrir de $latex (-\infty, \infty)$ en $latex [0, 1]$. Entonces, $latex y = f(a_0 + \sum_i a_i x_i)$.

¿Cuándo falla lasso?

Una de las consecuencias funestas —tal vez inesperadas e imprevistas— de la actual arquitectura del mundo en que vivimos es que hay mucha gente (e instituciones, y libros, y artículos, y…) empeñada en enseñarte las cosas buenas y provechosas y muy especialmente en sus facetas que lo son más mientras que para aprender las malas dependes de la calle, la suerte y las pésimas compañías.

Así, te enseñan lasso y todo son parabienes.

RuleFit

El otro día me sentí culpable porque me preguntaron sobre RuleFit y tuve que hacer un Simón (aka, me lo estudio para mañana). Y como mañana fue antier, lo que sigue.

Hay descripciones estándar de RuleFit (p.e., esta o la del artículo original) pero me voy a atrever con una original de mi propio cuño.

Comenzamos con lasso. Lasso está bien, pero tiene una limitación sustancial: se le escapan las iteracciones (vale, admito que lo anterior no es universalmente exacto, pero lo es casi y eso me vale). Entonces, la pregunta es: ¿cómo introducir interacciones en lasso?