Estadística

Ruido de alarmas, ruido de p-valores; mucho, mucho ruido, tanto, tanto ruido

Me estoy volviendo intolerante al ruido. Y esta mañana (¿qué carajos hago levantado tan temprano?) no había forma de que dejase de sonar la alarma de unos andamios de la plaza, no paraba la batidora del bar desde donde escribo y, encima, esto, esto, esto, esto, esto, esto,…

Son todas noticias relacionadas con la publicación de esto, un artículo que describe un estudio clínico (¡con 84 sujetos!) en el que se comparan dos grupos (uno tratado y otro no) que,

Detección de "outliers" locales

Aunque outlier local parezca oxímoron, es un concepto que tiene sentido.

Un outlier es un punto dentro de un conjunto de datos tan alejado del resto que diríase generado por un mecanismo distinto que el resto. Por ejemplo, puedes tener las alturas de la gente y alguna observación que parece producto de otra cosa como, por ejemplo, errores mecanográficos en la transcripción. Un outlier está lejos del resto. Pero, ¿cuánto?

Con ciertas distribuciones tiene sentido pensar que los outliers son puntos a una distancia superior a nosecuántas desviaciones típicas de la media. Más en general, fuera de un determinado círculo. Una medida similar: serían outliers aquellos puntos que a una determinada distancia solo tienen un determinado porcentaje (pequeño) del resto. Todas estas son medidas globales.

¿Alguien podría identificar tirios y troyanos?

Con los datos

pcts <- cbind(
  c(35.7, 19.6, 6.6, 16.6, 9.6),
  c(0.3, 0.2, 0.2, 0.3, 0.8),
  c(25.0, 14.9, 10.7, 32.7, 12.9),
  c(1.6, 8.0, 8.5, 6.5, 7.9),
  c(11.0, 18.7, 7.9, 12.7, 8.0),
  c(3.2, 21.5, 52.9, 16.7, 47.9)
)

totales <- c(1102, 975, 596, 638,	174)
tabla <- round(t(pcts * totales / 100))

y el concurso de

library(MASS)
biplot(corresp(tabla, nf = 2))

genero

partidos_cadenas

que a lo mejor no resulta demasiado interesante si no añado que las columnas se refieren a partidos políticos y las filas a cadenas en las que, según el CIS, sus votantes prefieren para seguir la actualidad política. Eso sabido, ¿cuál es cuál?

El extraño caso de la media empírica menguante

La distribución lognormal es la exponencial de una distribución normal. Su media, Wikipedia dixit, es $latex \exp(\mu + \sigma^2 /2)$.

Dada una muestra de la distribución lognormal (y supuesto, por simplificar, $latex \mu=0$), podemos calcular

  • su media y
  • una estimación de su $latex \sigma$ y calcular $latex \exp(\sigma^2 /2)$

y uno pensaría que los valores deberían ser similares. Mas pero sin embargo,

library(ggplot2)

set.seed(123)

sigmas <- seq(1, 10, by = 0.1)

res <- sapply(sigmas, function(sigma){
  a <- exp(rnorm(1e6, 0, sigma))
  mean(a) / exp(var(log(a))/2)
})

tmp <- data.frame(sigmas = sigmas, medias = res)

ggplot(tmp, aes(x = sigmas, y = medias)) +
  geom_point() + geom_smooth()

produce

Encuestas electorales: medios y sesgos (II)

Aquí quedó pendiente hablar de datos y métodos. Los primeros proceden de El Mundo. Solicité a Marta Ley, una coautora, los datos pero, antes de que contestase que sí (¡gracias!), me di cuenta de que podía obtenerlos solito: basta con capturar la llamada que el javascript local hace al servidor.

¿Métodos? Mejorables: se suaviza la intención de voto (con loess) y se estima la diferencia con un modelo de efectos mixtos, i.e.,

modelo<- lmer(delta ~ 1 + (1 | medio),
    data = misdatos)

¿Caveats? Veo dos: el primero, que loess suaviza teniendo en cuenta también observaciones futuras. Los autores de las encuestas no ven la verdad: solo los resultados de las encuestas previas. Debería haber usado como referencia la mejor predicción basada en observaciones pasadas. El segundo, que los porcentajes de los distintos partidos suman un total. Los sesgos no son independientes y yo los modelo como tales.

Encuestas electorales: medios y sesgos (I)

Existen las encuestas electorales. Las publican medios. Algunos, se dice, tienen sesgos. Lo he estudiado y a continuación muestro resultados.

Para el PP:

sesgo_encuestas_pp

Para el PSOE:

sesgo_encuestas_psoe

Para Podemos y cía:

sesgo_encuestas_podemos

Para Ciudadanos:

sesgo_encuestas_ciudadanos

Para IU:

sesgo_encuestas_iu

En otra entrada, datos y métodos. Hoy solo adelanto que el eje horizontal mide puntos porcentuales y que las encuestas se remontan a enero de 2015.

Discretización de variables continuas (con árboles)

La primera entrada de esta bitácora es de enero de 2010. En aquella época, recuerdo, había apartado un artículo sobre categorización de variables continuas, i.e., el proceso de convertir (¿para qué?) una variable continua en categórica de una manera óptima.

Aparte de cuestionar el paraqué (¿por qué porqué es sustantivo y paraqué no?) de la cosa me asaltaron dudas sobre el cómo. Si se quiere discretizar, ¿por qué no usar directamente un árbol? Es decir, un árbol simple en el que se modele la variable objetivo en función de la continua que se desee discretizar.

El cincuenta en raya (y el tres en raya)

Supongo que todos conocéis el tres en raya. El cincuenta en (casi) raya, sin embargo, es esto:

cincuenta_en_raya

Hay dos variables, (pluviosidad y ratio hombres/mujeres) y los cincuenta punticos casi en raya corresponden a los estados de EE.UU.

¿Asombrosa correlación? No tanto.

Aquí se discute cómo, en realidad, por su cercanía sociocultural y climática cada uno de los estados del gráfico son manifestaciones de tres grupos de ellos que, estos sí, esta? en raya (¿casualmente?).

Y viene del español, tú

Cada día soy más inculto. He dejado de escuchar música; en el último concierto al que fui maté el tiempo con un jueguito del móvil; la taquillera del teatro de mi barrio se niega a venderme entradas por cuestiones formales (que si son las 18:01 y la taquilla cierra a las 18:00); hace años que no leo ficción; en el Reina Sofía, donde otros ven arte yo encuentro desgana y mis gustos cinematográficos son de lo más estragado.

¿Un libro recomendable de estadística básica?

Me piden bibliografía para unos cursos de ciencia de datos. En particular, de estadística básica. Un texto que reúna los conceptos fundamentales de la cosa para quienes o no los aprendieron en su día o los olvidaron por el camino. Tiene que cumplir algunos requisitos mínimos:

  • Que presente los gráficos estadísticos básicos y que no estén construidos con Excel (en 3D).
  • Que, a lo más, incluya un único gráfico de tarta.
  • Que no sea muy pesado matemáticamente.
  • Que sea breve, pero no demasiado.
  • Que esté accesible, idealmente en internet, gratuita y legalmente.

Finalmente, si está escrito escrito en español y usa R, mejor aún.

El AUC es la probabilidad de que...

Voy a constuir unos datos artificiales y un modelo de clasificación binaria,

library(mgcv)
library(ggplot2)
library(pROC)

n <- 10000
dat <- gamSim(1, n=n, dist="binary", scale=.33)

lr.fit <- gam(y ~ s(x0, bs="cr") +
    s(x1, bs="cr") + s(x2, bs="cr") +
    s(x3, bs="cr"),
    family=binomial, data=dat,
    method="REML")

y luego (mal hecho: debería hacerlo sobre un conjunto de validación distinto) a obtener las predicciones para las observaciones

res <- data.frame(real = factor(dat$y),
    prob = predict(lr.fit, type = "response"))

que

ggplot(res, aes(x=prob, fill=real)) +
    geom_density(alpha=.3)

representa así:

predicciones_gam

Me pregunto si el clasificador construido es bueno. Para lo cual voy a construir la curva ROC con