domingo, 27 de septiembre de 2009

Cádiz y R-Commander


Entre los días 23 y 25 de septiembre se ha celebrado en Cádiz la XII Conferencia Española de Biometría a la que hemos asistido un buen grupo de investigadores e investigadoras, tanto españoles como portugueses, incluso alguno/a venido/a de iberoamérica. Entre las comunicaciones se ha notado una gran presencia de cálculos y gráficos realizados con R o alguno de sus paquetes. Pero lo que yo quiero destacar aquí es la realización de un curso de R con R-Commander paralelo a las sesiones que ofrecieron los organizadores de forma gratuita a todos los asistentes. Además nos regalaron un manual de Estadística Básica con R y R-Commander en español.
La Universidad de Cádiz ha hecho una apuesta decidida por el software libre que es realmente envidiable. Y como no, la utilización de R en todos los ámbitos de la estadística. A destacar la puesta en marcha, en el curso 2006/2007, del proyecto R-UCA.
R-Commander o su paquete Rcmdr es es una interfaz gráfica para R desarrollada por John Fox. La página web de R-Commander es http://socserv.socsci.mcmaster.ca/jfox/Misc/Rcmdr/. Su objetivo es cubrir toda la estadística de un curso elemental. Lo consigue de sobras.


Por cierto, os recomiendo el restaurante "Los naranjos" en Zahara de la Sierra. Fantástico.

domingo, 13 de septiembre de 2009

RKWard 0.5.1

Disponible desde el 4 de agosto. RKWard es una interfaz transparente easy to use para el lenguaje R en un escritorio KDE para linux o windows. Aunque todavía está en desarrollo, RKWard es un potente entorno de trabajo para el lenguaje R que facilita la utilización de las instrucciones, las funciones estadísticas, la creación de gráficos y su integración en ofimática. La intención es que RKWard sea un substituto libre para algunos paquetes comerciales de estadística. Además de la facilidad de uso, hay tres aspectos que son especialmente importantes:
  1. Es una interfaz transparente para el lenguaje R. Es decir, no esconde la sintaxis del lenguaje, sino que la proporciona de una forma más conveniente. Expertos y novatos pueden realizar la mayoría de los trabajos habituales. Una interfaz únicamente gráfica no podría servir a todo el poder del lenguaje R. En algunos casos, los usuarios querrán ajustar algunas funciones a sus necesidades particulares, por ejemplo para automatizar algunos trabajos. RKWard muestra la sintaxis, es visible para el usuario, y lo hace posible.
  2. Para la salida, RKWard se esfuerza en separar el contenido y el diseño. No trata de diseñar sus propias tablas o gráficos, que han de convertirse "a mano" al estilo utilizado en una determinada publicación. Actualmente RKWard utiliza HTML para su producción. Sin embargo, utilizando las definiciones de estilo, es posible modificar el formato de salida para que coincida con la demanda de una publicación. En futuras versiones RKWard incluso buscará una mayor integración con alguna de las suites de ofimática existentes.
  3. Se basa en un lenguaje, que no sólo es muy potente, sino que también es extensible y para el que ya existen cientos de extensiones.
Las novedades de la última versión son diversas y van desde la mejora de algunas funcionalidades, a la corrección de errores, pasando por el ajuste de algunos iconos. Ya está disponible una compilación para Debian Sid i386 y para otras distribuciones podéis ir a la página de Binaries and Build Scripts.

domingo, 6 de septiembre de 2009

Estimación de una función de densidad bivariante

Del mismo modo que la función density se usa para calcular un conjunto de estimadores de densidad kernel, podemos estimar una densidad bivariante con la función bkde2D del paquete KernSmooth (Wand and Ripley, 2005).

El gráfico de este artículo se ha obtenido con los datos de energía y temperatura de unas estrellas (en logaritmos) del paquete HSAUR y el siguiente código:

> install.packages(c("HSAUR","KernSmooth"))
> library(HSAUR)
> library(KernSmooth)
> data(CYGOB1, package="HSAUR")
> CYGOB1d <- bkde2D(CYGOB1, bandwidth = sapply(CYGOB1, dpik))
> persp(x = CYGOB1d$x1, y = CYGOB1d$x2, z = CYGOB1d$fhat,
+ xlab = "log surface temperature",
+ ylab = "log light intensity",
+ zlab = "estimated density",
+ theta = -35, axes = TRUE, box = TRUE)


También podemos hacer un gráfico de contornos con la función contour
> contour(x = CYGOB1d$x1, y = CYGOB1d$x2, z = CYGOB1d$fhat,
+ xlab = "log surface temperature",
+ ylab = "log light intensity")


Font: B.S. Everitt & T. Hothorn, A Handbook of Statistical Analysis Using R, Chapman & Hall/CRC, 2006.

sábado, 5 de septiembre de 2009

SPSS + R = PASW Statistics Developer

Según SPSS Inc., su nuevo producto PASW Statistics Developer permite que los programadores de R y Python integren procedimientos en la sintaxis de PASW® Statistics para que los usuarios puedan acceder a ellos, dicen que de forma más "amigable". Tres son los retos que pretenden resolver con su producto: la implementación de funciones y paquetes de R, su integración en un entorno de menús y procedimientos tipo SPSS y el manejo de bases de datos de gran tamaño. Eso sí, afirman que no es una implementación comercial del lenguaje R, sino un programa, de "precio modesto", para integrar funciones de R y paquetes en un formato que permite su ejecución "fácil y eficaz". Yo creo, confieso que sin haberlo probado, que se trata de aprovechar los nuevos procedimientos desarrollados en R y utilizarlos en el nuevo producto. Los directivos de SPSS Inc. reconocen implícita y explícitamente que en el campo de la investigación en estadística, pero también en su aplicación a las ciencias básicas y experimentales, R es el lenguaje de mayor éxito. Si no puedes vencer a tu competidor, ...

martes, 1 de septiembre de 2009

SystemRescueCD

Crea una copia de seguridad de una partición del disco duro.
No os ha pasado, que en ciertas situaciones como actualizaciones o fallos técnicos, habéis pensado: ¿Porqué no tengo una copia de seguridad?
En el caso de los archivos asociados al sistema operativo, la cosa es especialmente delicada. No es suficiente con tener alguna copia de los archivos en sí. Debemos tener una copia de todo el sistema, es decir, de la partición donde se encuentra el sistema. Normalmente, en sistemas como Linux se dispone de una partición específica "/" para los archivos del sistema y otra para los documentos "/home". En Windows también es conveniente esta separación pero no todo el mundo la hace.

SystemRescueCD es un LiveCD de Linux (también en lápiz USB) con algunos programas imprescindibles para administrar y reparar particiones del disco duro como Gparted o Partimage. No requiere ninguna instalación, simplemente arrancar el ordenador desde el CD-ROM y puede utilizarse para administrar tanto servidores, como PC's domésticos (con Linux, Windows, etc). El kernel soporta la mayoría de sistemas de archivos como ext2/ext3/ext4, reiserfs, reiser4, btrfs, xfs, jfs, vfat, ntfs (windows xp), iso9660 e incluso sistemas de red (samba y nfs).

En el blog de forat.info tenéis un tutorial con imágenes muy bueno para hacer una copia de seguridad de, por ejemplo, la partición del sistema "/" (o /dev/sda1 en el ejemplo):

Como crear y restaurar copias de seguridad con SystemRescueCD y partimage

El único detalle que puedo mejorar de ese tutorial es que creo que es necesario montar la partición donde grabaremos el archivo antes de lanzar el programa Partimage:

mount /dev/sda5 /mnt/backup

y luego escribir todo el path del archivo donde creamos o rescatamos la copia

* Image file to create/use
/mnt/backup/luiscarimage


Aquí tenéis la web oficial de donde podéis descargaros la ISO del CD. Grabarla y hacer una copia de seguridad. La tranquilidad posterior es infinita.

lunes, 31 de agosto de 2009

Emacs-snapshot

He estado a punto de titular este artículo Pretty emacs, como el artículo de Alexandre Vassalotti. Creo que es muy acertado, pero he preferido no copiarlo.

Emacs-snapshot es un conjunto de paquetes de la versión CVS de GNU Emacs, el conocido editor (y otras cosas), especialmente concebidos para la distribución de linux Debian y, por extensión, para Ubuntu. Han preparado dos versiones. Una para el sistema gráfico GTK y la otra para la consola. Yo utilizo la primera.
A poco que se navegue un poco por la red, todo el mundo coincide que Emacs es un potentísimo editor (dicen que incluso una forma de vida), pero también hay coincidencia en la dificultad de su aprendizaje. Así, muy pocos serán los que se atreban a probarlo. En Kubuntu hay una alternativa que es RKWard, mucho más sencillo i intuitivo, pero también ligeramente inestable. De modo que yo me animé a probar Emacs-snapshot.

Para trabajar con R, la instalación de Emacs-snapshot es muy sencilla:

sudo apt-get install emacs-snapshot ess

El segundo paquete es Emacs speaks statistics, imprescindible para que Emacs y R se entiendan (se supone que R está instalado).
Con esta instrucción se instalaran las versiones de los repositorios oficiales de Ubuntu. Si alguien desea lo último de lo último, hay que instalar los repositorios PPA for Ubuntu Emacs Lisp.
Una vez instalados, cuando abrimos un archivo con extensión .R, Emacs-snapshot lo reconoce como tal y la primera vez que utilicemos los botones de ejecución, abrirá una ventana para solicitar la carpeta de trabajo. La fijamos y aparecerá un buffer (ventana en el lenguaje de Emacs) con R en la parte inferior (ver la figura de arriba). En esta situación ya podemos ir ejecutando las instrucciones del archivo y viendo los resultados en el buffer inferior. El sistema es sencillo y muy práctico. Y a partir de aquí, buscar un manual de Emacs o seguir su tutorial. El esfuerzo vale la pena.

Por cierto, ¿a qué viene lo de pretty emacs?

Pues, resulta que es muy fácil cambiar la fuente y poner la que más nos guste. La que viene por defecto suele ser horrorosa. Ver el post de Alexandre Vassalotti.

¿Y los que trabajamos con Windows? Pues a la izquierda tenéis un enlace a la, a mi parecer, más sencilla instalación para Windows.

sábado, 29 de agosto de 2009

Disposición de los gráficos (2)

Animado por los comentarios al anterior artículo sobre la disposición de los gráficos con ayuda de la función layout, vamos a seguir explicando otras características de esta función.

Ya indiqué que es posible dejar una casilla en blanco, basta poner un cero en la matriz, pero también es posible controlar las alturas o anchuras en centímetros. Para ello se utiliza la función lcm(). Veamos un ejemplo.

Con este código

> layout(matrix(c(1,0,2), ncol=1), heights=c(2, lcm(0.5), 1))

se consigue esta figura

en el que tenemos 0.5 cm entre los dos gráficos.

Otro aspecto a tener en cuenta es la relación de la altura con la anchura. Si queremos que ésta sea de 1:1, lo podemos indicar con el parámetro respect=T.

> layout(matrix(c(1,0,2), ncol=1), heights=c(2, lcm(0.5), 1), respect = T)

El resultado es

Si en la matriz se repite algún número, entonces el gráfico ocupará esas casillas (consecutivas).
Ejemplo:
> layout(rbind(c(1,2),
c(0,0),
c(3,3)),
heights=c(2,lcm(0.5),1),
respect=T)
Observemos que en esta figura la relación de aspecto se fija en 1 para la altura de la tercera fila (gráfico 3), de modo que el parámetro respect=T hace que la anchura de una celda de la tercera fila también sea 1 (de las dos que hay).

Finalmente podemos decir que el parámetro respect también admite como valor una matriz del mismo tamaño que la que indica la layout, pero con ceros y un uno. El uno marca la posición de la celda para la que hay que respetar la relación de aspecto.

Más ejemplos e información en el libro de Paul Murrell R Graphics Ed. Chapman & Hall/CRC.

Por cierto, los gráficos que muestran la layout actual se consiguen con la instrucción

> layout.show(n)

donde n es el número máximo de gráficos.