Wilcoxon

AUC = Wilcoxon

Construyo unos datos,

n <- 30
si <- data.frame(res = "si",
    score = rnorm(n, 1, 1))
no <- data.frame(res = "no",
    score = rnorm(n, 0, 1))
dat <- rbind(si, no)

que simulan los scorings de un modelo hipótetico en el que comparo unos casos positivos y otros negativos.

Comparo con el test de Wilcoxon el scoring según la etiqueta y normalizo (adecuadamente):

test <- wilcox.test(score ~ res, data = dat)$statistic
test / n^2

Por otro lado calculo el AUC:

library(pROC)
my_roc <- roc(dat$res, dat$score)
auc(my_roc)

¡Lo mismo!

Motivo: ambas expresiones dan la probabilidad de que el scoring de un sí elegido al azar sea superior al de un no elegido también al azar. Cosa que está superdocumentada en el ancho mundo.

No uses el test de Wilcoxon, nos dice Gelman

Andrew Gelman nos invita a no usar más el test de Wilcoxon.

El test de Wilcoxon reemplaza las observaciones obtenidas por sus rangos y construye un estadístico basado en estos últimos. Eso implica descartar información pero puede ayudar a ganar robustez en situaciones en que los datos se desvíen de la normalidad.

¿Qué sugiere Gelman? Que si realmente estamos dispuestos a descartar información, en lugar de reemplazar las observaciones originales por sus rangos, usemos z-scores —los cuantiles de la normal estándar correspondientes a los cuantiles muestrales—, y usemos la teoría normal (en su doble acepción).