¿Quieres presentar algo en las Jornadas de Usuarios de R?

En varias de las ediciones de las Jornadas de Usuarios de R he formado parte del comité organizador, que se encarga, fundamentalmente, de la logística de la cosa. Este año, para variar, estoy en el comité científico. Como integrante del cual, es labor mía tratar de animaros a que enviéis alguna propuesta de participación, que puede tener alguno de los siguientes formatos: Una presentación de unos 20 minutos, mostrando alguna aplicación de R. Y no necesariamente en el mundo académico. Son también bienvenidas y apreciadas las aplicaciones en empresas e instituciones de todo tipo. De hecho, una de las presentaciones más recordadas del año pasado, la de Antonio Sánchez Chinchón, trató de aplicaciones ludicomatemáticas de R. Un taller (típicamente de 2 horas) para enseñar a utilizar alguna herramienta particular de R. En el pasado las ha habido de mapas, de gráficos, de Spark… ¡y recuerdo uno sobre plyr y reshape2 que impartí en 2010 cuando esos paquetes eran una novedad y una rareza! Hay tiempo hasta el primero de mayo para realizar las propuestas. Los detalles pueden consultarse aquí. ...

4 de marzo de 2016 · Carlos J. Gil Bellosta

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 $y_i$ sigue una distribución (condicionada a los parámetros) con densidad $\theta_1 \phi(y_i, \mu_1, \sigma_1) + \theta_2 \phi(y_i, \mu_2, \sigma_2)$. ...

3 de marzo de 2016 · Carlos J. Gil Bellosta

Pequeño bug en ggmap: no pinta el último tramo de una ruta

Supongo que no debería escribirlo aquí sino comunicárselo a quien mantiene ggmap. Pero ya tuve una experiencia mejorable con él y dos no serán. Así que lo cuento por acá. La mayor parte del mérito en el descubrimiento, en cualquier caso, es de una alumna de la clase de R que he dado hoy (en el momento en el que escribo, no en el que lees) en el Banco de Santander. No tengo su nombre ni tengo claro que quisiese que lo mencionase. ...

2 de marzo de 2016 · Carlos J. Gil Bellosta

Ficheros KML con R y ggmap

Fácil: library(maptools) library(ggmap) # un fichero bajado el Ayto. de Madrid # (catálogo de datos abiertos) rutas <- getKMLcoordinates("dat/130111_vias_ciclistas.kml") # procesando el fichero kml rutas <- lapply(1:length(rutas), function(x) data.frame(rutas[[x]], id = x)) rutas <- do.call(rbind, rutas) # mapa de Madrid mapa <- get_map("Madrid", source = "stamen", maptype = "toner", zoom = 12) # pintando los tramos sobre el mapa ggmap(mapa) + geom_path(aes(x = X1, y = X2, group = id), data = rutas, colour = "red") produce Nota: KML es esto.

1 de marzo de 2016 · Carlos J. Gil Bellosta

Las VIII Jornadas de Usuarios de R, en Albacete

Por si alguien aún no lo sabe: estamos todos citados en Albacete los días 17 y 18 de noviembre de 2016 en las VIII Jornadas de Usuarios de R. Los detalles, aquí.

25 de febrero de 2016 · Carlos J. Gil Bellosta

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. ...

23 de febrero de 2016 · Carlos J. Gil Bellosta

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

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. (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).

18 de febrero de 2016 · Carlos J. Gil Bellosta

Diapositivas (y código fuente) de mi charla sobre rstan

Las diapositivas de mi charla sobre rstan en el grupo de usuarios de R de Madrid del 2016-02-11 están aquí. (Y los vídeos).

12 de febrero de 2016 · Carlos J. Gil Bellosta

storr: como Redis, pero con R

Probablemente no habéis utilizado nunca Redis. Redis es un sistema de almacenamiento basado en parejas clave-valor. Es similar a un diccionario de Python o a un entorno en R. Salvo que el almacenamiento es externo al proceso: los datos se guardan en un sistema distribuido y potencialmente ilimitado en cuanto a capacidad. Si queréis probar algo parecido, además de los diccionarios y los entornos, podéis probar con storr , un paquete reciente de R. Aquí tenéis una minisesión de ejemplo: ...

9 de febrero de 2016 · Carlos J. Gil Bellosta

Premoniciones de Tirole sobre sobre el R Consortium

A J. Tirole tiene Nobel de economía. En 2002 escribió un artículo, Some Simple Economics of Open Source, en el que trataba de explicar desde un punto de vista económico y de organización industrial el porqué de esa rareza. Aparte de cuestiones como si sería extrapolable a otros sectores distintos del del desarrollo de software. En la sección sobre la reacción de las compañías de software frente al fenómeno del software libre tiene un apartado titulado viviendo simbióticamente de [no con] un proyecto de código abierto que termina con la frase (mi traducción): ...

1 de febrero de 2016 · Carlos J. Gil Bellosta