Desarrollo de paquetes con R (IV): funciones genéricas

La función plot es genérica. Uno puede aplicársela a un data.frame o a un objeto de la clase lm. Y en el fondo, plotsolo elige cuál de sus métodos, es decir, las funciones que realizan el trabajo verdaderamente, aplicar. Para ver cuáles son los métodos asociados a plot basta con ejecutar en R methods(plot) La salida es autoexplicativa. Podemos hacer un pequeño experimento creando una función genérica, foo, bastante tonta: foo <- function( x ) UseMethod( "foo", x ) foo.data.frame <- function( x ) plot( x ) foo.integer <- function( x ) sum( x ) foo.default <- function( x ) print( "Bu!" ) foo( iris ) foo( 1:7 ) foo( "hola" ) También es posible crear nuevos métodos para funciones genéricas existentes. Por ejemplo, ...

4 de agosto de 2011 · Carlos J. Gil Bellosta

Los siete pecados capitales de la minería de datos

Por ser viernes, traigo a estas páginas un vídeo tan pedagógico como ameno. Es la conferencia de Dick De Veaux dentro la M2010 Data Mining Conference auspiciada por SAS. El autor repasa los siete pecados capitales de la minería de datos, a saber No realizar las preguntas adecuadas No entender el problema correctamente No prestar suficiente atención a la preparación de los datos Ignorar lo que no está ahí Enamorarse de los modelos Trabajar en solitario Usar datos malos Frente a ellas, propone las siguientes virtudes: ...

29 de julio de 2011 · Carlos J. Gil Bellosta

El paquete pxR, en CRAN

El 1 de junio escribí en la lista de ayuda de R en español para ver si alguien se animaba a colaborar en la creación de un paquete de R para importar datos en formato PC-Axis. Este formato es usado por gran número de institutos estadísticos, entre ellos el INE español, para difundir y publicar datos en formato electrónico. Existe una herramienta gratuita pero cerrada para analizar este tipo de datos, pero clamaba al cielo que los usuarios de R no contásemos con una manera de importarlos directamente. Además, lo necesitaba para un pequeño proyecto (del que hablaré próximamente). ...

28 de julio de 2011 · Carlos J. Gil Bellosta

Diagramas de puntos (dotplots)

Aunque los diagramas de puntos fueron introducidos por Cleveland en los años ochenta, a pesar de sus ventajas, no gozan de la popularidad de otros métodos de representación gráfica. Leí hace poco un artículo de Naomi Robbins en el que se proponían los gráficos de puntos como alternativa a los de barras. Encuentra en aquellos tres ventajas: Una representación más limpia y con menos tinta inútil. Permite resolver el problema de la representación de varias observaciones por sujeto más elegantemente que yuxtaponiendo barras, como ilustra el gráfico que aparece debajo. Y una tercera que encuentro más dudosa: que resuelven el problema de los diagramas de barras truncados: el no representar el trazo que une el origen con los valores representados —dice la autora—, el efecto perceptualmente distorsionador de truncar la gráfica no es tan acusado. Aunque yo mantengo mis reservas al respecto. ...

27 de julio de 2011 · Carlos J. Gil Bellosta

¿Qué es un banco? ¿Qué son las pruebas de resistencia? (En primera derivada)

En primera derivada, un banco es un señor que pone 10, capta 90 en depósitos de ahorradores —a los que da un interés del 4 %— y presta 100 al 5 %. El código en R que aparece a continuación indica cuál es el beneficio del señor: capital <- 10 depositos <- 90 int.dep <- 0.04 int.pres <- 0.05 prestamos <- capital + depositos ingresos <- prestamos * ( 1 + int.pres ) gastos <- depositos * ( 1 + int.dep ) beneficio <- ingresos - gastos rentabilidad.capital <- 100 * beneficio / capital Quien lo ejecute comprobará cómo el señor obtiene un jugoso beneficio. Además, el señor podría hacerlo aún más jugoso incrementando el valor de los depósitos, es decir, captando más ahorro con el mismo capital inicial. Queda como ejercicio para mis lectores repetir los cálculos anteriores con depositos <- 190, etc. ...

26 de julio de 2011 · Carlos J. Gil Bellosta

Competición de estadística con R en las III Jornadas de Usuarios de R

Como actividad complementaria a las III Jornadas de Usuarios de R, por gentileza de uno de sus patrocinadores, Nestoria y gracias al trabajo de Emilio Torres Manzanera, se ha anunciado hoy el I Concurso de Análisis de Datos con R. Con 1.500€ en premios y la posibilidad de pasar a colaborar con la plantilla de Nestoria para los autores de las mejores soluciones, el concurso aspira a sondear la habilidad de la comunidad de usuarios de R para analizar datos reales y extraer valor de la base de datos de viviendas y precios de viviendas de Nestoria. ...

18 de julio de 2011 · Carlos J. Gil Bellosta

Desarrollo de paquetes con R (III): check, check, check

Uno de los pasos más importantes en el desarrollo de un paquete es verificar que funciona correctamente. Un check comprueba la estructura del paquete, la consistencia entre el código y la documentación, que no faltan secciones importantes en esta última, que los ejemplos pueden ejecutarse sin problemas, etc. De ahí que sirva para muchos propósitos. En particular, si uno elige los ejemplos que acompañan a la documentación de las funciones con buen criterio, éstos servirán no solo para ilustrar el comportamiento de las funciones sino, también, para verificar el funcionamiento del paquete. Además, de usar R-forge, como el sistema realiza checks en varias plataformas distintas, el elegir bien los ejemplos permite realizar comprobaciones multiplataforma del código. ...

12 de julio de 2011 · Carlos J. Gil Bellosta

useR!, en Warwick, dentro de un mes

Dentro de un mes tendrá lugar la conferencia internacional de usuarios de R, useR!, en Warwick, R.U. A partir del documento que resume las ponencias, usando el paquete tm de R y Wordle para la parte artística, he creado la siguiente nube de palabras: Y ya que toco estos temas, menciono dos: ¿Os habéis puntado a las III Jornadas de Usuarios de R? ¿Qué lematizador utilizáis en español? ¿Cuál os gusta más?

6 de julio de 2011 · Carlos J. Gil Bellosta

Paquetes huérfanos de R

Ayer hablaba con Juan José Gibaja (al que finalmente conocí en persona) y me contaba cómo había usado un paquete de R —no recuerdo cuál— que misteriosamente había desaparecido de CRAN. —¡Imposible! Los paquetes no desaparecen: quedan huérfanos. Efectivamente, en la lista de paquetes de CRAN, abajo, se mencionan los llamados paquetes húerfanos. Según el README, se trata de paquetes cuyos autores o mantenedores han decidido desentenderse del paquete o los mensajes que les envían desde CRAN rebotan o no son contestados. Tales paquetes pasan al estado ORPHANED y se mantienen en CRAN mientras pasen los checks. Pero, conforme avanzan las versiones de R, puede que algunos de esos paquetes dejen de compilar y entonces son archivados. Existe una lista de paquetes huérfanos archivados cuya última versión puede encontrarse aquí. ...

1 de julio de 2011 · Carlos J. Gil Bellosta

Desarrollo de paquetes con R (II): primeros pasos

La segunda entrada en mi serie sobre la creación de paquetes con R cubre los primeros pasos en la creación de uno. Bastan para tener una primera versión de un paquete en minutos. Pero antes, unos consejos generales: Usar algún tipo de sistema operativo basado en Unix: Linux, Mac OS, etc. o Cygwin en el peor de los casos. Tengo que confesar que yo comencé a usar Linux precisamente por este motivo: los procedimientos y herramientas que se utilizan para construir paquetes de R están influenciados por la tradición Unix. Es cierto que se han creado herramientas para poder desarrollarlos desde Windows pero, después de haber trabajado en Linux, me parecen incómodas y antinaturales: pasar de Linux a Windows es como pasar del Ferrari al borriquillo. Registrar el proyecto en R-Forge, como ya hemos comentado previamente. Dadas sus ventajas —siendo una de las principales permitir probar el paquete sobre varias plataformas distintas (Linux, Mac y Windows) automáticamente—solo se me ocurre un motivo para no utilizarlo: como el código está públicamente disponible, no es válido para desarrollar aplicaciones cerradas y propietarias. Utilizar subversion (o git). Si el proyecto se aloja en R-Forge, subversion es la opción por defecto. Utilizar subversion permite gestionar mejor el desarrollo del paquete y facilita la colaboración entre los diversos autores. La manera en la que recomiendo comenzar a crear un paquete es partiendo de una serie de funciones ya desarrolladas previamente. Ni siquiera hace falta que estén terminadas ni que funcionen correctamente. Por ejemplo, podemos tener las dos funciones siguientes: ...

30 de junio de 2011 · Carlos J. Gil Bellosta