De cómo usar R en un tiempo razonable (no fácil, no)

Anuncio
Capı́tulo 1
De cómo usar R en un
tiempo razonable (no fácil,
no)
En este capı́tulo se incluyen algunos consejos prácticos para trabajar con R. Las
posibilidades son enormes, pero como casi todo, para dominarlo se requiere tiempo
y dedicación. Si llevas tiempo utilizándolo con unas pocas lı́neas de código haces lo
que con programas basados en menú te cuesta horas (y cuando lo vuelves a repetir
te vuelve a costar horas porque tu aprendizaje no te ahorra tiempo futuro lo que
en R no ası́).
Cuando usamos un programa informático hay dos problemas fundamentales que,
dependiendo de la persona, uno puede ser mucho mayor que el otro. Un problema
es el manejo del dichoso programa. ¿Cómo se ha diseñado el interfaz? ¿Dónde han
puesto tal o cual opción de la técnica? En fin, no vale la pena seguir. Se asume
que un buen menú es la clave de un buen programa (sobre todo, para un usuario
inexperto). En definitiva, se trata de eliminar cualquier tipo de aprendizaje (inicial
o posterior) para que sea de uso inmediato. Algunas personas (entre las que me
encuentro) piensan que eso no está tan claro y que lo que no pierdes (no me atreve
a hablar de ganar) al principio lo pierdes más tarde. Programas como R basados en
el uso de un lenguaje sencillo permiten un aprendizaje rápido y profundo. Aprendes
Estadı́stica al mismo tiempo que aprendes a manejar el programa. Y, desde un
punto de vista docente, es una razón importante para utilizarlo.
En este capı́tulo he ido incluyendo distintas cuestiones básicas para el uso del
programa. Desde el cómo conseguirlo o instalarlo hasta cómo trabajar con él. Mucho
de lo que sigue se basa en mi propia experiencia. De hecho, muchos estudiantes a los
que sugieres formas de trabajo, utilizan otros trucos que les resultan más útiles. Es
importante darse cuenta de que es un programa abierto y que, fácilmente, lo puedes
integrar con otras herramientas informáticas. La idea es: elige el editor que quieras
y a traajar.
1.1.
Instalación y cómo trabajar con R
El R consta de un ”sistema base”, y de paquetes adicionales que extienden su
funcionalidad. La dirección básica es http://cran.r-project.org. Allı́ se tienen
tanto las fuentes como versiones compiladas para Windows, Mac y Linux.
Existen numerosos manuales de R. La mayorı́a en inglés, pero también los hay
en castellano. Puedes encontrarlos en:
1
http://www.r-project.org/manuals.html
http://www.r-project.org/other-docs.html
Antes de empezar a trabajar con el R, debemos saber que es un lenguaje orientado a
objetos. Bajo este complejo término se esconde su simplicidad y flexibilidad. Además
es un lenguaje interpretado (como Java) y no compilado (como C, C++, Fortran,
Pascal, . . . ), lo cual significa que los comandos escritos en el teclado son ejecutados
directamente sin necesidad de construir ejecutables. Su sintáxis es muy simple e
intuitiva.
Veamos cómo instalarlo.
1.1.1.
R y Windows
Los puntos a seguir para una instalación son los siguientes:
1.
a) Traer la distribución base de cran.
b) El programa se instala simplemente ejecutándolo.
c) Una vez instalado en el menú principal tenemos una herramienta que
permite seleccionar el espejo desde el que traer los paquetes adicionales
cómodamente.
2. Una vez instalado el programa la opción más cómoda es utilizar el programa
Tinn-R: https://sourceforge.net/projects/tinn-r. Vamos escribiendo el
código en su editor y tiene muchas herramientas para interactuar con R. Es,
sin duda, la mejor opción para Windows.
3. Una segunda opción es utilizar RWinEdt. Para poder usarlo hay que tener
instalado Winedit: http://www.winedt.com. Es un programa shareware muy
útil para escribir en LATEX. Una vez instalado WinEdt cargamos el paquete
RWinEdt ?.
1.1.2.
R y Linux
Instalación 1. Para Linux hay distintas versiones compiladas que puedes encontrar en cran.
2. No es complicado compilar R a partir de las fuentes. Hay que tener la
precaución de tener gfortran.
3. Cuando instalamos R en Linux hemos de instalar previamente la librerı́a
BLAS.
En Linux sin duda la mejor opción de trabajo es
Edición con Emacs y ESS
utilizar Emacs (http://www.gnu.org/software/emacs/) con el paquete
Emacs Speaks Statistics (ESS) 1 .
¿Cómo trabajamos con Emacs y ESS?
1.
2.
3.
4.
Abrimos el fichero R con Emacs.
Abrimos una nueva ventana (mejor separada) con CTRL x 52.
En la nueva ventana marcamos el icono de R.
Utilizamos la ventana donde está el código para editar y podemos usar los distintos controles que nos dá el menú ESS de emacs podemos
trabajar muy cómodamente.
1 La mejor opción es acudir a la página de los paquetes binarios y buscar en la distribución
correspondiente donde teneis el paquete
2
1.2.
Empezamos a trabajar con R
Al inicializar el programa, aparece una ventana titulada R Console que indica
la versión de R y cómo obtener información de la licencia de uso. Esta ventana
contiene una barra con los siguientes menús:
ARCHIVO: Operaciones básicas con los ficheros. Dentro de este menú nos
pueden interesar las opciones:
ˆ Cambiar dir. Para cambiar el directorio de trabajo.
ˆ Salir. Para salir del programa
Editar. Tı́pico menú con opciones de edición (copiar,pegar,...)
Misc. Opciones avanzadas, entre las que podemos utilizar:
ˆ Parar computación actual. Para detener los procesos activos.
ˆ Listar objetos
ˆ Remover todos los objetos. Para borrar todos los objetos en memoria.
Paquetes. Nos permitirá gestionar los paquetes adicionales de R.
Ayuda
La consola permite una interacción con el intérprete de lenguaje R. A grandes
rasgos, como ya hemos comentado, se trata de un lenguaje de alto nivel, al estilo
de Octave/Matlab, pero orientado a la computación estadı́stica. En realidad es un
lenguaje con la semántica del Lisp/Scheme (con clausuras), lo que lo hace mucho
más elegante que Octave y Splus.
1.3.
Primeras nociones de R
Técnicamente hablando, R es un lenguaje de expresiones con una sintaxis muy
simple. Consecuente con sus orı́genes en UNIX, distingue entre mayúsculas y minúsculas, de tal modo que A y a son sı́mbolos distintos y se referirán, por tanto, a objetos
distintos. Las órdenes elementales consisten en expresiones o en asignaciones. Si una
orden consiste en una expresión, se evalúa, se imprime y su valor se pierde.
> 2+3
[1] 5
>
Una asignación, por el contrario, evalúa una expresión, no la imprime y guarda
su valor en una variable.
> a=2+3
>
Las órdenes se separan mediante punto y coma, (‘;’), o mediante un cambio de
lı́nea. Si al terminar la lı́nea, la orden no está sintácticamente completa, R mostrará
un signo de continuación, por ejemplo + en la lı́nea siguiente y las sucesivas y
continuará leyendo hasta que la orden esté sintácticamente completa.
Para borrar una variable, (y que no nos la guarde más en memoria) utilizamos la
función rm().
>rm(a)
3
La ayuda en lı́nea de R proporciona información muy útil sobre cómo utilizar las
funciones. La ayuda se encuentra disponible directamente para una función dada.
Por ejemplo:
> ?lm
mostrará dentro de R, ayuda para la función lm() (modelo lineal). El comando
help(lm) o help(”lm”) tiene el mismo efecto. Para ver la ayuda en formato html (por
ejemplo a través de Mozilla) escribe el comando:
> help.start()
Con esta ayuda en html es posible realizar búsquedas usando palabras clave.
1.4.
Introducir datos
Al trabajar con comandos, podemos definir distintas estructuras de datos: vectores, matrices, listas, data frame (hoja de datos), etc, ...
Definir vectores. Para crear un vector, x, consistente en cinco números, por
ejemplo 10.4, 5.6, 3.1, 6.4 y 21.7, utilizaremos el comando:
> x = c(10.4, 5.6, 3.1, 6.4, 21.7)
Los elementos de un vector también pueden ser caracteres, en este caso deberemos escribirlos entre comillas, por ejemplo:
> x = c("blanco", "negro, "rojo")
Generación automática de vectores.
ˆ Si queremos generar una secuencia regular de números enteros, por ejemplo de 1 hasta 10:
> x=c(1:10)
> x
[1] 1 2 3 4 5 6 7 8 9 10
>
El operador ”:”tiene prioridad sobre otros operadores aritméticos:
> 1:10-1
[1] 0 1 2 3 4 5 6 7 8 9
> 1:(10-1)
[1] 1 2 3 4 5 6 7 8 9
ˆ La función seq genera también secuencias de números reales:
> seq(1,5, 0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
el primer argumento indica el principio de la secuencia, el segundo el final
y el tercero el incremento que se debe usar para generar la secuencia.
ˆ Otro comando útil serı́a rep.
4
> x=rep(2,10)
> x
[1] 2 2 2 2 2 2 2 2 2 2
> x=rep(c(2,3),5)
> x
[1] 2 3 2 3 2 3 2 3 2 3
> x=rep(c(3,2),c(4,5))
> x
[1] 3 3 3 3 2 2 2 2 2
>
Matrices. Una matriz se puede crear con la función matrix: matrix(data =
NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) La opción
byrow indica si los valores en data deben llenar las columnas sucesivamente
(por defecto) o las filas (if TRUE). La opción dimnames permite asignar
nombres a las filas y columnas. Veamos algunos ejemplos:
> matrix(data=5, nr=2, nc=2)
[,1] [,2]
[1,] 5 5
[2,] 5 5
> matrix(1:6, 2, 3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> x=matrix(1:6, 2, 3, byrow=TRUE)
>
> x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
Para acceder a uno de los elementos de la matriz se utilizan corchetes
>x[1,3]
[1] 3
Otra estructura especialmente importante es la clase data.frame
La clase data.frame Una hoja de datos (data frame en inglés), es una lista
de datos, de forma que cada variable ocupa una fila de la lista, y donde todas
las componentes son de la misma longitud.
Por ejemplo:
>f1=data.frame(nombre=c("Jose", "Eva", "Nacho"),
edad=c(25,32,18),altura=c(1.83,1.78,2.01),estudios=c("II", "ITG",
"II"))
> f1
nombre edad altura estudios
1
Jose
25
1.83
II
2
Eva
32
1.78
ITG
3 Nacho
18
2.01
II
>
5
Para trabajar con data.frame’s podemos utilizar las siguientes funciones:
ˆ dim(): Nos da el número de filas (observaciones) y de columnas(variables)
del data.frame.
ˆ length(): Nos da el número de columnas (variables).
ˆ El sı́mbolo $ nos permite seleccionar una columna del data.frame.
f1$altura
Por último tenemos la estructura de listas. Una lista (para el R) es una
lista ordenada (como un vector) de objetos que pueden ser, o no, de tipos
diferentes. Se le puede dar un nombre a cada componente de la lista. Para
extraer sublistas de la lista utilizaremos el comando [ ], pero si queremos
acceder al objeto que hay en una componente determinada necesitamos el
operador [[ ]] o el operador $. Veeamos un ejemplo:
> l1 = list( c("Pedro","Juan"), c(33, 22, 10), c(T, T, F) )
> l1[1]
[[1]]
[1] "Pedro" "Juan"
> l2 = list( nombre=c("Pedro", "Juan"), edad=c(33, 22, 10), professor=c(T, T, F) )
> l2$nombre
[1] "Pedro" "Juan"
1.5.
Interfaz gráfica: RCommander
El R dispone de una interfaz gráfica, que podemos instalar desde el menú Paquetes, cargando el paquete Rcmdr (Necesitará instalar y cargar otra serie de paquetes,
pero lo hará automáticamente). Una vez cargado, aparecerá una interfaz gráfica
(basada en Tcl/Tk) que permite acceder a muchas de las órdenes de gestión y
análisis de datos del lenguaje R.
En esta interfaz, además de la barra de menús, tenemos una ventana de comandos, y otra ventana de resultados. Una vez realizado un análisis, el código que ha
utilizado para realizar el análisis aparece en la ventana superior, y los resultados
obtenidos se muestran en la ventana inferior.
Para todo aquel que empiece a trabajar con R, desde mi punto de vista, el
RCommander es un buen punto de inicio, ya que nos permite hacer análisis básicos
de forma inmediata, a la vez que nos muestra el código para que nos vayamos
familiarizando con la sintaxis del R.
1.6.
Elaboración de un informe a partir del código
R
Una vez hemos analizado un banco de datos hemos de elaborar un informe.
Normalmente nos va a llevar más tiempo esta segunda parte que la primera.
1.6.1.
Sweave
Es conveniente consultar:
http://www.statistik.lmu.de/~leisch/Sweave/.
Puedes encontrar un documento de gran utilidad sobre cómo comenzar a utilizar
Sweave en:
http://cran.r-project.org/doc/contrib/Rivera-Tutorial_Sweave.pdf.
6
1.7.
R y Octave/Matlab
Es frecuente que un usuario de Octave/Matlab utilice R. En
http://cran.r-project.org/doc/contrib/R-and-octave.txt y
http://mathesaurus.sourceforge.net/octave-r.html tenéis tablas de equivalencia entre los comandos en ambos programas.
También se puede encontrar en http://mathesaurus.sourceforge.net/matlab-python-xref.pdf
una tabla de equivalencias entre Matlab/Octave, Python y R.
Si estáis acostumbrados a trabajar en Matlab, echarle un vistazo al Rstudio
http://www.rstudio.org/ que permite trabajar con R en un entorno muy similar
al de Matlab.
7
Descargar