Estadística

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?

Coronavirus: prevalencia, sensibilidad y especificidad

El otro día, por motivos que no vienen al caso, dibujé

que es una gráfica que muestra la posibilidad de tener aquello que quiera Dios que midan los tests del estudio ENECOVID-19 para aquellos a los que el test correspondiente ha dado positivo habida cuenta de su sensibilidad (85%) y especificidad (98%, que uso en lugar del menos creíble 99% que usa el estudio).

Efectivamente, cuando la prevalencia es baja, casi todos los tests positivos son falsos: corresponden a ese 2% de error que tiene el test sobre la población sana.

Explicación de modelos

Este es el primer año en el que en mi curso de ciencia de datos (hasta ahora en el EAE; a partir del año que viene, vaya uno a saber si y dónde) introduzco una sección sobre explicación de modelos.

Hay quienes sostienen que, mejor que crear un modelo de caja negra y tratar luego de explicar las predicciones, es recomendable comenzar con un modelo directamente explicable (p.e., un GLM). Por mucha razón que traigan, vox clamantis in deserto: hay y seguirá habiendo modelos de caja negra por doquier.

Sobre "Predicción, estimación y atribución"

Subrayo hoy aquí tres cuestiones que considero importantes del reciente artículo Prediction, Estimation, and Attribution de B. Efron (para otra visión, véase esto).

La primera es que existe una cadena de valor en la modelización estadística que va del producto más ordinario, la predicción, a la estimación y de este, al más deseable, la atribución. En la terminología de Efron,

  • estimación consiste en la determinación de los parámetros subyacentes (e importantes) del modelo; específicamente se refiere a la estimación puntual;
  • atribución tiene que ver con intervalos de confianza, p-valores, etc. de esos parámetros.

La segunda es que la predicción es un problema fácil, mientras que la estimación (y la atribución) son mucho más complicados. Lo ilustra con un ejemplo sencillo: comparando la eficiencia de dos modelos, uno el óptimo y otro ligeramente inferior para: