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.

Validación cruzada en R

Está de moda usar caret para estas cosas, pero yo estoy todavía acostumbrado a hacerlas a mano. Creo, además, que es poco instructivo ocultar estas cuestiones detrás de funciones de tipo caja-negra-maravillosa a quienes se inician en el mundo de la construcción y comparación de modelos. Muestro, por tanto, código bastante simple para la validación cruzada de un modelo con R:

# genero ids
ids <- rep(1:10, length.out = nrow(cars))

# Nota: da igual si nrow(df) no es múltiplo de 10

# los aleatorizo
ids <- sample(ids)

# esto devuelve una lista de dfs:
preds.cv <- lapply(unique(ids), function(i){
  preds <- predict(lm(dist ~ speed,
    data = cars[ids != i,]), cars[ids == i,])
  data.frame(
    preds = preds,
    real = cars[ids == i,]$dist)
})

# "apilo" los dfs:
preds.cv <- do.call(rbind, preds.cv)

# calculo el rmse
rmse <- sqrt(mean((preds.cv$preds - preds.cv$real)^2))

Sí, estoy usando el RMSE aunque sea un detractor del mismo.

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.

Mucho ha cambiado en 20 años (menos el número de taxis)

Muchas cosas han cambiado en los últimos 20 años. De hecho, acaba de hacer 20 años desde la primera vez que me conecté a internet y que tuve una cuenta de correo electrónico.

Sin embargo,

taxis_espana

(Las cifras anteriores corresponden a taxis de las capitales de provincia; hay datos para otras en el INE).

Incidentalmente, hoy se han manifestado taxistas de toda España en Madrid para exigir protección para el sector.

Hoy se ha anunciado la propuesta de nueva página de la Comunidad R Hispano

R

Acabo de escribir a los socios de la Comunidad R Hispano acerca de la existencia de una propuesta para renovar la página de la asociación. Podéis ver la versión actual y la propuesta.

Logo de la Comunidad R Hispano

(Y agradezco muchísimo el trabajo de Paula López Casado, responsable de que la nueva página tenga un aspecto infinitamente más atractivo que la que lees).

(Además, esta entrada incluye el que será el nuevo logo de la Comunidad R Hispano).

Evidencialidad

Por afición y, últimamente, por motivos laborales también, me ha preocupado cómo se refleja la incertidumbre en el lenguaje y cómo este sirve para transmitir aquella (véase, por ejemplo, esto).

En el español tenemos algunos recursos para manifestar grados de certidumbre (el condicional, el subjuntivo, etc.). Véanse por ejemplo (esta es la referencia) a los 570 sufridos hablantes del tuyuca que no pueden decir simplemente “él jugaba al fútbol”, sino que tienen que elegir obligatoriamente entre los diferentes sufijos verbales que (además de indicar la persona y el tiempo) indican el modo por el cual el hablante obtuvo el conocimiento que afirma en el enunciado:

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.

Energía solar: instalaciones industriales vs paneles en tejados

Llegó a mis manos un documento sobre los costes relativos de las distintas tecnologías e implementaciones para generar energía eléctrica del que rescato este subgráfico:

precio_energia_solar

Muestra el precio del MWh en dólares y sirve para comparar, por ejemplo, el coste de los paneles que la gente instala en sus tejados (184-300) con el de instalaciones industriales (50-70).

Las conclusiones, de nuevo, de cada cual.