Solipsismo, comunidad y rendimiento

Desde esta bitácora hemos seguido atentamente el a veces espinoso asunto del rendimiento de R. De ello es muestra entradas como ésta. Por eso retomamos el asunto para comentar desde una óptica distinta un análisis publicado hace un mes cuyo autor estudia la ineficiencia de funciones básicas como la media y otras similares. Y llega a conclusiones que no es necesario manifestar explícitamente a quien ejecute esto en R: x <- rnorm(50000) foo.mean <- function(){ mean(x) } foo.mean.int <- function(){ .Internal(mean(x)) } foo.sum <- function(){ sum(x) / length(x) } system.time(tmp <- replicate(10000, foo.mean())) system.time(tmp <- replicate(10000, foo.mean.int())) system.time(tmp <- replicate(10000, foo.sum())) Efectivamente, la media es lenta: pierde mucho tiempo en comprobaciones, revisando opciones y casos particulares. Además, es una función genérica que tiene que encontrar el método adecuado. Todo eso supone, efectivamente, un sobrecoste. ...

18 de mayo de 2011 · Carlos J. Gil Bellosta

Consejos para utilizar R "en producción"

El otro día di con una entrada en una bitácora con cinco consejos para utilizar R en producción. Cuatro de ellos son razonables: Crear un sistema de validación, monitorización y alertas. Y, en particular, desarrollar un mecanismo para que R notifique los problemas encontrados por correo electrónico. En la entrada original hay código que puede utilizarse para tal fin. Usar la función sink para facilitar la detección y corrección de los errores. Usar Linux de 64 bits con mucha, mucha memoria. Aunque el autor de la entrada que comenta no lo diga, añado yo de mi cosecha que es conveniente utilizar rm y gc explícitamente cuando dejen de utilizarse objetos voluminosos para eliminarlos más satisfactoriamente y facilitar labor del recolector de basura. Usar sentencias tryCatch. El último de los consejos del autor es más cuestionable: utilizar —más bien se refiere a reescribir— tus propias funciones. Pone como ejemplo la función glm, que no tiene mucho éxito de crítica, al parecer. ...

13 de mayo de 2011 · Carlos J. Gil Bellosta

¿Qué nos jugamos?

Imagínese que le proponen participar reiteradamente en un juego de azar. Dispone de una cantidad de dinero inicial, $a$ euros, y puede apostar en un juego en el que o gana con probabilidad $p$ $b$ veces la apuesta o la pierde enteramente. Puede repetir el juego cuantas veces quiera y apostar el porcentaje que desee de su dinero. ¿Cuánto se apostaría? ¿Qué porcentaje de su capital inicial se jugaría? Suponga que decide apostar siempre un porcentaje fijo, $x$ del dinero del que disponga en cada momento. Tras la primera jugada, tendría $a + b a x = a(1+bx)$ de ganar y le quedarían $a (1-x)$ de perder. Puede seguir jugando y en cada partida su capital se multiplicaría por $1+bx$ o por $1-x$ según su suerte. Al cabo de $n$ partidas, de haber ganado $w$ de ellas, su capital inicial se habría multiplicado por ...

12 de mayo de 2011 · Carlos J. Gil Bellosta

Extensiones de la R2

Sin ir más lejos, cojamos el primer ejemplo que aparece en ?ls, es decir, ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) group <- gl(2,10,20, labels=c("Ctl","Trt")) weight <- c(ctl, trt) lm.D9 <- lm(weight ~ group) summary( lm.D9 ) y hagamos cor( weight, predict( lm.D9 ) )**2 ¿Qué obtenemos? Precisamente la R2 del modelo lm.D9. Esta relación abre la puerta a varias extensiones de esta medida de la bondad de ajuste a contextos en los que las expresiones suma de cuadrados de… carecen de sentido. En la UCLA mantienen una página sobre la R2 y sus extensiones que seguro será del provecho de muchos de los lectores de esta bitácora.

28 de abril de 2011 · Carlos J. Gil Bellosta

Teradata, R y las III Jornadas de Usuarios de R

Como parte de mis atribuciones dentro del comité organizador de las III Jornadas de Usuarios de R estoy tratando de conseguir la participación (y tal vez la financiación) de empresas e instituciones. Me ha parecido oportuno invitar a tomar parte en ellas a Teradata, empresa que, según la Wikipedia, [está] especializada en herramientas de data warehousing y herramientas analíticas empresariales. Teradata no se postula como un vendedor de herramientas de almacenamiento: quiere ir más allá. Su mercado es el de las empresas que aspiran a algo más que a que sus datos permanezcan varados en discos duros esperando, como mucho, a ser exportados a aplicaciones externas. Teradata dice ser capaz de realizar el análisis estadístico de los datos dentro de su propio sistema, eso que se ha dado en llamar in database analytics. ...

18 de abril de 2011 · Carlos J. Gil Bellosta

Paralelización de bucles con foreach

Parcialmente en agradecimiento a Revolution Analytics por haber concedido una subvención a las III Jornadas de usuarios de R voy a discutir en esta entrada cómo paralelizar bucles usando los paquetes foreach y doMC desarrollados por dicha empresa. El paquete foreach contiene, esencialmente, una única función, foreach, que, en su forma más básica, permite ejecutar bucles con una sintaxis un tanto peculiar: foreach( i = 1:3 ) %do% log( i ) Volveré sobre algunas operaciones interesantes y bastante útiles que permite realizar esta función porque, de todas ellas, hoy me ocuparésolo de una: la que abre la puerta de una manera sencilla a la paralelización de bucles. ...

8 de abril de 2011 · Carlos J. Gil Bellosta

Nueva versión de paquete colbycol

Hace unos días subí a CRAN la última versión de mi paquete colbycol. Incluí algunas mejoras sugeridas por uno de sus usuarios así como otras que estaban esperando a que liberase mi agenda. Además, añadí un pequeño tutorial en la página del paquete. El paquete colbycol está pensado para resolver —aunque solo sea parcialmente— uno de los problemas más acuciantes de quienes usamos R para el análisis de datos muy grandes: leer ficheros de datos de gran tamaño. ...

7 de abril de 2011 · Carlos J. Gil Bellosta

Anuncio de las III Jornadas de usuarios de R

Más que me complace anunciar públicamente la convocatoria de las III Jornadas de usuarios de R, que tendrán lugar los días 17 y 18 de noviembre en la Escuela de Organización Industrial, Madrid. Los interesados en asistir, participar y patrocinar —y subrayo lo de patrocinar— podrán encontrar los detalles en la página de las jornadas. Desde esta bitácora, además, quiero invitar muy especialmente a los usuarios y entusiastas de R que trabajan en empresas e instituciones ajenas al mundo académico a aportar su peculiar visión sobre el universo de usos, aplicaciones y experiencias con el lenguaje. ...

4 de abril de 2011 · Carlos J. Gil Bellosta

R y Excel: una alternativa

Los amantes de Excel están de enhorabuena. Ahora tienen una alternativa a RExcel, una extensión de Excel que le permite interactuar con R: XLConnect, un paquete multiplataforma de R que permite: Trabajar con ficheros de Excel 97 (.xls) y OOXML (.xlsx) Crear y eliminar hojas dentro de documentos Leer y escribir rangos de valores (ranges) Leer y escribir hojas de cálculo Añadir gráficos Asociar estilos a celdas Definir el tamaño de las filas y columnas Etc. Está basado en Apache POI, una colección de librerías de Java que permiten manipular ficheros en los formatos más o menos propietarios de Microsoft. Así no es siquiera necesario tener Excel instalado. ¡Ni siquiera trabajar en Windows!

23 de marzo de 2011 · Carlos J. Gil Bellosta

Ya no si sino cuánto

Ya no te preguntan si usas R. Es el signo de los tiempos: ahora te preguntan cuánto; ahora te preguntan si lo usas siempre, casi siempre, a veces, poco y, para los raritos, si no lo usas nunca. ¿Dónde? En las famosas encuestas de Kdnuggets. ¡A ver cuándo vemos un estudio de uso de R por países que nos rojigualdee la cara!

17 de marzo de 2011 · Carlos J. Gil Bellosta