Hackatón de datos abiertos, 21 de febrero en Madrid

El día 21 de febrero (de 2015) tendrá lugar en Medialab-Prado (¿cómo llegar?) un hackatón de datos abiertos patrocinado por Medialab-Prado y Open Knowledge Spain. El resto de la información puede consultarse aquí.

Dicho lo cual, ¿deberías ir?

Pues si tienes 45 años, eres profesor de la Autónoma, etc. lo sabes tú mejor que yo.

Pero si tienes veintitantos, estudias, has comenzado a trabajar recientemente o estás en el paro, si tienes inquietudes (y las tienes si lees esto), si quieres conocer técnicas nuevas, problemas nuevos, contactar con gente interesante, etc., el día 21 coge tu portátil y acude.

La profesionalización de R

R

Tenía en mente escribir estas líneas desde hace un tiempo. La reciente noticia de la adquisición de Revolution Analytics por parte de Microsoft la ha adelantado, como mucho, unos pocos días.

S, el lenguaje del que R es una implementación libre, vivió su ciclo propietario completo: nació en los laboratorios Bell, creció con Insightful, se reprodujo (R fue su vástago) y creo que ha muerto sin pena ni gloria en manos de Tibco. Como casi cualquier otro producto similar.

Grandes datos, máquinas pequeñas (y regresiones logísticas con variables categóricas)

Preguntaba el otro día Emilio Torres esto en R-help-es. Resumo la pregunta. Se trata de una simulación de unos datos y su ajuste mediante una regresión logística para ver si los coeficientes obtenidos son o no los esperados (teóricamente y por construcción).

El código de Emilio (cuyos resultados no podemos reproducir porque no nos ha contado qué similla usa) es

logisticsimulation <- function(n){
  dat <- data.frame(x1=sample(0:1, n,replace=TRUE),
                    x2=sample(0:1, n,replace=TRUE))
  odds <- exp(-1 - 4 * dat$x1 + 7*dat$x2 - 1 *dat$x1* dat$x2 )
  pr <- odds/(1+odds)
  res <- replicate(100, {
    dat$y <- rbinom(n,1,pr)
    coef(glm(y ~ x1*x2, data = dat, family = binomial()))
  })
  t(res)
}

res <- logisticsimulation(100)
apply(res,2,median)
## (Intercept)          x1          x2       x1:x2
## -1.0986123 -18.4674562  20.4823593  -0.0512933

Efectivamente, los coeficientes están lejos de los esperados, i.e., -1, -4, 7 y 1.

Cuando dicen que la variable x es exógena, quieren decir...

Cuando los economistas dicen que la variable $x$ es exógena (con respecto a una variable de interés $y$) en realidad quieren decir que la función de verosimilitud $f(x,y)$ puede descomponerse de la forma $f(x,y) = f(y|x) g(x)$ y eso permite modelizar $y$ en función de $x$.

Cuando la descomposición no es posible (porque $x$ y $y$ se influyen mutuamente) dicen que $x$ es endógena. Obviamente, a la hora de (pretender) modelizar $y$ pueden considerarse variables endógenas y exógenas (y la correspondiente descomposición de la verosimilitud es un ejercicio para el lector).

Dónde guardar los paquetes de R (en Linux, al menos)

R

En todos mis Linux, desde el principio de los tiempos, R guardaba los paquetes en

  • /usr/lib/R/library
  • /usr/lib/R/site-library (¡a veces y no sé por qué!)
  • /usr/local/lib/R/site-library

Bajo /usr/lib deberían instalarse solo aquellos que vienen de serie con la instalación de R (o que se instalan usando el sistema de actualización de paquetes de la distribución de Linux) mientras que bajo /usr/local vivirían los instalados posteriormente por el usuario (véase esto).

Por supuesto, para escribir /usr/local/lib/R/site-library hacen falta permisos de superusuario y los paquetes ahí instalados están disponibles para todos los usuarios de la máquina. Pero de un tiempo a esta parte y por culpa, creo, de RStudio (tanto en versión de escritorio como de servidor), se me han comenzado a instalar paquetes en ~/R, bajo mi directorio personal. ¡Anatema!

No me ha salido, pero lo cuento igual

Creo que todos sabéis la historia de las admisiones de la Universidad de Berkeley y la paradoja de Simpson. Con palabras, muchas palabras, está contado, por ejemplo, aquí. Y si buscáis ubc admissions simpson en Google la encontraréis también en modo --verbose en muchos más sitios.

En R puede resumirse en

library(reshape2)
library(plyr)

data(UCBAdmissions)

raw <- as.data.frame(UCBAdmissions)

dat <- dcast(raw, Gender + Dept ~ <a href="http://inside-r.org/packages/cran/AdMit">Admit)

mod.0 <- glm(cbind(Admitted, Rejected) ~ Gender, data = dat, family = binomial)
mod.1 <- glm(cbind(Admitted, Rejected) ~ Gender + Dept, data = dat, family = binomial)

Echad un vistazo a los coeficientes de Gender en ambos modelos y veréis.

Huele a bicho (en plyr)

R
library(plyr)

dat <- data.frame( a = sample(c("x", "y"),    100, replace = T),
                    b = sample(c(TRUE, FALSE), 100, replace = T))

ddply(dat, .(a), summarize, b = sum(b), no.b = sum(!b))
ddply(dat, .(a), summarize, no.b = sum(!b), b = sum(b))

Huele a bicho, ¿verdad?

Rarezas: estadística algebraica

Matemáticas y estadística son peras y manzanas. La una es la ciencia del ser; la otra, del parecer. Se encuentran en la teoría de la probabilidad, pero se miran de reojo y con recelo. Por eso este curso de estadística algebraica es toda una rareza.

Contiene resultados, como la proposición 1.1.2 que… bueno, sí, bien, vale:

Proposición 1.1.2. Las variables aleatorias [discretas] X e Y son independientes sí y solo sí la matriz $p = (p{ij})$ tiene rango 1._

evtree: árboles globales

Tengo por delante otro proyecto que tiene mucho de análisis exploratorio de datos. Sospecho que más de un árbol construiré. Los árboles son como la Wikipedia: prácticamente nunca el último pero casi siempre el primer recurso.

Esta vez, además, por entretenerme un poco, probaré el paquete [evtree](http://cran.r-project.org/web/packages/evtree/index.html). Aunque no porque espere sorprendentes mejoras con respecto a los tradicionales, ctree y rpart.

¿Qué tiene aquel que los diferencie de los otros dos? Que la optimización es global. Tanto ctree como rpart utilizan algoritmos recursivos: al definir un nuevo corte del espacio, el algoritmo solo tiene en cuenta la región definida por los cortes anteriores. La optimización es local. evtree utiliza un algoritmo global de la familia de los evolucionarios (¡qué tufillo a lentorro!). Los detalles están aquí.

Tres libros más, una biblioteca menos

Todos los años tengo el vicio de comprar algún libro. Aprovecho mi viaje a Zaragoza para dejarme caer por mis librerías favoritas (o las que quedan de ellas) y llevarme algo a casa.

Este año he sido perezoso. En lugar de acudir a la Librería General, he dado un paseo por libgen.org. He descargado tres libros que tenía en mi lista de pendientes:

Creo que puedo recomendarlos todos, aunque no he terminado ninguno.