Anunciado el programa de las VII Jornadas de Usuarios de R

Se acercan las VII Jornadas de Usuarios de R. Y se acaba de actualizar la página con la siguiente información: El programa, en el que, además de charlas, hay varios talleres muy atractivos. La cena social (para la que es bueno que reserves: ¡necesitamos una buena estimación de cuántos acabaremos siendo!) El anuncio de una visita guiada gratuita a la ciudad de Salamanca. Como novedad con respecto a otras jornadas, el anuncio de una excursión durante el sábado a la sierra de Francia y alrededores. La asistencia a las jornadas es gratuita y, de momento, estamos inscritos unos 150. ¿Te sumas tú también?

28 de septiembre de 2015 · Carlos J. Gil Bellosta

Un problema "sencillo": posiciones y ruido

Voy a describir la solución un problema sencillo. Se trata de un objeto que se mueve a una velocidad no necesariamente constante en línea recta. Este objeto emite su posición y velocidad periódicamente (p.e., cada segundo). Por centrar ideas, su posición y velocidad reales en esos momentos es n <- 100 v.real <- rnorm(n, 1, 0.2) x.real <- cumsum(v.real) (Perdóneseme lo gañán de la física que aplico para calcular las posiciones: prometo que se puede y que sé hacerlo mejor; pero para el presente caso, vale). ...

18 de septiembre de 2015 · Carlos J. Gil Bellosta

NMF: una técnica mergente de análisis no supervisado

[N]NMF (se encuentra con una o dos enes) es una técnica de análisis no supervisado emergente. Se cuenta entre mis favoritas. [N]NMF significa non negative matrix factorization y, como SVD, descompone una matriz M como UDV'. Solo que, en este caso, las entradas de M son todas positivas. Y la descomposición es UV', donde las entradas de ambas matrices son también positivas. ¿Qué tipo de matrices tienen entradas estrictamente positivas? Las resultantes de cuestionarios donde sujetos (filas) valoran (de 0 a 10) objetos, propuestas, etc. (columnas). Las que representan clientes (filas) que compran (un determinado número >= 0) de productos (columnas). … Y acabo con un instrumento (el paquete NMF de R) y el análisis de una encuesta realizado con dicha técnica para que la veáis en acción.

14 de septiembre de 2015 · Carlos J. Gil Bellosta

Cosas de R (¿que tal vez alguien sabrá explicar?)

En Twitter, leo The state of the art in statistical computing: sum(c(1, 2), na.r=F) [1] 3 sum(c(1, 2), na.r=T) [1] 4 – John Myles White (@johnmyleswhite) September 8, 2015 ¿Alguien puede explicar lo que ocurre? ¿Es tan grave como parece indicar sorna el autor del tuit?

9 de septiembre de 2015 · Carlos J. Gil Bellosta

Voronois con distintas distancias

Especulando sobre la diferencia en la práctica entre distintas métricas ($l_1$, $l_2$, $l_\infty$, etc.), construi una serie de diagramas de Voronoi usado métricas arbitrarias. En la Wikipedia se comparan gráficamente $l_1$, $l_2$ (o euclídea y Manhattan). Mi código, library(data.table) library(reshape2) library(grid) n <- 20 dim.image <- 1000 puntos <- data.frame(id = 1:n, x0 = runif(n) * dim.image, y0 = runif(n) * dim.image) colores <- rainbow(n) voronoi <- function(p){ tmp <- data.table(expand.grid( x = 1:dim.image, y = 1:dim.image, id = 1:n), key = "id") tmp <- merge(tmp, puntos, by = "id") distancia <- function(a, b, c, d, p) (abs(a-c)^p + abs(b-d)^p)^(1/p) tmp$distancia <- distancia(tmp$x, tmp$y, tmp$x0, tmp$y0, p) tmp[, rank := rank(distancia, ties = "random"), by = c("x", "y")] rejilla <- tmp[tmp$rank == 1,] rejilla$x0 <- rejilla$y0 <- rejilla$distancia <- rejilla$rank <- NULL rejilla$color <- colores[rejilla$id] imagen <- as.matrix(dcast(rejilla, x ~ y, value.var = "color")[,-1]) grid.raster(imagen) } permite usar más en función del parámetro p. ...

8 de septiembre de 2015 · Carlos J. Gil Bellosta

Guías de estilo para programar en R

Frans van Dunné me ha hecho llegar su guía de estilo de programación en R. Abunda en otra creada por Google hace un tiempo y que traduje y adapté aquí. Tiene como novedad, dice, su adaptación a las formas y maneras de Hadley Wickham, aún no tan conocido entonces. Coinciden, no obstante, en lo más. Ninguna de las dos trata el uso las tuberías (operador %>%). Pero es un asunto que se nos puede ir de las manos: de hecho, hoy he conocido el paquete [backpipe](https://github.com/decisionpatterns/backpipe), que implementa %<% y que nos augura largas y desesperantes sesiones de depuración de código.

4 de septiembre de 2015 · Carlos J. Gil Bellosta

Estar en racha (y promediar promedios)

Suponemos que observamos rachas de longitud 2 + rpois(1, 10) de un juego en el que se tiene éxito (1) o se fracasa (0) con probabilidad 1/2. Nos interesa saber si existe eso de las rachas de suerte, es decir, si es más probable que a un éxito le suceda otro o lo contrario. El observador ve rachas y calcula el número de veces que a un éxito le sigue un éxito y el número de veces que a un éxito le sigue un fracaso así: ...

10 de agosto de 2015 · Carlos J. Gil Bellosta

Ajuste de probabilidades en regresiones logísticas bajo sobremuestreo ( y otros)

En ocasiones, el conjunto de datos sobre el que se ajusta una regresión logística está desequilibrado con respecto a la población subyacente. Por ejemplo, puede suceder que la tasa de casos positivos en los datos sea del 20% mientras que en la población general es del 5%. Esto puede suceder por varios motivos. El sobremuestreo es uno de ellos: se sobremuestrea cuando se toman, por ejemplo, todos los casos positivos y solo un subconjunto de los negativos. ...

3 de agosto de 2015 · Carlos J. Gil Bellosta

Estrategias escalables con R

Recomiendo leer Scalable Strategies for Computing with Massive Data, un artículo que trata dos de los problemas de escalabilidad con que tropezamos los usuarios de R: Los de memoria, para los que proponen e ilustran el uso del paquete bigmemory. Los de velocidad de ejecución, a los que se enfrentan paralelizando el código, tanto en una única máquina como en un clúster, con foreach. En el artículo no solo discute los dos paquetes por separado sino que ilustra además cómo usarlos conjuntamente en su propuesta de estrategia escalable con R.

22 de julio de 2015 · Carlos J. Gil Bellosta

Un modelo jerárquico para lo de Casillas

Vuelvo a lo de Casillas inspirándome en el primer ejemplo de este artículo de Gelman et al. El planteamiento es el siguiente: el número de paradas, $n_i$, que realiza el $i$-ésimo portero tiene una distribución binomial $$ n_i \sim B(N_i, p_i)$$ donde $N_i$ es el número de disparos entre los palos y $p_i$ es la habilidad innata del portero. Estas habilidades innatas siguen una distribución dada, la de habilidades innatas de los porteros de primera división, que podemos suponer que sigue una distribución beta ...

15 de julio de 2015 · Carlos J. Gil Bellosta