R

Se buscan "alpha testers" para rPython

R

Busco alpha testers para mi paquete rPython. El paquete es la evolución natural de rJython, un paquete de R que permite llamar a Jython, el dialecto de Python que corre sobre la máquina virtual de Java, desde R.

rPython permite llamar al verdadero Python. Funciona perfectamente en mi máquina, pero necesito ver qué problemas de instalación y uso aparecen en otras plataformas. De momento, sólo funcionaría sobre plataformas UNIX o Linux. Me sorprendería lo indecible que funcionase también sobre Windows: sería toda una casualidad.

La versión 0.7 del paquete colbycol, en CRAN

R

Me complace anunciar la subida a CRAN de la versión 0.7 del paquete colbycol.

La diferencia esencial con respecto a la anterior es:

  • Utiliza el paquete filehash para crear el objeto que almacena los datos en disco.
  • Incorpora algunas mejoras de uso sugeridas por los usuarios que facilitan la manipulación de los datos.

Espero poder publicar un estudio comparado del rendimiento en los próximos días.

Solipsismo, comunidad y rendimiento

R

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.

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.

¿Qué nos jugamos?

Imagine que le proponen participar reiteradamente en un juego de azar. Dispone de una cantidad de dinero inicial, $latex a$ euros, y puede apostar en un juego en el que o gana con probabilidad $latex p$ $latex 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?

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.

Teradata, R y las III Jornadas de Usuarios de R

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.

Paralelización de bucles con foreach

R

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é sólo de una: la que abre la puerta de una manera sencilla a la paralelización de bucles.

Nueva versión de paquete colbycol

R

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 sólo 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.

Anuncio de las III Jornadas de usuarios de R

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.

R y Excel: una alternativa

R

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!

Ya no si sino cuánto

R

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!

Paréntesis, llaves y rendimiento en R

R

Conforme se populariza el uso de R, cobran creciente importancia las cuestiones concernientes a su rendimiento, su gestión de la memoria, etc. Hasta el punto que incluso uno de sus creadores, Ross Ihaka, ha expresado últimamente su descontento con las limitaciones de R (el enlace es gentileza de Daniel Castro) sugiriendo que sus componentes puramente estadísticos deberían construirse sobre la base de un lenguaje distinto, posiblemente Lisp.

Dentro de este contexto de preocupación sobre el rendimiento de R, han aflorado algunas cuestiones acerca de la eficiencia del intérprete a la hora de resolver expresiones matemáticas. Por ejemplo, Radford Neal estudió el desigual desempeño de R frente a ciertas expresiones matemáticas equivalentes: en particular, la expresión