R: diferència entre les revisions

De wikiTraba
Salta a la navegació Salta a la cerca
Línia 73: Línia 73:
Al igual que el sistema base, cualquier paquete de R puede instalarse desde Synaptic buscando la palabra CRAN.
Al igual que el sistema base, cualquier paquete de R puede instalarse desde Synaptic buscando la palabra CRAN.


Dado que el mismo R tiene funciones de manejo de paquetes para instalar directamente desde CRAN, un sistema alternativo al anterior es
Los paquetes se guardaran automaticamente en la ubicación:
:
  > install.packages('nombrepaquete')
 
Usando los métodos mencionados, los paquetes se guardaran automaticamente en la ubicación:
  /usr/lib/R/library/''nombrepaquete''
  /usr/lib/R/library/''nombrepaquete''



Revisió del 12:12, 31 maig 2005

R
Area: Estadística
Web del proyecto: r-project

Introducción

R es un software de análisis estadístico de código abierto basado en el lenguaje S, desarrollado a principio de los años 90. El programa S-Plus utiliza el mismo lenguaje S, pero se trata de un software propietario.

Instalación y ejecución

Sistemas M$

Los binarios para la instalación en sistemas M$ se pueden descargar desde aquí. Para entrar al programa hay que ejecutar el acceso directo a Rgui.exe situado en el menú inicio.

Sistemas GNU/Linux

En Ubuntu la instalación se realiza mediante la aplicación Synaptic, buscando la librería r-base y aceptando la instalación de todas las librerías propuestas por el programa para resolver las dependencias. El programa se ejecuta desde una ventana Terminal tecleando simplemente

>R

Nota: ">" es el simbolo del sistema. asi que no hay que teclearlo

Una interfaz gráfica (similar al Rgui disponible para sistemas M$) es r-gnome, se instala desde Synaptic; para lanzar R con la interfaz grafica r-gnome debemos escribir en una ventana Terminal:

>R --gui=GNOME

Lenguaje encarado a objetos

Los lenguajes estadísticos clásicos (SAS, Stata, SPSS) parten de unos datos a los que se aplican distintos procedimientos para obtener unos resultados.

R no actua de la misma forma. En R existen los denominados objetos, sobre los que se aplican funciones para transformarlos en otros objetos, sobre quienes, a su vez, pueden aplicarse nuevas funciones para obtener nuevos objetos y asi sucesivamente.

Una función es cualquier código de R al que se le pasan uno o más argumentos para transformar uno o más objetos.

Por lo tanto en R no existen propiamente datos y resultados, sino distintos tipos de objetos y una colección de operadores y funciones para modificarlos.

Tipos de objetos

y como definirlos

Convenciones básicas de la sintaxis

  • Las mayúsculas y minúsculas representan distintos caracteres.
  • Los espacios no representan nada y R los ignora.
  • Los missings se representan por las siglas NA.
  • El signo # provoca que la linea no se evalue, y por lo tanto permite realizar comentarios.
  • Los parentesis ( ) sirven para especificar los argumentos de las funciones.
  • Los diferentes argumentos de una función deben separarse con , .
  • Cuando un argumento de una función es una fórmula, se especifica con vardep~verindep1+varindep2... .
  • Los corchetes [ ] sirven para especificar una posición dentro de un objeto.
  • El signo $ se usa para referirse a una parte concreta y diferenciada de un objeto.
  • Para asignar objetos se utiliza la combinación <-

El sistema de librerías

Una librería o paquete es un conjunto de funciones sobre una temática común. El sistema R-base trae las librerías diseñadas por el núcleo central de desarrolladores (core). Sin embargo, el modelo descentralizado de producción de R conlleva que muchas funciones interesantes no se instalen con el paquete básico sino que estén contenidas en paquetes o librerías externas que hay que instalar por separado. Aunque son descarganles desde muchos sitios de internet, se recomienda su descarga desde el repositorio Comprehensive R Archive Network (CRAN) porque se garantiza que su funcionamiento ha sido revisado y aprobado por el núcleo de desarrolladores.

Existen en R cuatro tipos de librerías:

  1. las que se instalan con el sistema R-base y se cargan por defecto al inicio (no requieren pasos adicionales para ser utilizadas)
  2. las que se instalan con el sistema R-base y no se cargan por defecto al inicio (requieren ser cargadas para ser utilizadas)
  3. las que no se instalan con el sistema R-base y hay que bajar del CRAN (requieren instalación desde CRAN y carga)
  4. las que no se instalan con el sistema R-base y no están disponible en el CRAN. (Disponibles en ficheros .zip que se encuentran habitualmente en páginas personales de internet)

Nota: La nomenclatura utilizada es propia y no estándar.

Instalación de librerias adicionales en sistemas M$ (tipo 3)

Desde el programa (Rgui) existe un menú para instalar paquetes directamente desde el repositorio CRAN sin tenerlos que descargar previamente de forma manual. También se pueden instalar paquetes a partir de ficheros .zip a través del menú.

Instalación de librerias adicionales en sistemas GNU/Linux. (tipo 3)

Al igual que el sistema base, cualquier paquete de R puede instalarse desde Synaptic buscando la palabra CRAN.

Los paquetes se guardaran automaticamente en la ubicación:

/usr/lib/R/library/nombrepaquete

También se pueden instalar paquetes manualmente descomprimiendo los ficheros .zip en dicha ubicación (tipo 4).

Cargado de librerías

Cuando se inicia R, sólo las funciones contenidas en determinadas librerías del núcleo básico están disponibles para ser utilizadas (tipo 1) . Incluso algunas librerías del núcleo básico no están cargadas al iniciar para ahorrar recursos (tipo 2). Para cargar una librería (tipos 2 y 3), hay que utilizar la función library(). Por ejemplo para cargar la librería 'survival' (para el análisis de supervivencia), que se instala con el paquete básico pero no se carga al inicio, habría que escribir:

library(survival)

Algunas librerías útiles

Las siguientes librerías no se cargan directamente al iniciar R, y contienen funciones que pueden resultar interesantes:

  • foreign (tipo 2): Permite importar bases de datos en otros formatos (SAS, Stata, Excel, SPSS, etc.).
  • survival (tipo 2): Funciones de análisis de supervivencia.
  • car (tipo 3): Recodificación de variables.
  • xtable (tipo 3): Permite exportar tablas a formato Latex.
  • Rcmdr (tipo 2): Presenta una interfaz gráfica más amigable para la edición de datos y ejecución de comandos desde menús. Puede ser útil para nuevos usuarios para facilitar la curva de aprendizaje, pero disminuye la gran flexibilidad del software.

El paquete Traba (tipo 4)

En el Trabachat se han desarrollado un conjunto de funciones agrupadas en el paquete Traba. Disponible en el Trabachat en formato .zip.

Editores de sintaxis

El programa R (a diferencia de SPSS, SAS o Stata) no cuenta con una ventana para escribir la sintaxis.

Cualquier editor de textos, como el Notepad de M$, sirve para almacenar los comandos, pero es recomendable trabajar con otros editores específicos que permitan, entre otros

  • Colorear la sintaxis para una fácil detección de errores
  • Enviar las instrucciones directamente para ser evaluadas en R (evitando asi tener que copiar/pegar cada instrucción desde el editor)

WinEdt

WinEdt es un software propietario, disponible sólo para plataformas M$, que permite la edición de distintos tipos de lenguajes, entre ellos Stata y R. Para poder utilizar el editor debe disponerse de licencia, y descargarse la librería de R RWinEdt, disponible en el CRAN.

WinEdt permite colorear la sintaxis de R, marcando las funciones correctas, y coloreando los paréntesis para evitar errores de apertura y cierre. Así mismo permite mandar una región de la sintaxis para su evaluación en R.

GNU/Emacs y XEmacs

Emacs es un anciano y robusto software para la edición de distintos lenguajes, con la posibilidad de ejecutar distintos programas en sus buffers lo cual permite evaluar directamente las expresiones dentro del propio programa. Por lo tanto Emacs es mucho más que un editor y coloreador de sintaxis, sino que en algunos casos es poco menos que un estilo de vida.

Para la edición de lenguajes estadísticos debe usarse un modo de Emacs llamado Emacs Speaks Statistics (ESS).

El desarrollo de Emacs se ha dividido en dos ramas: XEmacs y GNU Emacs.

Para sistemas M$ es aconsejable la instalación de XEmacs, cuyo instalador binario puede descargarse directamente desde la página web del proyecto, pues permite incorporar directamente cualquier modo, entre ellos Emacs Speaks Statistics (ESS).

En sistemas GNU/Linux se aconseja la instalación de GNU Emacs por su mayor facilidad de integración con R en estos sistemas. En Ubuntu y a través de Synaptic se puede instalar fácilmente tanto GNU Emacs como el modo Emacs Speaks Statistics (ESS), sin necesidad de mayores configuraciones.

Introducción de datos

En ocasiones es útil prepararse unos datos sencillos para provar distintas funciones antes de aplicarlas sobre nuestra base de datos. El siguiente código es un ejemplo de como realizar esta tarea:

c(1,2,3,4,5) 

La instrucción anterior genera un vector (se puede entender como una variable numérica en el lenguaje clásico) que contiene 5 números (1 a 5) mediante la instrucción c, pero lo único que hará es imprimir en pantalla esta secuencia. Para guardar el vector como un objeto debemos escribir:

prueba<-c(1,2,3,4,5)

Ahora tenemos un objeto llamado prueba que contiene el vector de 5 números.

Una forma alternativa de obtener el mismo vector prueba es mediante una secuencia (sequence) de valores:

prueba<-seq(1:5)

Si por ejemplo ejecutamos:

prueba2<-prueba*2

obtendremos un objeto llamado prueba2 que corresponderá a un vector con los valores: 2, 4, 6, 8, 10.

La expresión:

prueba3<-prueba*prueba2

generará el vector prueba3 con los valores 2, 8, 18, 32, 50.

Para extraer un valor concreto de un vector, por ejemplo el que esté en tercera posición:

prueba3[3]

devolverá por pantalla el valor 18. Lógicamente este valor se podría haber asignado a un objeto.

Si en lugar de un vector queremos generar una matriz, es decir un vector multidimensional, debemos usar las siguientes funciones:

  • column bind
prueba4<-cbind(rep(72,5),c(2,7,9,3,5))

generará la siguiente matriz por la unión de las dos columnas (cbind) especificadas: rep(72,5) (repite 5 veces el valor 72) y c(2,7,9,3,5)

72 2
72 7
72 9
72 3
72 5

Si queremos unir filas en lugar de columnas:

  • row bind
prueba5<-rbind(seq(1:5),c(2,7,9,3,5))
1 2 3 4 5
2 7 9 3 5

Para recuperar un valor concreto de la matriz anterior, debe especificarse, como es habitual, dicha posición entre corchetes. En primer lugar se marca la posición de la fila y en segunda lugar la posición de la columna.

prueba6<-prueba5[2,3]

Con la función anterior, asignamos el valor 9 al objeto prueba6.

La función:

prueba7<-prueba5[2,3:5]

asignará al objeto prueba7 un vector con los valores 9, 3, 5, correspondientes a las columnas 3, 4 y 5 de la segunda fila.

Captura de datos

Transformación de datos

Exploración de datos

Pruebas estadísticas clásicas

Ji-cuadrado

t de Student

Regresión

Gráficos

Programación de funciones

El ejemplo de la función 'intervals'

Construcción de paquetes

Documentación de paquetes

Sistema de ayuda