S-Plus, R y otros recursos. F. Tusell* Curso 2.003-2.004 1. Introducción El sistema S fue un proyecto innovador en Bell Labs (ATT) de lenguaje para análisis estadístico y gráfico. S-P LUS es una versión comercial que añade algunas cosas a la original de ATT. Ha sido periódicamente actualizada, y es hoy un programa que recoge el estado del arte en multitud de técnicas estadísticas, ausentes de otros muchos paquetes. La versión actualmente instalada en el Centro de Cálculo (en anboto) es la 6.0. S-P LUS (o su alternativa, R, sobre la que encontrarás información más abajo) es el instrumento para realizar tus prácticas en varias asignaturas. El tiempo que dediques a aprender su uso te compensará con creces. 2. Transcripción de una sesión en R El Apéndice A es la transcripción de una sesión, mostrando el resultado de ejecutar algunos de los comandos más usuales. No es sustituto de la imprescindible consulta de los manuales que recoge la bibliografía. El mismo código es ejecutable bajo S-P LUS, sin diferencias aparentes. 3. Recursos 3.1. Bibliografía Básica. Es útil leer los primeros capítulos de [4] (el “Libro Azul”) al tiempo que se practica sobre la máquina. El manual [12] contiene algunas adiciones al S básico: pero es mejor comenzar por [4] o por un libro introductorio como [1]. [6] (el “Libro Blanco”) describe muchas funciones añadidas al primitivo S, que mostrarán su utilidad, sobre todo, en regresión avanzada y no paramétrica. Hay varios libros de Estadística construidos sobre la base de ejemplos en SP LUS también interesantes: son [14], [17], [7] y [8]. * Actualización del día 10 de octubre de 2003. La última versión de este documento, posiblemente más reciente, puede obtenerse de http://www.et.bs.ehu.es/˜etptupaf 1 Depto. de Economía Aplicada III 2 Especializada. Puedes también encontrar de interés [10] (regresión no lineal en S-P LUS), [9] (suavizado en S-P LUS), [5] (wavelets en S-P LUS), [2] (modelos de efectos mixtos) y [3] (forma de añadir funciones a S; alguna información de interés, pero ya poco actual). Todas las obras citadas están disponibles en la Biblioteca de Investigación de la Facultad1 , salvo el manual [12], en el Centro de Cálculo. Para facilitarte la búsqueda, se consigna junto a algunos libros la signatura topográfica, que está sujeta a cambio (hasta que acabe el proceso de reclasificación de los fondos bibliográficos de la Facultad). La información definitiva y fiable la puedes obtener mirando el catálogo de la biblioteca de la UPV/EHU2 . 3.2. Software 3.2.1. S-P LUS S-P LUS está, como se ha indicado, disponible para bastantes plataformas diferentes, incluidos ordenadores personales bajo Windows 95/98/XP/NT. Es un programa bastante caro, y normalmente fuera del presupuesto del estudiante medio. Puedes dirigirte al proveedor MathSoft, Inc.3 , a su distribuidor en España AddLink, S.A.45 si crees que a pesar de todo puede ser de tu interés. Normalmente, si vas a utilizar S-P LUS, te limitarás a hacerlo en anboto. 3.2.2. R Una alternativa es el paquete R, que replica en buena medida la sintaxis de S-P LUS y es libremente copiable. Lo tienes a tu disposición para ordenadores personales bajo Windows y otros muchos sistemas operativos; encontrarás referencias en en http://www.et.bs.ehu.es/~etptupaf. La versión actual en el momento de escribir es la 1.7.1. Existe un pequeño manual (en inglés) [13], una traducción del mismo al castellano y un manual de referencia extensivo documentando cada función. Claro y bien escrito, [11] complementa bien a los anteriores 6 . Los libros recientes sobre S-P LUS tratan también de R. Por ejemplo, [14] (con sus complementos, [15]) y [16], éste último bastante avanzado y que interesa más a quien vaya a extender S-P LUS o R con programación propia. R es de notable calidad. Para realizar las tareas de curso apenas notarás la diferencia entre trabajar con S-P LUS o con R. Si haces programación avanzada, sí hay diferencias sustanciales, sobre todo en lo que se refiere a la visibilidad de los objetos7 . 1 A la que tienes acceso en tu condición de estudiante de segundo ciclo. En http://lgdx01.lg.ehu.es/biblioteca. 3 En http://www.insightful.com. 4 En http://www.addlink.es 5 En el momento de escribir, hay vigente una oferta de S-P LUS gratis para estudiantes; visita http://elms03.e-academy.com/splus/ para más información. 6 Todo puedes tomarlo de http://www.et.bs.ehu.es/~etptupaf. 7 R emplea lexical scoping, una aproximación radicalmente diferente a la de S-P LUS. No notarás 2 Depto. de Economía Aplicada III 3.2.3. 3 Colecciones de añadidos a S-P LUS y R Si necesitas hacer uso de técnicas que no forman parte de S-P LUS (o R) standard, tienes buenos motivos para mirar en http://www.hensa.ac.uk el espejo europeo de Statlib. Statlib es un servidor ofreciendo de modo gratuito datos y software de uso estadístico. En particular, hay secciones dedicadas a S-P LUS y bibliotecas de funciones para usos específicos que se pueden montar sobre el mismo. Algunas funcionan también sobre R, para el que hay un servidor específico 8 . 3.3. Máquina etdx01.bs.ehu.es Es una máquina exclusivamente dedicada a prácticas de Estadística que incluye algún software no disponible en anboto, y un entorno de trabajo incluyendo el editor Emacs y otras herramientas que he encontrado utiles. Funciona en horario diurno, pero no hay inconveniente en prolongar su funcionamiento si hay demanda para ello. Por tratarse de una máquina corriendo Linux, no hay nada nuevo que debas aprender para trabajar en ella: todo lo habitual en UNIX está allí, incluso el venerable vi. Pero te conviene utilizar Emacs 3.4. Listas de correo Hay una lista de correo que sirve de instrumento de comunicación entre los usuarios de S-P LUS. Es un recurso valioso: se aprende mucho leyendo las preguntas y respuestas, que muchas veces tocan no sólamente cuestiones relativas a S-P LUS, sino también de metodología estadística. Cualquiera puede suscribirse, pero para evitar la proliferación de mensajes iguales dirigidos a personas en una misma institución, hay instalada9 una colección de los mensajes recientes. Puedes acceder a ellos por tema o hacer búsquedas. Hay también una lista específica sobre R, que puedes encontrar en la misma dirección local que la de S-P LUS. 4. Forma de invocar S-P LUS o R 4.1. Bajo UNIX 4.1.1. Uso interactivo desde un terminal Se puede trabajar en S-P LUS de dos maneras, interactivamente y en batch. Para trabajar interactivamente, basta teclear desde el sistema operativo, S la diferencia hasta que comiences a escribir funciones que definen (y llaman) a otras. Entonces te convendrá leer [16]. 8 En http://cran.at.r-project.org. 9 En http://www.et.bs.ehu.es. Depto. de Economía Aplicada III 4 lo que inicia una sesión y nos devuelve el “prompt”, o indicador del programa, > Ello es señal de que podemos comenzar a teclear mandatos, y los resultados se evaluarán al momento, apareciendo en la pantalla. En el caso de R, bastaría teclear R para obtener el mismo resultado. Puedes emplear tanto S-P LUS como R desde una terminal alfanumérica; pero tienes todos los motivos para utilizar un X-terminal o un PC que emule un Xterminal, para poder hacer uso de las prestaciones gráficas de cualquiera de los dos programas. La posibilidad de utilizar una terminal alfanumérica puede serte útil, no obstante, si has de trabajar remotamente y no tienes una conexión muy rápida. 4.1.2. Uso en batch Podemos también agrupar todos nuestros mandatos en un fichero (a crear con el editor de nuestra elección), al que en lo que sigue denominamos entrada. Invocando S-P LUS así, S BATCH entrada salida tendríamos, tras acabar la ejecución, un fichero salida con nuestros mandatos (procedentes de entrada) y los resultados intercalados. Podemos entonces revisar su contenido, incluirlo en un documento, o darle el uso que apetezcamos. El empleo de R es idéntico sustituyendo S por R en el mandato anterior. 4.1.3. Uso batch diferido y uso “cortés” No es de aplicación a los primeros trabajos a realizar en el curso, pero más adelante os encontraréis en la necesidad de realizar cálculos que requieren muchos minutos de procesador. Lo habitual en tales casos, y siempre que se realizan trabajos muy largos (como simulaciones), es hacerlos correr en horas de valle, en que las máquinas están desocupadas. Para ejecutar un trabajo a las, por ejemplo, tres de la mañana, podemos emplear un mandato como: at 3:00 S BATCH entrada salida Ctrl-d todo lo cual se teclea desde el sistema operativo. Véase las notas sobre UNIX para detalles sobre el particular, o consúltese on line lo referente al mandato at (mediante man at). Otra posibilidad de trabajo que minimiza la interferencia con otros usuarios es emplear el mandato nice: nice ejecuta un trabajo en el momento, pero con baja prioridad (man nice proporciona información al respecto). Depto. de Economía Aplicada III 5 En etdx01.bs.ehu.es hay definida una cola de batch. En lugar de especificar una hora, podrías someter un trabajo en R (no hay S-P LUS en esa maquina) así: batch R BATCH entrada salida Ctrl-d El trabajo se ejecutaría tan pronto como fuera posible, de acuerdo con las especificaciones del administrador del sistema10 . 4.1.4. Usando Emacs como interface Para iniciar Emacs en una máquina donde lo haya, teclea simplemente emacs. Si estás utilizando un entorno gráfico, puede bastar pinchar sobre algún icono. Desde dentro de Emacs teclea11 : ESC-x R En la línea de mandatos (última línea en la pantalla Emacs) preguntará el directorio de trabajo: señala el que desees. A continuación, Emacs automáticamente entre en un modo llamado ESS, que simplifica el trabajo en R. Por ejemplo, puedes cortar y pegar instrucciones, guardar una transcripción de tu sesión, editar funciones en una segunda ventana y ejecutarlas y depurarlas al tiempo que las editas, etc. El editor resalta en color los distintos elementos sintácticos, equilibra paréntesis, y en general hace la vida más fácil. Para abandonar R, pincha en el menú iESS y a continuación pide abandonar S (sí; aunque sea R lo que estás usando). 4.2. Sobre Windows 95/98/XP/NT 4.2.1. Uso interactivo Para ejecutar tanto R como S-P LUS lo normal será pinchar sobre el icono correspondiente. Crea un acceso directo en tu Escritorio para simplificarte la vida. 4.2.2. Usando Emacs como interface Procede como se describe en 4.1.4. 10 En el momento actual, se admite un solo trabajo en cola, por lo que si hay uno ejecutándose, el tuyo entrará en ejecución cuando aquél termine 11 Esto presupone que en vuestro directorio hogar tenéis un fichero de nombre .emacs (notad el punto al comienzo, que lo hace invisible) con una línea como la siguiente: (load /usr/local/share/emacs/ess-5.1.20/lisp/ess-site.elc"). Si no hay tal cosa, puedes crearla tu. Depto. de Economía Aplicada III 6 Referencias [1] A.Krause and M.Olson. The Basics of S and S-P LUS. Springer Verlag, 1997. Signatura: 519.682 KRA. [2] Douglas M. Bates and Jose C. Pinheiro. Mixed-effects models in S and SPLUS. Springer-Verlag, 2000. Signatura: 519.233.4. [3] R.A. Becker and J.M. Chambers. Extending the S system. Wadsworth, Monterey, California, 1985. [4] R.A. Becker, J.M. Chambers, and A.R. Wilks. The New S Language. A Programming Environment for Data Analysis and Graphics. Wadsworth & Brooks/Cole, Pacific Grove, California, 1988. [5] A. Bruce and Hong-Ye Gao. Applied Wavelet Analysis with S-P LUS. Springer Verlag, 1996. [6] J.M. Chambers and T.J. Hastie. Statistical Models in S. Wadsworth & Brooks/Cole, Pacific Grove, Ca., 1992. [7] P. Dalgaard. Introductory statistics with R. Statistics and Computing. Springer-Verlag, 2002. Signatura: 519.682 DAL. [8] B.S. Everitt. A Handbook of Statistical Analysis in S-P LUS. Chapman and Hall, London, 1994. [9] W. Härdle. Smoothing Techniques with implementations in S. Springer Verlag, New York, 1990. [10] S. Huet, A. Bouvier, M.A. Gruet, and E. Jolivet. Statistical Tools for Nonlinear Regression with S-P LUS. Springer Verlag, 1996. [11] J.H. Maindonald. Data analysis and graphics using R - An introduction. January 2000. [12] Statistical Sciences U.K. Ltd. S-P LUS User’s Manual. Oxford, 1990. [13] B. Venables, D. Smith, R. Gentleman, and R. Ihaka. Notes on R: A Programming Environment for Data Analysis and Graphics. Dept. of Statistics, University of Adelaide and University of Auckland, 1997. Available at http://cran.at.r-project.org/doc/R-intro.pdf. [14] W.N. Venables and B.D. Ripley. Modern Applied Statistics with S-P LUS. Springer-Verlag, New York, third edition, 1999. [15] W.N. Venables and B.D. Ripley. ‘R’ complements to Modern Applied Statistics with S-P LUS. En http://www.stats.ox.ac.uk/pub/MASS3, 1999. Depto. de Economía Aplicada III 7 [16] W.N. Venables and B.D. Ripley. S Programming. Springer-Verlag, 2000. [17] M.D. Ugarte y A.Fdez. Militino. Estadística Aplicada con S-Plus. Universidad Pública de Navarra, 2001. Depto. de Economía Aplicada III A. Transcripción de una sesión 8