Lenguaje R en Linux

El lenguaje R es un sistema para análisis estadístico y gráficos creado por Ross Ihaka y Robert Gentleman. Corresponde a un dialecto del lenguaje S creado por los Laboratorios Bell AT & T y constituye un proyecto de software libre que podemos encontrar a nuestra disposición en un sistema Debian. Hace algún tiempo había oido hablar de que era una poderosa herramienta estadística pero sólo cuando leí la información de este link:

http://recursos.cepindalo.es/file.php/29/software/matematicas.html

me percaté de sus bondades y potencialidades (y no sólo de R sino de otros proyectos de software libre). En el link señala como acceder al sofware en un sistema Ubuntu pero, en Debian, no existen esos archivos. Sin embargo, lanzando synaptic, lo ubiqué con r-cran (por lo del proyecto) e instalando uno de sus paquetes específicos (en este caso fue r-cran-tseries), descargó también el r-base-core como “dependencia”; además de otros paquetes adicionales.

El lenguaje R es un lenguaje interpretado que se maneja a través de comandos de cónsola y para tener acceso al interprete sólo hay que pulsar:

R [Enter]

Para salir del interprete (para que no estén un tiempo tratando de averiguarlo):

q() [Enter]

Sé que a algunos no les gustará lo de que se maneja en ambiente de cónsola y que tampoco se verán muy interesados sino les han exigido alguna tarea específica en estadística pero, como es un lenguaje interpretado, es más funcional como calculadora que, por ejemplo, la gcalctool de Gnome. Por allí pueden explorarlo como herramienta; sobre todo con la información de este excelente manual:

R for Beginners

Como muestra de su uso en estadística voy a reportar un ejemplo tomado de mi propia experiencia. En este link:

Autocorrelación y correlación cruzada en series de tiempo con C++ en Linux

referí la imposibilidad de leer un arreglo de 9131 valores en MatLab. Uno de los tres archivos considerados era rad.in. En el interprete de R, para saber cual es directorio de trabajo:

getwd() [Enter]

Dependiendo de la respuesta allí copié el archivo y para cargarlo en memoria (por ejemplo):

rad <- read.table(“rad.in”) [Enter]

Para desplegar los valores en la cónsola:

rad [Enter]

Como el buffer de la cónsola es muy limitado para visualizar los 9131 valores, sólo se verán los últimos. Para saber si en este software se cargan los valores del arreglo adecuadamente en memoria (en MatLab el programa se “colgaba”), calcularemos la media y la desviación estándar y los compararemos con los valores que arroja, por ejemplo, una hoja de cálculo. Para la media:

mean(rad) [Enter]

Para la desviación estándar:

sd(rad) [Enter]

Los valores de -3.614062e-08 y 0.9976423 son idénticos a los de la hoja de cálculo por lo que se deduce que el arreglo se está cargando en memoria sin problemas. Por otra parte, si ahora quiero calcular los coeficientes de autocorrelación y correlación cruzada, tal como se señala aquí:

Autocorrelación y correlación cruzada en series de tiempo con C++ en Linux

copio los archivos restantes (tmax.in y tmin.in) al directorio de trabajo y ejecuto:

tmax <- read.table("tmax.in")
tmin <- read.table("tmin.in")
acf(rad,lag.max=1, plot=FALSE)
acf(tmax,lag.max=1, plot=FALSE)
acf(tmin,lag.max=1, plot=FALSE) 

Autocorrelations of series ‘rad’, by lag

0 1
1.000 0.226

Autocorrelations of series ‘tmax’, by lag

0 1
1.000 0.639

Autocorrelations of series ‘tmin’, by lag

0 1
1.000 0.655

ccf(rad,tmax,lag.max=1, plot=FALSE)
ccf(rad,tmin,lag.max=1, plot=FALSE)
ccf(tmax,tmin,lag.max=1, plot=FALSE) 

Autocorrelations of series ‘X’, by lag

-1 0 1
0.057 1.000 0.101

Autocorrelations of series ‘X’, by lag

-1 0 1
-0.069 1.000 -0.081

Autocorrelations of series ‘X’, by lag

-1 0 1
0.501 1.000 0.600

lo cual debería producir todos los valores de las dos matrices de covarianza. Sin embargo, esta versión parece tener bugs. No produce los coeficientes de correlación cruzada para lag 0. La versión R de Windows si los genera.

Otro ejemplo sencillo del uso de R es tratar de determinar la ecuación de regresión lineal para estos pares ordenados (a propósito, escogí los que se ajustan una recta de pendiente 2 e intercepto 3):

x         y
1         5
2         7
3         9

Para copiar los valores de una variable se usa la función c(). Entonces, para x:

x <- c(1,2,3) [Enter]

Para y:

y <- c(5,7,9) [Enter]

y el resultado se visualiza con:

lm(y ~ x) [Enter]

Las rutinas que realizan esas operaciones fueron escritas en C y Fortran y admiten opciones que pueden ser exploradas con el help del sistema; yo sólo estoy usando los defaults a modo de ejemplo. Para acceder a la ayuda de lm (linear model) basta con:

?lm [Enter]

Si se instala el paquete r-base-html se podrá acceder a una documentación más extensa con sólo invocar help.start().

Por otra parte, los usuarios de Windows también pueden acceder al lenguaje R y el comportamiento del interprete, según leí en la bibliografía al respecto, se realiza de una manera similar al de los sistemas tipo UNIX. Por tanto, prácticamente no se notarán diferencias de uso entre uno y otro sistema operativo; aunque el ambiente gráfico de Windows es más “amigable” al usuario y el buffer de la cónsola admite la visualización de alrededor de unos 7500 valores de un arreglo extenso (frente a sólo unos 500 en las cónsolas de Linux). Para acceder a R en Windows, incluso en Vista, se puede bajar la última versión de aquí:

http://cran.r-project.org/bin/windows/base/

e incluye, además, la suma de verificación MD5SUM.

Esta entrada fue publicada en Lenguaje R, Linux. Guarda el enlace permanente.

2 respuestas a Lenguaje R en Linux

  1. Pingback: Instalar R (lenguaje estadístico) en SuSE 10.2 |

  2. Pingback: Algebra de matrices con lenguaje R |

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s