Paquetes

Sweave, investigación reproducible... y más

Me consta que algunos de mis lectores están al tanto de eso que llaman investigación reproducible. De acuerdo con la Wikipedia (en inglés),

[E]l término investigación reproducible se atribuye a Jon Claerbout, de la Universidad de Stanford y se refiere a la idea de que el producto final de la investigación no debería circunscribirse a un artículo sino comprender también el entorno computacional completo usado en la generación los resultados que contiene, tales como el código, los datos, etc. para que puedan ser reproducidos y se pueda avanzar a partir de ellos.

Desarrollo de paquetes con R (I): ¿para qué?

R

Por popular demanda, voy a comenzar una serie de entradas sobre desarrollo de paquetes con R. Mi idea consiste en establecer un diálogo con mis lectores que me permita pulirlas para acabar escribiendo un documento que pueda resultar útil a los usuarios de R.

En el primero me voy a limitar a explicar para qué puede resultar útil desarrollar paquetes. Lo voy a hacer desde mi experiencia de desarrollador y desde el particular punto de vista de mis hábitos y manías personales. Y no sería justo proseguir sin anunciar (o confesar) que una de las más pugnaces es la de mi aversión al caos.

Una herramienta para construir paquetes de R sobre Windows

R

Construir paquetes multiplataforma con R supone todo un reto para quienes tenemos un acceso limitado o nulo a determinados sistemas operativos. En particular, a muchos nos resulta complicado acceder a una máquina Windows con todas las herramientas necesarias para crear y comprobar los paquetes.

Pero Uwe Ligges, el encargado de los paquetes binarios de Windows para CRAN ha puesto en funcionamiento un servicio para poder compilarlos. En la página de información de este servicio pueden consultarse las instrucciones para subir los paquetes y los caveats:

Dos perspectivas sobre el problema de los valores no informados

Me llegó el otro día información acerca de un curso sobre métodos para afrontar el problema planteado por los valores no informados (missing observations) que su autor agrupaba bajo etiquetas bastante simpáticas: el bueno, el malo y el impensable. Tal vez faltaba el feo, tal vez porque lo son todos ellos, igual que el bendito problema que suponen. Añadía, sin mayores abundamientos, que

  • explicaría cómo la solución común es en general la peor;
  • mostraría por qué cierta solución sencilla, relativamente común y con mala fama no es habitualmente tan mala, explicando, además, cuáles son las situaciones en las que funciona y no funciona e
  • indicaría dos soluciones que proporcionan resultados insesgados, una de las cuales es sencilla de implementar pero sólo funciona en ciertas circunstancias y la otra, aunque más complicada, funciona siempre.

Es un planteamiento un tanto comercial y no exento de gancho. Sin embargo, para el interesado en estos temas, traigo a colación dos artículos que ofrecen dos perspectivas algo distintas sobre este problema. El primero es una panorámica de procedimientos y herramientas existentes para encarar el problema de los valores no informados (en el contexto del análisis de la regresión, pero fácilmente extrapolables a otros similares), _Much Ado About Nothing: A Comparison of Missing Data Methods and Software to Fit Incomplete Data Regression Models _. El segundo es un informe de la Agencia Europea del Medicamento, Guideline on Missing Data in Confirmatory Clinical Trials, que sostiene una postura razonablemente paranoica al respecto (resumidamente: en caso de duda, siempre la solución más conservadora).

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.

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.

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!

R, HDF5 y bases de datos orientadas a columnas

R

Tras escribir el otro día sobre RevoscaleR, he tropezado con un paquete de R, HDF5 que le permite hacer cosas parecidas usando tecnologías libres. Puede encontrarse más información sobre HDF5 en la Wikipedia y en la página del proyecto.

De todos modos, y como dejé escrito como respuesta a un comentario en la entrada que indico más arriba, una solución definitiva al problema del análisis de conjuntos de datos grandes con R podría venir de la mano de una integración adecuada con un gestor de bases de datos orientado a columnas. En efecto, el cuello de botella más notable que existe al usar R junto con, p.e., Postgres (y como Postgres el 99% de los restantes DBMS) es que sus tablas son conjuntos de filas mientras que para R son listas de colunmas. Por tanto, quiérase o no, en algún sitio hay que realizar una trasposición computacionalmente pesada.