Estadística

Sin datos solo eres alguien con una priori

Que es una manera de matizar

sin_datos_deming

Porque, recordemos,

  • no solo con datos tomamos decisiones informadas: las prioris (experiencia cuantificada) tienen su importancia
  • no podemos obtener datos que justifiquen todas, todas, todas las decisiones.

Mezclas de distribuciones con Stan

y <- c(rnorm(1000), rnorm(2000, 1, 0.5))

es una mezcla de dos normales (N(0, 1) y N(1, 0.5)) con pesos 1/3 y 2/3 respectivamente. Pero, ¿cómo podríamos estimar los parámetros a partir de esos datos?

Se puede usar, p.e., flexmix, que implementa eso del EM. Pero en el librillo de este maestrillo dice

library(rstan)

y <- c(rnorm(1000), rnorm(2000, 1, 0.5))

codigo <- "
data {
  int<lower=1> K; // number of mixture components
  int<lower=1> N; // number of data points
  real y[N]; // observations
}

parameters {
  simplex[K] theta; // mixing proportions
  real mu[K]; // locations of mixture components
  real<lower=0> sigma[K]; // scales of mixture components
}

model {
  real ps[K]; // temp for log component densities

  sigma ~ cauchy(0,2.5);
  mu ~ normal(0,10);

  for (n in 1:N) {
    for (k in 1:K) {
      ps[k] <- log(theta[k]) + normal_log(y[n],mu[k], sigma[k]);
    }
    increment_log_prob(log_sum_exp(ps));
  }
}"

fit <- stan(model_code = codigo,
            data = list(K = 2, N = length(y), y = y),
            iter=48000, warmup=2000,
            chains=1, thin=10)

En el código anterior no sé si queda claro cómo cada punto $latex y_i$ sigue una distribución (condicionada a los parámetros) con densidad $latex \theta_1 \phi(y_i, \mu_1, \sigma_1) + \theta_2 \phi(y_i, \mu_2, \sigma_2)$.

Los tres contraargumentos habituales

Hago pública por su interés (parte de) una respuesta de Ramón Díaz Uriarte a un correo mío en el que yo sugería

que una vez que sabes especificar un modelo probabilístico para unos datos, p.e.,

  • para la regresión lineal, y ~ N(a0 + a1 x1 +..., sigma)),
  • para el test de Student, y0 ~ N(mu, sigma); y1 ~ N(mu + delta, sigma),
  • etc. no hace falta saber qué es lm, ni el test de Student, ni nada. Cero teoría; sobre todo, de teoría tipo recetario. Se especifica el modelo (con una determinada sintaxis), se deja correr la cosa y a interpretar.

Su respuesta:

¿Hay una epidemia en mi grafo?

Tengo un grafo, g cuyas aristas pueden ser cualquier cosa susceptible de contaminarse. Me pregunto si la contaminación puede contagiarse a través del grafo. Es decir, si A y B están unidos por una arista y A está contaminado, la probabilidad de que B también lo esté es superior a la normal.

Se me ocurre probar esa hipótesis así:

library(igraph)

# mi grafo
g <- erdos.renyi.game(10000,
  p.or.m = 0.001, type="gnp")

min.mean.dist <- function(n){
  # contaminación al azar
  contaminados <- sample(V(g), n)

  # distancias entre aristas contaminadas
  res <- shortest.paths(g,
    v = contaminados, to = contaminados)
  diag(res) <- Inf

  # distancia al contaminado más próximo
  min.dist <- apply(res, 1, min, na.rm = T)

  # y su media
  mean(min.dist)
}

# histograma bajo la hipótesis nula
res <- replicate(100, min.mean.dist(100))

El resto son detalles que el lector atento sabrá completar por su cuenta.

La democracia no representativa no es representativa

En estadística, una muestra representativa tiene que contener las características relevantes de la población en las mismas proporciones en que están incluidas en tal población (referencia).

En estos tiempos, se están poniendo de moda alternativas a la muy tradicional democracia representativa que, en contraposición a ella, no aspiran a serlo. Y su principal problema radica, precisamente, en que no lo son.

Lo anterior no es más que una opinión: es la constatación de un hecho. Esta semana pasada, en aras de una versión más directa y asamblearia de la democracia, ha habido en mi barrio un par de eventos en los que en presencia de la alcaldesa de Madrid el uno y del concejal de mi distrito el otro, se han tratado temas que me interesan directamente. Pero, oh, fatalidad, a la hora en que yo (y muchos otros) estamos lejos y ocupados ganándonos el pan.

Clases sociales y clústering

El clústering (o análisis de conglomerados, o como se le quiera llamar) es un atajo intelectual. En lugar de estudiar individuos (no necesariamente personas), estos se agrupan de manera más o menos cuestionable, se eligen representantes en cada uno de ellos, cuyas características se atribuyen a continuación a todos sus miembros.

No puedo evitar escribir párrafos como el anterior sin que me venga a la nariz ese olor a naftalina de cuando era crío y abría los armarios de mi abuela.

¿Cómo seleccionar un cubo al azar?

Podemos hacerlo seleccionando aleatoriamente (uniformemente)

  • la longitud de la arista (p.e., entre 3 y 5 cm)
  • la superficie de la cara (p.e., entre 9 y 25 cm²)
  • su volumen (p.e., entre 27 y 125 cm³)

Obviamente, los tres mecanismos anteriores generarán distribuciones de muestreo diferentes (¿cuáles?).

Una trivialidad, tal vez, que tiene que ver con esto y con esto.

rstan y rstanarm en Medialab-Prado este jueves

Este jueves (2016-02-11), a las 19:00, hablaré de rstan y de rstanarm en Medialab-Prado dentro de la reunión de usuarios de R de Madrid. Con el concurso de estos paquetes, replantearé tres problemas estadísticos conocidos desde una óptica bayesiana:

  • Pruebas de hipótesis
  • Regresión lineal
  • Modelos estructurales de series temporales

Si quieres asistir, reserva tu plaza aquí.

Probablemente, discutiré todos esos modelos en estas páginas en los próximos días, además de colgar las diapositivas y sus fuentes.

Los resultados de esta investigación tienen puntos en común con la metodología científica aunque en ningún momento tendrán la misma validez ni tampoco es su intención que la tenga

¡Olé!

Con la frase que titula esta entrada se cierra este artículo tan torero de eldiario.es.

El resto de lo que se publica me viene de perillas para ilustrar a mis alumnos del máster de ciencia de datos de KSchool eso de la dependencia e independencia condicional.

Lo que el artículo argumenta, y que nadie pone en duda, es que altas concentraciones de óxidos de nitrógeno (A) y picos de hospitalizaciones por enfermedades respiratiorias (B), no son eventos independientes. Es decir, que $latex P(A \cap B) \neq P(A)P(B)$. En otros términos, que nuestro conocimiento de A nos permite refinar nuestra estimación de B. Todo correcto.