´ A LA PROGRAMACION ´ INTRODUCCION ESTAD´ISTICA CON R PARA PROFESORES
Jos´ Jos´ e Migu Miguel el Contr Contrer eras as Ga Garc rc´ ´ıa Elena Molina Portillo Pedro Arteaga Cez´ on on
c Jos´ Jos ´e Migue Mig uell Co Contr ntrera erass Garc´ Ga rc´ıa ıa Elena Molina Portillo Pedro Arteaga Cez´on on Todos los derechos reservados. Ninguna parte del libro puede ser reproducida, almacenada en forma que sea accesible o transmitida sin el permiso previo por escrito de los autores. ISBN: 978-84-693-4859-8 Dep´ osito osito legal: Financiaci´ on: on: Esta obra forma parte de los proyectos: proyectos: SEJ2007-60110/EDUC (MEC-FEDER) y EDU201014947 (subprograma EDUC); con la colaboraci´on on de la beca FPI BES-2008-003573 y la beca FPU AP2007-03222.
´Indice general I
Intr In trod oduc ucci ci´ ´ on al lengua je R
II
Primeras nociones
1 5
III
Mani Manipu pula laci ci´ ´ on de Datos
17
IV
Funciones
40
V
Dispositivos gr´ aficos
VI
Estad´ıstica Descriptiva
VII
Distribuciones de probabilidad
VIII VIII IX X XI XII
Regr Regres esi´ i´ on Inferencia
An´ alisis de la varianza Combinatoria y probabilidad En Entornos gr´ aficos para traba jar con R
53 78 90 104 113 123 132 153
Parte I Introducci´ on on al lenguaje R
Introducci´ on on al lenguaje R
on, creado en 1993 por Ross Ihaka y Robert R es un lenguaje y entorno de programaci´on, Gentleman del Departam D epartamento ento de Estad´ıstica ıstica de la l a Universidad Un iversidad de Auckland, Au ckland, cuya caracter ca racter´´ıstica principal es que forma un entorno de an´alisis alisis estad´ estad´ıstico para la manipulaci´ manipu laci´ on on de datos, su c´alculo alculo y la creaci´on on de gr´aficos. aficos. En su aspecto R aspecto R puede puede considerarse como otra implementaci´on on del lenguaje de programaci´on on S , con la particularidad de que es un software GNU, General Public Licenc (conjunto de programas desarrollados por la Free Software Foundation), es decir, de uso libre. La p´agina agina principal del proyecto “R “R project es http : //www.r project.org proj ect”” es http proj ect.org,, en ella podremos conseguir gratuitamente el programa en su ultima ´ultima versi´on, on, o cualquiera de las anteriores riores (para el caso de utilizar paquetes paquetes no implemen implementados tados para las ultimas u ´ltimas versiones), adem´as as de manuales, librer´ıas ıas o package y dem´as as elementos que forman la gran familia que es R. R .
−
−
Hay que tener en cuenta R es un proyecto vivo y sus capacidades no coinciden totalmente con las de S de S .. A menudo el lenguaje S es investigadores que utilizan la S es el v´ınculo escogido por investigadores meto me todo dolo logg´ıa estad´ es tad´ısti ıs tica, ca, y R les proporciona una ruta de c´odigo odigo abierto para la participaci´on on en esa actividad, los usuarios pueden contribuir al proyecto implementando cualquiera de ellas, creando modificaciones mo dificaciones de datos y funciones, librer´ librer´ıas (packages),... (packages),... Ning´ un un otro programa programa en la actualidad re´ une las condiciones de madurez, cantidad de recursos y manejabilidad que une posee R, adem´as a s de ser el que en los ´ultimos ultimos a˜ nos ha tenido una mayor implantaci´ nos on o n en la comunida comun idad d cient´ıfica. ıfica .
Introducci´on al lengua je R
3
Entre otras o tras caracter´ısticas ısticas dispone disp one de: Almacenamiento y manipulaci´on on de datos. Operadores para c´alculo alculo sobre variables indexadas (Arrays), en particular matrices. Herramientas para an´alisis alisis de datos. Posibilidades gr´aficas aficas para an´ alisis alisis de datos. El t´ermino ermino entorno lo caracteriza como un sistema completamente dise˜nado nado y coherente de an´alisis alisis de datos. Como tal es muy din´amico amico y las diferentes versiones no siempre son totalmente compatibles con las anteriores. En la introducci´on on a R a R no no se hace menci´on on expl exp l´ıcita ıci tamen mente te a la palabra estad´ estad´ıstica, sin embargo mayoritariamente se utiliza R utiliza R com comoo un sistema estad´ıstiıstico, aunque la descripci´on on m´as as precisa precisa ser´ ser´ıa la de un entorno entorno en el que se han implemen implementado tado muchas t´ecnicas ecni cas estad esta d´ısticas ıst icas.. Alguna Alg unass est´an an incluidas en el entorno base de R de R y y otras se acompa˜nan nan en forma de bibliotecas (packages). Una diferencia fundamental de la filosof´ filosof´ıa de R, y tambi´ tambi´en en de la de S , con el resto del software software estad´ıstico ıstico es el uso del “objetos” (variables, (variables, variables indexadas, cadenas de caracteres, funciones, etc.) como entidad b´asica. asica. Cualquier expresi´on on evaluada por R se realiza en una serie de pasos, con unos resultados intermedios que se van almacenando en objetos, para ser observados o analizados posteriormente, de tal manera que se puede hacer un an´alisis sin necesidad de mostrar su resultado inmediatamente produciendo unas salidas m´ınimas. Cada objeto pertenece a una clase, de forma que las funciones pueden tener comportamientos diferentes en funci´on on de la clase a la que pertenece su objeto argumento. Por ejemplo no se comporta igual una funci´on on cuando su argumento es un vector que cuando es un fichero de datos u otra funci´on. on. odigo fuente est´a escrito principalmente en C (y R est´a disponible en varios formatos: en c´odigo algunas rutinas en Fortran en Fortran), ), esencialmente para maquinas Unix y Linux, Linux, o como archivos binarios precompilados para Windows para Windows,, Linux(Debian, SuSe), Macintosh Linux(Debian, Mandrake, RedHat, SuSe), Macintosh y Alpha Unix. Unix. Junto con R se incluyen ocho bibliotecas o paquetes (llamadas bibliotecas est´andar) andar) pero otros muchos est´an an disponibles a trav´ trav´es es de Internet en (http://www.r-project.org). (http://www.r-project.org). Actualmente se encuentran disponibles 2337 librerias (packages) desarrollados en R, R , que cubren multitud de campos desde aplicaciones Bayesianas, financieras, graficaci´ on on de mapas, wavelets, an´ alisis alisis de datos espaciales, espaciales, etc. Esto es lo que define R define R como como un entorno vivo, que se actualiza con frecuencia y que est´a abierto a la mejora continua. Podemos Podemos ver ver o modificar la lista de bibliotecas bibliotecas disponibles disponibles mediante mediante la funci´ funcion o´n .libPaths y conocer el camino a la biblioteca predeterminada del sistema La variable “.Library “ .Library . Estas bibliotecas se pueden clasificar en tres grupos: las que forman parte del sistema base y estar´an en cualquier instalaci´on, on, los paquetes recomendados (aunque no forman parte del sistema base
Introducci´on al lengua je R
4
se aconseja su instalaci´on) on) y otros paquetes desarrollados por investigadores de todo el mundo para tareas o m´etodos etodos de lo m´ as diverso. Destacando ´areas as areas nuevas como ciencias de la salud, epidemi epi demiolo ologg´ıa, bioin bi oinform form´ atica, a´tic a, geoesta geo estad d´ıstica, ıst ica, m´etodos eto dos gr´aficos, aficos, etc. Una caracter´ıstica ıstica del lengua je R je R es que permite al usuario combinar en un solo programa diferentes diferentes funciones estad´ estad´ısticas para realizar an´alisis alisis m´ as as complejos. adem´as as los usuarios de umero de programas escritos para S umero para S y y disponibles en la R tienen a su disponibilidad un gran n´ red la mayor´ mayor´ıa de los cuales pueden ser utilizados directamente directamente con R con R..
Parte II Primeras nociones
Primeras nociones Una vez instalado el programa, la forma m´as as f´acil acil de usarlo es de forma interactiva mediante la l´ınea ınea de comandos. Cuando R se inicia, aparece la ventana del programa “Gui “Gui”” (graphical user interface) con un mensaje de apertura.
Debajo del mensaje de apertura de la consola de R se encuentra el “ prompt “ prompt”” que es el s´ımb ımbolo ol o “>” (mayor que). Las expresiones en R se escriben directamente a continuaci´on on del “ prompt” de R.. Si se escribe e intenta ejecutar un comando que se ha escrito en prompt” en la consola de R forma incompleta, el programa presenta un “+” que es el prompt de continuaci´on. Una caracter´ cara cter´ıstica ısti ca de R de R es es que nos permite guardar la sesi´on on de trabajo, lo que nos ser´ a muy u util ´ til en el caso de que necesitemos utilizar bibliotecas o datos que ya hemos implementado. Al cerrar el programa o al teclear “q “ q ( ) nos preguntar´a si desea salvar los datos de esta sesi´on on de trabajo. Puede responder yes (Si), no (No) o cancel (cancelar) pulsando respectivamente las letras y , n o c, en cada uno de cuyos casos, respectivamente, salvar´a los datos antes de terminar, terminar´a sin salvar, o volverla a la sesi´on o n de R. Los datos que se salvan estar´an an disponibles en la siguiente sesi´on on de R de R..
Es importante saber que el nombre de un objeto debe comenzar con una letra (A-Z ´o a-z) y adem´as as puede incluir letras, d´ıgitos (0-9) o puntos (.). R (.). R discrimina entre letras may´usculas usculas y min´ usculas usculas para el nombre nombre de un objeto, de tal manera que x que x y y X se refiere a objetos diferentes X se (inclusive bajo Windows).
Primeras no ciones
7
Conceptos iniciales. Funci´ on on help (ayuda) es es de funciones. La primera funR es un lenguaje funcional, esto es, realiza las tareas a trav´ ci´on on que necesitamos conocer es la que nos proporciona la ayuda del programa, esta es “help “ help”. ”. Si escribimos help escribimos help aparece aparece la definici´on on de la funci´on help on help,, la cual nos ser´a util u ´ til conocer si queremos realizar alguna modificaci´on on en ella. Pero si lo que queremos es obtener el resultado de la funci´on, on, debemos escribir entre par´entesis entesis el conjunto de argumentos que quiere suministrar a la misma, o vac´ vac´ıo si lo que se quiere es que aparezca la ayuda sin m´as. as. Una forma alternativa a ´esta es ta funci fun ci´on ´on es poner el car´acter acter ? delante del elemento que queremos consultar. > help(mean help(mean) )
Cuando queremos consultar funciones especificadas por caracteres especiales, el argumento deber´a ir entre comillas para transformarlo en una cadena de caracteres. Por ejemplo: on es con la funci´on on “help.search(“ ”)” help(“[[ help(“[[ ”). Otra forma de realizar la misma acci´on help.search(“median median”)” > help.search("calibration") help.search("calibration")
Una opci´on on interesante de la ayuda es que podemos encontrar ejemplos de uso. La forma de ejecutar los ejemplos es escribiendo “example “ example(( )” o “demo “demo(( )” si se quiere quiere una demostraci´ demostraci´ on on concreta. Por ejemplo con la sentencia “example “ example((InsectSprays)” InsectSprays)” obtenemos una muestra de im´ agenes agenes de diferentes gr´aficas aficas que podemos realizar con los datos InsectSprays.