introducción a r (ii)

13
* *

Upload: deybi-morales-leon

Post on 25-Jul-2015

127 views

Category:

Documents


9 download

DESCRIPTION

Una introducción al maravillosos software R

TRANSCRIPT

Page 1: Introducción a R (II)

Introducción R (II)∗

Deybi Morales León (Universidad Centroamericana UCA)

18/07/12

Este documento es parte de una colección de tutoriales elabora-dos para Grupo de Usuarios R de Nicaragua. R es un software es-tadístico (libre) de licencia GNU. Puede descargarlo desde http://www.r-project.org. En la elaboración de este tutorial se ha hecho uso solode softwares libres: Ubuntu, LYX, Latex, LibreO�ce y R. Apoyamosel uso del software libre para los países en vías de desarrollo.

Contents

1 Primeros comandos 2

2 Ayuda en R 5

3 Objetos 6

4 ¾Cómo darle un directorio a R para guardar bases de datos

incluidos objetos? 7

5 Instalar paquetes 7

6 Importar bases de datos 8

6.1 Ingresar observación por observación . . . . . . . . . . . . . . . . 86.2 Importar bases de datos desde otros formatos digitales. . . . . . . 11

∗Revisiones 18/07/12, 20/07/12 & 22/07/2012

1

Page 2: Introducción a R (II)

Se debe destacar que R es un lenguaje y entorno de programación a comose expresan en wikipedia u otras fuentes que mencionan características de estesoftware. Es por ello que no se debe preocupar en una interface amigable, sino enconocer los comandos necesarios para dar órdenes a R basado en los resultadosestadísticos, matemáticos o grá�cos que se desean obtener.

Una vez vencida la curva inclinada de aprendizaje del lenguaje R, el usuarioverá que R es más fácil que los softwares comerciales. El lenguaje le permitirá unmayor control de su trabajo ¾y por que no decirlo?, dirá adios al secretismo sobrela forma de obtención de resultados a como sucede en los software comerciales.

1 Primeros comandos

Conocer comandos que nos permitan empezar con R, es algo fundamental. Re-visar la memoria, obtener lista de paquetes, instalar paquetes y abrir la ayudareducirá la frustración en el este primer trazo pedragoso en el camino de apren-der R.

Abrimos R en windows dando doble clic a su ícono que es una R que tiene laapariencia de haber sido coloreada por un niño. Debe tener algún tipo de sig-ni�cado. Ahora si se quiere abrir R en un sistema operativo linux, sencillamentedebemos abrir la terminal y ejecutar el comando R y luego enter. Si contamoscon la interface Rstudio en ambos casos (windows o linux) solo buscamos elícono que se asemeja a una bola de billar azul con una R blanca, muy llamativa.

Al abrir R, aparece la siguiente advertencia:

R version 2.15.0 (2012-03-30)

Copyright (C) 2012 The R Foundation for Statistical Computing

2

Page 3: Introducción a R (II)

ISBN 3-900051-07-0

Platform: i686-pc-linux-gnu (32-bit)

R es un software libre y viene sin GARANTIA ALGUNA.

Usted puede redistribuirlo bajo ciertas circunstancias.

Escriba 'license()' o 'licence()' para detalles de distribucion.

R es un proyecto colaborativo con muchos contribuyentes.

Escriba 'contributors()' para obtener más información y

'citation()' para saber cómo citar R o paquetes de R en

publicaciones.

Escriba 'demo()' para demostraciones, 'help()' para el sistema

on-line de ayuda, o 'help.start()' para abrir el sistema de

ayuda HTML con su navegador.

Escriba 'q()' para salir de R.

[Workspace loaded from ~/.RData]

>

Es lo único en cualquier interface que nos dice que R es un software estadís-tico. Parte de la advertencia es que R no posee garantía alguna, esto es unrequisito a cumplir para todo software que hace uso de la licencia GNU. Estafalta de garantía no tiene nada que ver con la calidad del software sino quees una advertencia para �nes comerciales. Es decir, si este software se utiliza,vende o modi�ca para �nes lucrativos los daños derivados serán completamenteresponsabilidad de quien realizó la acción y no de la organización que administrael software.

Las palabras que van antes de los dos paréntesis son comandos. Se puedenmirar comando para obtener la licencia en la que se basa R, comando paracitarlo en referencias y comando para mirar la lista de contribuyentes de R.

Haremos un ejercicio divertido, unos de los comandos talvez el mas utilizadocuando habres por primera vez R, es demo(). ¾Dónde escribir demo()?. Estese escribe adelante del símbolo de mayor �>�. Este simbolo siempre sobrá comoúltima línea y nos da la indicación de que R ha dejado de procesar la ordenanterior y está preparado de recibir una nueva orden.

A ejecutar

>demo()

Nos abrirá una segunda ventana que contendrá lo siguiente:

Demos in package 'base':

error.catching More examples on catching and handling

errors

3

Page 4: Introducción a R (II)

is.things Explore some properties of R objects and

is.FOO() functions. Not for newbies!

recursion Using recursion for adaptive integration

scoping An illustration of lexical scoping.

Demos in package 'graphics':

Hershey Tables of the characters in the Hershey

vector fonts

Japanese Tables of the Japanese characters in the

Hershey vector fonts

graphics A show of some of R's graphics

capabilities

image The image-like graphics builtins of R

persp Extended persp() examples

plotmath Examples of the use of mathematics

annotation

Demos in package 'stats':

glm.vr Some glm() examples from V&R with

several predictors

lm.glm Some linear and generalized linear

modelling examples from 'An Introduction

to Statistical Modelling' by Annette

Dobson

nlm Nonlinear least-squares using nlm()

smooth 'Visualize' steps in Tukey's smoothers

Use 'demo(package = .packages(all.available = TRUE))'

to list the demos in all *available* packages.

En la base de R nos encontraremos con los ejemplos anteriores contenidosen los paquetes enlistados. Por ejemplo, si queremos echar un vistazo a lacapacidad grá�ca, solo ejecutamos con enter:

>demo(graphics)

Nos abrirá otra ventana que contendrá los grá�cos puestos de ejemplos porparte del paquete graphics. Dándo enter cambiará de grá�co. El usuario puedeir probando con otros paquetes enlistados como por ejemplo, perp, tan solodeberá cambiar entre paréntesis el graphics por perp.

Ahora pues ¾Qué son paquetes? Son archivos comprimidos en zip o ta.gzque condensan un conjunto de rutinas condensadas en funciones comunmentedenominadas comandos. R al descargarse por primera vez e instalarse, trae

4

Page 5: Introducción a R (II)

consigo un conjunto de paquetes básicos. Los del ejemplo anterior son algunosde los que trae.

2 Ayuda en R

Es necesario invocar la ayuda en R, se necesita de mayor interacción con laayuda de R para evitar las frustraciones. A diferencia de otros software suservidor ha tenido la experiencia de encontrar todo lo que necesita por mediode la página de ayuda, libros y foros de internet. Además R cuenta con listasde correos donde millones de usuarios tienen tiempo de responder a todas lasdudas surgidas.

El primer paso es explorar la página o�cial de R la cual es http://www.r-project.org. Seamos como niños, exploremos todo lo que está a nuestro alcancey llegaremos lejos. Hagámosnos preguntas y no nos frustremos pues en R paratodo existes un camino di�cil o fácil.

En R también contamos con comandos especí�cos para invocar ayuda. Estoscomandos son:

• Reconocerán en todo software la palabra �help�, esto es ayuda en nuestroidioma. R posee un comando con este nombre, si ejecutamos:

>help()

Nos aparecerá una lineas sobre la utilización del comando ayuda, por lo quesi queremos obtener la ayuda de con comando especí�co solamente escrbimosentre parentesis el comando:

>help(solve)

Aparecerá la documentación de ayuda de �solve�. Esta se compone de lapresentación una sintasis general, la explicación de cada parte de la sintaxis yun ejemplo funcional. Esto funciona si el paquete que contiene el comando estáactivo. Soy de los que considera que la ayuda de stata no tiene la facilidad dela ayuda de R.

Si queremos la ayuda sobre un paquete especí�co aplicamos esto:

>help(package="Matrix")

Al aplicar el ejemplo anterior nos saldrá la ayuda disponible para el pa-quete especi�cado, presentándose además la lista de comandos que tal ejecuta.También obtenemos lo mismo con ?Matrix

• R hace uso de navegador web para poner a disposición un sistema base deayuda o�ine pero completo. La manera de ejecutador eso con:

>help.start()

5

Page 6: Introducción a R (II)

Este sistema es manejable para cualquier usuarios. Posee manuales y refer-encias además de un fuerte como la lista de paquetes instalados en R.

• Se puede hacer uso del anterior sistema de ayuda para buscar comandoso paquetes. Se debe ejecutar:

>??matrix

En el ejemplo con matrix nos llevar a una página con los resultados de labusquedad. Es importante recordar que R hace diferencia entre Mayúsculas yMinúsculas. En el ejemplo anterior se invocó el comando y no el paquete el cualempieza con mayúscula.

Todas las ordenes anteriores se pueden recuperar con las tecla direccionalarriba, se pueden volver a ejecutar o crear una nueva orden.

3 Objetos

Los que manipula R se llaman objetos. Estos objetos pueden nombrarse conla palabra que esté atrá del <- . Por tal razón a diferencias de Stata y algosimilar a Eviews, en R podemos nombrar nuestros resultados y salidas grá�cas.Lo podemos invocar unicamente ejecutando el nombre que se le ha dado. Porejemplo, si corremos una regresión, podemos llamarle �regresion1�. Si queremosrecuperarla en la sesión de trabajo actual, solo escribimos regresion1 y nosaparecerá.

Los objetos se acomodan en la memoria virtual que está utilizando R en esemomento. A diferencia de otros software, R no necesita previa reasignación dememoria virtual o física para cargar grandes bases de datos.

Obtener una lista de los objetos que tiene R disponible en la actual sesiónde trabajo:

>objects()

Como se notará, en la consola aparece la lista de objetos disponibles o creadospor el usuarios y los cuales pueden invocarse con sus respectivos nombres. Estospueden ser desde variables hasta bases de datos. Con el comando rm( ) y entreeste paréntesis los nombres incluidas las comillas podemos eliminar los objetosque no necesitemos. Dentro del paréntesis R no reconoce los espacios por esopara separar elementos dentros del paréntesis debe utilizarse las comas.

Otro comando útil para obtener la lista de objetos es ls( ). Todos los ob-jetos se han almacenado en un espacio virtual llamado en R workspace. Esteworkspace se puede guardar en un archivo con la extensión .RData. Al guardarpor medio de comandos este archivo se guarda en el directorio de trabajo pre-viamente establecido en R.

6

Page 7: Introducción a R (II)

4 ¾Cómo darle un directorio a R para guardar

bases de datos incluidos objetos?

Tener una carpeta especial es indispensable para trabajar con R, dentro de estacarpeta podemos crear subcarpetas que sean especí�camente para cada sesiónespecial de trabajo. Esto evita tener problemas a la hora de utilizar nombresya de�nidos en objetos. Para nombrar un directorio de trabajo ejecutamos lasiguiente línea:

> setwd("~/Escritorio/mi directorio de trabajo")

El ejemplo anterior se realiza en linux ubuntu, el comando setwd indica a Rque vamos indicar una nueva carpeta de trabajo. Lo que va entre paréntesis ycomillas es la dirección de la carpeta. Todo lo que guardemos en R directamentedesde comandos será guardado en esa carpeta. Ahora, en Windows los queíria en comillas quedaría así: �C:\Escritorio\mi directorio de trabajo�, vea ladiferencia en las plecas y se menciona el disco duro o la memoria física.

La mayoría de interfaces nos permite hacer lo anterior por medio de menuinteractivos. En Rstudio solamente nos vamos al recuadro derecho inferior es-peci�camente a la pestaña ��le�, elegimos la carpeta o vamos a hacer clic a lostres puntos (...), nos permitirá seleccionar la carpeta y damos aceptar, por úl-timo nos vamos al botón �More� que tiene como símbolo una tuerca azul, aldesplazarse el menú seleccionamos �Set As Working Directory�. Listo ya hemosespeci�cado el directorio.

5 Instalar paquetes

R a esta edición casi 4000 paquetes. Se habia dicho con anterioridad que lospaquetes agrupan rutinas que conforman un conjunto de funciones creada paraciertos �nes. R viene con paquetes básicos pero en internet pueden buscarse unconjunto de paquetes que personalicen nuestro R para nuestras diario trabajoen la profesión o la universidad. Existen paquetes agrupados en econometría,�nanzas, cálculos, etc.

Los paqutes están disponibles en internet las 24 horas del días desde elinterior del salón de informáticas de reconocidos institutos de investigación yuniversidades. El comando para instalar un paquete se mirá en el siguienteejemplo:

�ineq� es un paquete que integra a R funciones para medir desigualdad conrespecto aun indicador en una muestra poblacional. En este paquete encon-tramos el índice gini y la curva de lorenz, indicadores básicos para medir laconcentración de los ingresos de las personas. Para instalar �ineq� se ejecuntaen R:

> install.packages("ineq")

7

Page 8: Introducción a R (II)

Si ejecutamos esto por primera vez nos preguntará de qué instituto o univer-sidad del mundo deseamos obtenerlo. No tendrán diferencia alguna porque soloson espejos de la web o�cial de R, espejos en el mundo informático se re�ere unacomputadora que aloja una página web igual a la original sin ninguna diferencianotable. Se recomienda elegir el espejo que se encuentre más cerca de su paíspara hacerle más e�ciente la descarga a R.

Este comando install.packages nos solo descargará el paquete sino que tam-bién las dependencias. Las dependencias son otros paquetes que permitirá que�ineq� cumpla su cometido.

¾Puedo descargar paquetes sin tener internet? La página para descargar-los es de http://dirichlet.mat.puc.cl/web/packages/ para el caso de la Ponti�ciaUniversidad Catolica de Chile. Se puede ir un a cyber, la casa de un amigo odonde tengamos accesos a internet ya sea en el celular, ipad o tablet, ingresar ala página o�cial de R y descargar el paquete. Si lo vamos a utilizar en un R in-stalado en Windows, descargar el paquete con extensión .zip, si fuera para linuxserá necesario descargarlo en extensión .tar.zg. No se deben olividar descargartambién las dependencias. Podemos llevar nuestros paquetes en una memoriausb, disco o celular y descomprimirlo en una caperta llamada �win-library� enwindows o �pc-linux-gnu-library� en linux . Esta carpeta se encuentra en otrallamada �R� que la puede encontrar en �Mis documentos� en windows o �Carpetapersona� en linux.

Ahora pues solo resta activarlos y este paso solo se logra con el comandolibrary(��) y entre paréntesis y comillas mencionar el paquete. Ejemplo:

> library("ineq")

6 Importar bases de datos

En todo software existen dos forma de importar bases de datos. Estas son:

• Ingresar observación por observación.

• Ingresar a R una base de datos contenida en un archivo que puede estaren nuestra computadora, memorias o en internet.

En este tutorial vamos a ver las dos formas. Son nuestros primeros pasos paratrabajar con R.

6.1 Ingresar observación por observación

Cuando tenemos una base de datos solo disponible en un documento físico oingresar respuestas de una encuesta. Será necesario hacerlo observación porobservación a esto conocemos como digitalizar. La mayoría de usuarios infor-máticos ingresará las observaciones en excel, nosotros podremos hacerlo direc-tamente a R. En ocaciones es mejor ingresar directamente a excel o LibreO�ceCalc para dejarla disponible en un formato universal aceptado por cualquierotro software. Actualmente se dispone de un software comercial llamado Stat

8

Page 9: Introducción a R (II)

Transfer para convertir a varios formatos aun no existe una variante libre, algomuy lamentable. Pero tenemos la opción de convertir bases simples elaboradasen R a los formatos más comunes utilizando comandos de R, esto lo veremosmás adelante en exportar. Con el último método talvez no nos haga falta unStat transfer pero aun existen formatos a los cuales no podremos importar.

La forma más simple consiste formado vectores. Por ejemplo crear el vectorcon los números 1, 4, 3, 6, 8, 9 en el orden para la variable x.

Sería:

> x <- c(1, 4, 3, 6, 8, 9)

Con un enter ya habriamos creado la variable x con las anteriores observa-ciones.

> x

[1] 1 4 3 6 8 9

>

Igualmente podemos ingresar otra variable. Queda como ejercicio que ellector pruebe ingresando 4, 5, 2, 5, 9, 7 a una nueva variable nueva llamada y.

Si disponemos de variables ya sea en Microsoft Word o LibreO�ce Writepodemo seleccionar cada variable y pegarla en R, con la forma copy - paste.

Selecionamos la variable en word, excel, write o calc; seleccionamos desde laprimera hasta la última observación. Clic derecho copiar. Aplicamos la siguientelínea en R:

> y <- scan()

Al dar enter nos presenta:

1:

Este es el momento exacto para dar clic derecho y pegar. Damos enter yqueda así:

> y <- scan()

1: 4

2: 5

3: 2

4: 9

5: 7

6:

Read 5 items

>

Nos da el mensaje de haber leído 5 observaciones. Además si ejecutamos yy luego enter nos aparecerán las observaciones que hemos ingresados a y.

Para ingresar una tabla completa, seleccionamos toda la tabla incluyendonombres y observaciones. Damos clic derecho y copiar. Nos vamos a R yaplicamos la siguiente línea:

9

Page 10: Introducción a R (II)

> base <- read.table("clipboard", sep="", header=TRUE)

>

El nombre �base� es como se ha nombrado en R la nueva base de datos.Recuerde que la palabra o letra que esté antes de los símbolo <- es como sellamará el objeto en la memoria virtual de R. El comando read.table lee basesde datos que esté contenida en archivos de textos .txt, en nuestro caso leerá latabla que hemos copiado en el portapeles, esta tabla se llama �clipboard�, enel caso del argumento sep=� � le estamos diciendo a R que cada columna estáseparada por espacio, se puede cambiar por �/� o �,� si estamos importandotablas incluidas en un archivo de texto .txt o .csv. El siguiente argumentoheader=TRUE le indica a R si cada variable posee nombre, si en vez de TRUE,hacemos uso de FALSE, sería decirle a R que nombre las variables omitiendolos nombres de las primeras �las por defecto R la nombrará como V1, V2, V3,etc.

Después de ingresar una base de datos de la forma anterior es necesarioaplicar el comando attach () para poder trabajar por separado cada variable.

> attach(base)

Si quisieramos crear un data.frame (estos son conjunto de variables or-danadas como en una hoja de cálculo) aplicariamos:

> y <- scan()

1: 4

2: 5

3: 2

4: 9

5: 7

6:

Read 5 items

>

Nos da el mensaje de haber leído 5 observaciones. Además si ejecutamos yy luego enter, nos aparecerán las observaciones que hemos ingresados a y.

El comando scan() también sirve para ingresar observación por observaciónsin necesidad de utilizar el comando para vector c(). Como habrá notado enel ejemplo anterior, después del enter a la linea y <- scan() se da un enter yobtenemos un espacio para agregar una observación, otro enter para la siguienteobservación y asi consecutivamente. Al dar doble enter el comando scan() dejaráde recibir observaciones.

Para ingresar una tabla completa, seleccionamos toda la tabla incluyendonombres y observaciones. Damos clic derecho y copiar. Nos vamos a R yaplicamos la siguiente línea:

> base1 <- data.frame(x,y,z)

o bien

10

Page 11: Introducción a R (II)

> base1 <- data.frame(x,base)

Esto crea una base de datos que agrupa las variables recientemente creadas.Con este comando data.frame() también podemos unir otra base de datos. Nohay ninguna decisión arbitraria al aplicarlo.

6.2 Importar bases de datos desde otros formatos digi-

tales.

R tiene un potente paquete llamado �foreign�, este paquete nos permite importarbases de datos que ya se encuentran los formatos de softwares estadísticos máscomunes. Por ejemplo, el .sav de SPSS y el .dta de Stata.

Para poder ingresar de otros formatos podemos aplicar el comando ayudapara el paquete �foreign�.

> ?foreign

Obtendremos una explicación sencilla de qué formatos puede leer. Por ejem-plo para leer formato en SPSS, la ayuda nos da el comando read.sav, deberecordar que sav es la extensión de los archivos de stata. Si ahondar en la sin-taxis que nos permite hacer más, presentamos cómo debemos importar desdeSPSS:

Activar el paquete �foreign� y ejecutar la línea de importación:

> library(foreign)

> base <- read.spss("POBLACION.sav")

Después de la base de datos en SPSS pueden agregarse otros elementos quenos permita personalizar la importación como por ejemplo omitir las etiquetas.Esto se puede estudiar desde la ayuda del paquete �foreign�.

Primero el nombre que va tener nuestra base en R, luego los cotidianos <-, siguiéndole el comando read.spss o read.dta (para Stata), etc. Luego abrimosparéntesis, después comillas, próximo el nombre de la base incluido su extension,�nalizamos cerrando comillas y paréntesis. Debo advertir que solo agregra elnombre de la base entre comillas funcionará si la base ha sido guardada en lacarpeta del Directorio de trabajo que se enseño a crear con anterioridad. Sital no fuera el caso, entre comillas deberíamos agregar la dirección completa dedonde se encuentra nuestra base en la computadora o desde internet.

R permite importar base de datos desde el propio internet, solo debe copiarsey pegarse la dirección completa de la base. Para tal �n uno se coloca en la páginaweb que contiene la base de datos. Se da clic derecho sobre el enlace de la basey se selecciona �Copiar la ruta de enlace� o �Copiar enlace�. La dirección queobtenemos la pegamos entre las comillas, ejecutamos la línea de comando y Rempezará a descargar.

Una paquete interesante que demuestra que R puede conectarse a bases dedatos online se llama �WDI�. Puede descargarlo y revisar la ayuda.

11

Page 12: Introducción a R (II)

Volviendo al tema. La línea anterior también sirve con datos de Stata,únicamente según nos dice la ayuda de �foreign� debemos cambiarnos al comandorea.dta.

> library(foreign)

> base <- read.dta("~/Escritorio/Econometria /

+ base datos stata/BASE DE DATOS/poblacion.dta")

Con anterior ejemplo también damos como quedaría la dirección de una basede datos desde mi Sistema Operativo Linux.

También tenemos el paquete �gdata�, excelente para leer archivos de excel.Primeramente habrá que instalar este paquete porque no está incluido de baseen R.

> install.packages("gdata")

> library(gdata)

Cuando nos vamos a ?gdata nos explica que para importar desde excel hayque hacerlo desde la siguiente línea:

> base <- read.xls("basedatos.xls")

Recuerde que si la base de datos no está en la carpeta establecida comoDirectorio de trabajo, deberá ponerse la dirección completa entre comillas.

Este paquete también lee excel 2007, es decir archivos con la extensión .xlsxcon el mismo comando read.xls. Ahora si agregamos coma seguida de sheet=1estaremos indicando que la tablas a pasar a R está en la hoja 1.

> base <- read.xls("basedatos.xls", sheet=1)

Los nuevos libros de estadísticas o econometría, traen los su datos en undisco o descargables desde internet en su formato de software preferido o desdeexcel. Pero los antiguos libros traían las bases de datos en un formato universalaceptable por cualquier software. Estos formatos universales son archivos detextos y cvs delimitados por comas, poseen las extensiones .txt y .csv. A igualque todo software R ya posee por defecto la manera de leerlos y se puede hacercon las siguientes líneas:

• Si la base está en bloc de notas.

> base <- read.table("basedatos.txt", sep="", header=TRUE)

• Si la base está en CSV.

> base <- read.csv("basedatos.csv", sep=",", header=TRUE)

No es muy común encontrarnos con una base de datos ya en formato R.Pero mientras avanza el conocimiento de esta potente herramienta nos iremosencontramos con archivo .RData. Si nos encontraramos con una base con laanterior extension, simplemente corremos esta línea si esta base de datos seencuentra en nuestros Directorio de Trabajo:

12

Page 13: Introducción a R (II)

> load("base.RData")

Hemos podido compartir un buen material. Se debe poner en práctica estalección ya que es base fundamental para empezar a trabajar con R. Es necesariotomar nota de esto: antes de ingresas una base de datos desde un archivo a R,se debe asegurar que en la primera �la únicamente aparecen los encabezados onombres de cada variable, si no es el caso tendríamos que editar la base con surespectivo software.

El próximo tutorial se llamará �Estádísticas básicasR (III)�. La finalidad de este y otros tutoriales de mi au-toría es poner a disposición de la comunidad una colec-ción exhaustiva de tutoriales sencillos y en español paraaprender a utilizar R.

Comunicarse a [email protected] si desea apor-tar a este manual con sugerencias, comentarios, dineroo unirse a esta redacción. Todos los aportes serán men-cionados. ¾Gracias de antemanos?. Grupo de Usuarios RNicaragua:

https://www.facebook.com/groups/usuariosrnicaragua/

13