Coclustering con blockcluster

Guardo desde hace un tiempo el enlace al paquete blockcluster de R que igual puede ser del interés de alguno de mis lectores. No lo he probado pero sospecho que cualquier día me puede sacar de un apuro. Implementa lo que dice, el coclústering, concepto que se explica mejor, como el efecto de las dietas milagrosas, con la foto del antes y el después: Esto es: la entrada es una matriz y la salida es una matriz reorganizada tanto en sus filas como en sus columnas en la que se han detectado bloques homogéneos. ...

1 de agosto de 2014 · Carlos J. Gil Bellosta

Facetas para entender, tal vez, la evolución del paro

La verdad, no sé de dónde los sacan porque la EPA es trimestral. Pero el INE publica datos mensuales de la tasa de desempleo y las cuelga de una de esas URLs que tienen pinta de cambiar con cualquier soplo (es decir, aviso de que en cualquier momento el enlace deja de funcionar). Por ssi acaso, estos son los datos a día de hoy. También aparecen publicados regularmente en prensa. Y los expertos opinan sobre si la cifra es buena y o mala. Pero, ¿buena o mala con respecto a qué? Así que hoy voy a ensayar un marco en el que plantear la pregunta: ...

17 de julio de 2014 · Carlos J. Gil Bellosta

Estrategias escalables (con R)

Hay quienes preguntan cómo cargar con R un csv de 8GB en un portátil de 4GB de RAM. La verdad, he leído respuestas la mar de extravagantes a este tipo de cuestiones: p.e., recomendar SQLite. Yo recomendaría Scalable Strategies for Computing with Massive Data. Entre otras cosas, porque para eso lo escribieron sus autores: para que se lea. Y porque está cargado de razón y buenos consejos. Una cosa con la que tropezará enseguida quien lo hojee es: ...

9 de julio de 2014 · Carlos J. Gil Bellosta

Disponible una nueva versión de MicroDatosEs

Acabo de subir a CRAN una nueva versión de MicroDatosEs, un paquete para procesar automáticamente en R ficheros de microdatos públicos españoles. A los cambios y mejoras a los que me referí el otro día, esta nueva versión añade otras, obra de Carlos Neira, que es ahora contribuidor oficial del paquete. Carlos también contribuyó a detectar y corregir un error inducido por el INE, que cambió el formato del fichero introduciendo una nueva variable sin aviso previo. ...

27 de junio de 2014 · Carlos J. Gil Bellosta

Grupo de usuarios de R de Portugal

Nuestros vecinos portugueses acaban de abrir un foro para sus usuarios de R un poco al estilo de nuestro r-help-es (¿todavía no estás dado de alta en él?). Espero que les sirva de base para organizar una comunidad vibrante de usuarios. Y que algún día podamos organizar unas Jornadas Ibéricas de Usuarios de R.

23 de junio de 2014 · Carlos J. Gil Bellosta

Factorizaciones positivas de matrices igualmente positivas

Cuando tenía 18 años, pensaba, llegué a aprender todo lo que había que saber sobre factorización de matrices. Incluida la inutilidad de Jordan. El otro día, con un ciento y pico por ciento más de años, he descubierto una clase entera de factorizaciones que aquellos planes de estudios viejunos no contemplaban y que, ¡carajo!, aparte de útiles engarzan con otras ideas la mar de interesantes. Se trata de factorizaciones positivas de matrices igualmente positivas. ...

19 de junio de 2014 · Carlos J. Gil Bellosta

Hoy he echado de menos Scala

Hoy he escrito last.date <- max(Filter(function(x) format(x, "%m") == "03", all.filled.data$Date)) y he echado mucho de menos Scala. Más sobre Scala: Si yo fuera rey, todos los niños aprenderían Scala. Al tipo que inventó Scala le gustan tanto o más los oneliners que a mí. Todavía me llevo mal con el compilador. La gente viene a Suiza y aprende el alemán malhablado de aquí; yo, ya véis, Scala. Soy así de sociable. Detrás de Scala vendrá Spark.

12 de junio de 2014 · Carlos J. Gil Bellosta

A vueltas con el t-test

Me gustaría no tener que hacer más t-tests en la vida, pero no va a ser el caso. El problema al que me refiero le surgió a alguien en una galaxia lejana y, de alguna manera, me salpicó y me involucró. Es, simplificándolo mucho, el siguiente. Tiene una muestra $X = x_1, \dots, x_n$ y quiere ver si la media es o no cero. ¿Solución de libro? El t-test. Pero le salen cosas raras e inesperadas. De ahí lo del salpicón. ...

10 de junio de 2014 · Carlos J. Gil Bellosta

Validación cruzada en paralelo

Estoy sin tiempo, así que os suelto el código y me largo a casa a no cenar. Es así: library(parallel) cl <- makeCluster(8) # solo si hay aleatorización # clusterSetRNGStream(cl, 123) clusterEvalQ(cl, { # las librerías necesarias tienen que cargarse # en cada esclavo library(rpart) # en la práctica, hay que cargar los datos # (¿desde fichero?) en cada esclavo my.data <- iris # lo mismo con las funciones necesarias foo <- function(x, dat){ train <- 1:nrow(dat) %% 10 != 1 mod <- rpart(Species ~ ., data = dat[train,]) res <- predict(mod, dat[!train,]) } }) res <- parSapply(cl, 0:9, function(x) foo(x, my.data), simplify = F)

6 de junio de 2014 · Carlos J. Gil Bellosta

Mínimos cuadrados con restricciones

Sí, había restricciones. No me preguntéis por qué, pero los coeficientes tenían que ser positivos y sumar uno. Es decir, buscaba la combinación convexa de cuatro vectores que más se aproximase a y en alguna métrica razonable. Y lo resolví así: # prepare constrained optimization y <- dat.clean$actual x <- t(dat.clean[,2:5]) # target function: L2 first, then other metrics L2 <- function(coef){ sum(abs((y - colSums(x * coef)))^1.5) } # restrictions: coefs > 0, sum(coefs) ~ 1 ui <- rbind(diag(4), c(-1,-1,-1,-1), c(1,1,1,1)) ci <- c(0,0,0,0,-1.000001,0.999999) theta <- rep(0.25, 4) best.coef <- constrOptim(theta, L2, grad = NULL, ui = ui, ci = ci) coefs <- best.coef$par Objetos aparte de x e y, hay: ...

5 de junio de 2014 · Carlos J. Gil Bellosta