R: estadística, programación, manejo y representación de...

351
Objetivos Introducción R: lenguaje Import/Export Gráficos en R Progr. I Métodos y técnicas estadísticas: modelos lineales y GLMs Prog. II Miscell. R: estadística, programación, manejo y representación de datos Ramón Díaz-Uriarte Biología Computacional Centro Nacional de Investigaciones Oncológicas (CNIO) [email protected] http://ligarto.org/rdiaz Copyright © 2008 Ramón Díaz-Uriarte Azti-Tecnalia, 6 a 10 de Octubre, 2008 (1 : 351)

Transcript of R: estadística, programación, manejo y representación de...

Page 1: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

R: estadística, programación, manejo yrepresentación de datos

Ramón Díaz-Uriarte

Biología ComputacionalCentro Nacional de Investigaciones Oncológicas (CNIO)

[email protected]://ligarto.org/rdiaz

Copyright © 2008 Ramón Díaz-Uriarte

Azti-Tecnalia, 6 a 10 de Octubre, 2008

(1 : 351)

Page 2: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Outline

Objetivos

Introducción

R: lenguaje

Importar y exportar datos

Gráficos en R

Programación en R (I)

Métodos y técnicas estadísticas: modelos lineales y GLMs

Programación en R (II)

Miscell.

(2 : 351)

Page 3: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

"Horario"

Lunes:I Introducción a RI Editores con R: Tinn-R.I R: lenguaje (objetos, operadores, atributos,

secuencias, etc).Martes

I Importar y exportar datosI Gráficos en R

MiércolesI Gráficos en RI Programación en RI Empezar modelos lineales

(3 : 351)

Page 4: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

JuevesI Modelos lineales y lineales generalizados

ViernesI Programación en R (II)I Miscell: fechas, scan y read.table, bases de datos,

mapas, etc

(4 : 351)

Page 5: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Objetivos

Curso muy denso. Mucho material que cubrir.Entender la forma en que se funciona con R.Si eso está claro, usar funciones estadísticas(desde un test de la t a un glm) es solo cuestión desaber que argumentos usar (y entender laestadística).Enfatizaremos manejo de datos en R y gráficos y laprogramación que es precisa para usar R coneficacia.R es un sistema muy grande (ej., montones depaquetes, cuyo número incrementa cada día), y unlenguaje moderadamente complicado. Adaptable,configurable, extensible; muchas opciones.

(5 : 351)

Page 6: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Código

Todo el código está disponible (o basta con hacercut and paste): CursoAztiOctubre2008.R.Mucho mejor que lo tecleeis:

I Familiarizarse con el uso de las herramientas.I Detectar erroresI Cambiar el código para experimentar con él

inmediatamente.I (Código: comentario sobre mytry).

(6 : 351)

Page 7: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Vosotros

Sistema operativo.Experiencia con R.Editores: Tinn-R, Emacs. (Quizás use Emacs).

(7 : 351)

Page 8: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Horario

Lunes a Jueves: 9:00–13:30 y 15:00–17:00Viernes: 9:00–14:00

(8 : 351)

Page 9: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

IntroducciónQué son R y SInstalación de RPrimera sesiónAyuda y documentaciónConfiguración y mantenimientoEditores y GUIs para R

IntroducciónTinn-ROtros editores y entornos

Paquetes adicionalesActualizando RAlgunas FAQs habituales

(9 : 351)

Page 10: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Qué son R y S

" R, also known as “GNU S”, is a language andenvironment for statistical computing and graphics.R implements a dialect of the award-winninglanguage S, developed at Bell Laboratories by JohnChambers et al. For newcomers it provides easyaccess to a wide variety of statistical and graphicaltechniques. Advanced users are offered afull-featured programming language with which toadd functionality by defining new functions."" [S] has forever altered the way how peopleanalyze, visualize and manipulate data"(Association of Computer Machinery SoftwareSystem Award 1998 a John Chambers).Probablemente, S y R son los dos lenguajes másusados en investigación en estadística.

(10 : 351)

Page 11: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Qué son R y S (II)

Grandes atractivos de R/S:I Combinar, sin fisuras, análisis "preempaquetados"

(ej., regresión logística) con análisis ad-hoc,específicos para una situación: capacidad demanipular y modificar datos y funciones.

I Gráficos de alta calidad (revelaciones de lavisualización de datos y producción de gráficaspara papers).

La comunidad de R es muy dinámica (ej.,crecimiento en número de paquetes), integrada porestadísticos de gran renombre (ej., J. Chambers,L. Terney, B. Ripley, D. Bates, etc).Extensiones específicas a áreas nuevas(bioinformática, geoestadística, modelos gráficos).Un lenguaje orientado a objetos.Parecido a Matlab y Octave, y con sintaxis querecuerda a C/C++.

(11 : 351)

Page 12: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

¿Cuánto cuesta R? R es "GNU S"

R es la implementación GNU de S.FIlosofía y objetivos del proyecto GNU:www.gnu.org.Desarrollar un sistema completo y "libre" (donde"free is free as in freedom, not free as in beer").Algunos "GNUs famosos": Emacs, gcc, GNU/Linux,etc.R se distribuye con licencia GNU GPL o GeneralPublic License (verhttp://www.gnu.org/licenses/gpl.html.)La GPL no pone ninguna restricción al uso de R.Restringe su distribución (ha de ser GPL).R se obtiene por 0 euros enhttp://cran.r-project.org

(12 : 351)

Page 13: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

R, estadística, computación estadística,manejo de datos

R es tanto un sistema/lenguaje de programaciónestadística, como un sistema/paquete/programaestadístico.Tenemos a nuestra disposición muchos “módulos”(funciones, paquetes) para el análisis estadístico.Muchos más aún en CRAN.Al ser un lenguaje de programación con orientaciónal manejo y análisis de datos:

I Podemos modificar las funciones preexistentes (ej.,si no nos gusta el output por defecto del anova).

I Podemos desarrollar nuevos métodos de análisis,explorar ideas, etc. (Esto explica, en parte, supopularidad en bioinformática).

(13 : 351)

Page 14: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Obtención e instalación de R: instruccionesgenéricas

Depende del sistema operativo, pero todo se puedeencontrar en http://cran.r-project.org/bin.

Windows: bajar ("download") el ejecutable desdehttp://cran.r-project.org/bin/windows/base.Ejecutar el fichero. Instalará el sistema base y lospaquetes recomendados.Puede ser preferible usar la versión “parcheada”:http://cran.r-project.org/bin/windows/base/rpatched.html.GNU/Linux: dos opciones:

I Obtener el R-x.y.z.tar.gz y compilar desde lasfuentes.

I Obtener binarios (ej., *.deb para Debian).

(14 : 351)

Page 15: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Instalación R: nuestro caso

El instalador se encuentra en el CD. (Sólo el“release” oficial; versión parcheada pocos cambiosimportantes para nosotros).Clickear, y seguir instrucciones.Recomendable usar inglés si nos sentimoscómodos.Las opciones por defecto en cuanto a qué instalarson razonables.El "path": en lo que sigue asumoc:\Archivos de programa\R\R-2.7.2.Cambiar si es necesario.

(15 : 351)

Page 16: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Cambiar el path

Es útil añadir R/bin al PATH de Windows.Nos permitirá ejecutar R CMD BATCH.

(16 : 351)

Page 17: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Inicio de una sesión de R

Windows:I Hacer click dos veces en el icono. Se abrirá "Rgui".I Desde una "ventana del sistema" ejecutar "Rterm";

parecido a "R" en Unix o Linux.I Iniciar R desde de (X)Emacs (M-X R).

(GNU/Linux:I Teclear "R" en una shell.I Iniciar R desde (X)Emacs (M-X R).)

(17 : 351)

Page 18: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Ayuda incluida con el programa [p. 24]

?rnorm

help(rnorm)

help("+")

help.start()

?help.search

help.search("normal")

?apropos

apropos("normal")

Si hay acceso a internet:RSiteSearch("logistic residuals")

Y qué hace eso? ?RSiteSearch

(18 : 351)

Page 19: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Ayuda (II) [p. 25]

example> example(lm)> help(lm)

?demo

demo(graphics); demo(persp);demo(lm.glm)

Todo este código se puede ver:$PATH/library/graphics/demo y$PATH/library/stats/demo.

(19 : 351)

Page 20: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Compiled help, IE bug, etc [p. 47]

Abrid R y teclead help(lm).Si mensaje “DLL attempted to change FPU controlword from ...”: un bug en IE, generalmente resueltocon “Service Packs” recientes.Si no, comentad el options(chmhelp=TRUE) enRprofile.site, o ignorad el error.

(20 : 351)

Page 21: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Documentación [p. 26]

Referencia más extensa al final. Pero debemosmencionar:Toda instalación de R incluye manuales. El primeroa leer: “An introduction to R”.An introduction to R: software for statisticalmodelling and computing, de P. Kuhnert yW.. Venables, enhttp://cran.r-project.org/doc/contrib/Kuhnert+Venables-R_course_Notes.zip.A guide for the unwilling S user, de P. Burns. Enhttp://cran.r-project.org/doc/contrib/

Burns-unwilling_S.pdf o

http://www.burns-stat.com/pages/tutorials.html. Sólo8 páginas.R for beginners, de E. Paradis. Enhttp://cran.r-project.org/other-docs.html.

(21 : 351)

Page 22: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

[p. 27]

An R and S-PLUS companion to appliedregression, de J. Fox.Modern applied statistics with S, 4th ed. deW. Venables y B. Ripley.Linear models with R, de J. Faraway.(Ver http://www.stat.lsa.umich.edu/~faraway/book/para scripts y pdf de versión previa).Extending the linear model with R, de J. Faraway.Data Manipulation with with R, de P. Spector.Usaré muchos ejemplos de las fuentes anteriores.R News(http://cran.r-project.org/doc/Rnews/).

(22 : 351)

Page 23: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

[p. 28]

Específicos sobre programación: Venables y Ripley(S programmin), Gentleman (R for Bioinformatics),Chambers (Software for data analysis). Verhttp://www.r-project.org/doc/bib/R-books.html

(23 : 351)

Page 24: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

¿Desde dónde ejecutamos R? [p. 23]

Hacemos getwd()Podemos cambiar de directorio:setwd(lo.que.sea)

Más cómodo que ejecutemos R desde un directoriousando un "shortcut".Creemos un directorio (ej., CursoR).Copiar el shortcut y modificar propiedades.

(24 : 351)

Page 25: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Cómo especificar paths (rutas) en R paraWindows [p. 36]

En Windows es habitual hacerC:\Un directorio\Un subdirectorio

Pero el caracter \ tiene que ser “backslashed”,poniendo otro \ antes: \\.En R, entonces:> setwd("C:\\tmp\\otro")

Alternativamente, más sencillo usar la notacióncomo en Unix/Linux:> setwd("C:/tmp/otro")

Fijaos cómo nos devuelve R su actual directorio:> getwd()

(25 : 351)

Page 26: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Configuración y personalización [p. 22]

Personalizar el aspecto de R: "Edit -> GUIpreferences".

I Poner "SDI" (no "MDI"), o cambiar y probar.I "Initial left" y "top" (poner 0 y 0).

Se puede "customizar" como se inicia una sesiónde R (ej., que paquetes se cargan, mensajes, etc).Ver sección 10.8 en An introduction to R.Luego editaremos Rprofile.site.

(26 : 351)

Page 27: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Una primera sesión [p. 18]

rnorm(5) # 5 numeros aleatorios de una distribucion# normal (mean= 0, sd = 1)

## Los números se producen, y se muestran (print).x <- rnorm(5) # asignamos esos números a un objeto

# (un vector) llamado x.xsummary(x) # mostrar un "summary" de x

# (un summary "inteligente").

## o también:w <- summary(x)wprint(w) # teclear w y print(y) producen

# el mismo resultado.# summary(x) TAMBIEN es un objeto.# (virtually) "everything is an object".

(27 : 351)

Page 28: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

[p. 19]

> rnorm(5)> x <- rnorm(5)> x> summary(x)> w <- summary(x)> w> print(w)

(28 : 351)

Page 29: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

[p. 20]

> x1 <- rnorm(100)> x2 <- rnorm(100)> plot(x1, x2)> rug(x1)

(29 : 351)

Page 30: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

[p. 21]

> par(mfrow = c(2, 2))> tipo <- factor(c(rep("Enfermo",+ 50), rep("Sano", 50)))> plot(x1, x2, type = "n",+ xlab = "Variable A",+ ylab = "Variable B")> points(x1, x2, col = c("red",+ "blue")[tipo], pch = 19)> boxplot(x1 ~ tipo, ylab = "Una variable",+ xlab = "Tipo")> hist(x1)> hist(x2, main = "Histograma de la variable B")> summary(lm(x2 ~ x1 + tipo))> dev.off()

(30 : 351)

Page 31: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Editores y GUIs para R [p. 38]-[p. 62]

Es conveniente usar un editor que nos permitaconservar los scripts: mantenimiento de códigoordenado y comentado.Mejor si hay coloreado de sintaxis, completado deparéntesis, "call tips", etc.Mejor aún si permite interacción directa con R (i.e.,evitar el "corta-pega", usando un "envía estaslíneas a R").Una página con (casi) todas las posibilidadesexistentes:http://www.sciviews.org/_rgui/.

(31 : 351)

Page 32: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Editor incorporado

R para Windows incorpora un pequeño editor descripts.Vamos a “File” -> “New Script”Permite enviar código a una sesión en R (evita elmuy oneroso “corta-pega”).Bastante para trabajos rápidos, pero carece desyntax highlighting, call-tips, etc.Examinaremos otras alternativas.

(32 : 351)

Page 33: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Distinción entre GUI y editor.GUI vs. no GUI una compleja discusión.Aquí: usaremos un editor (Tinn-R) y probaremosuna GUI (R commander) (si hay tiempo).

(33 : 351)

Page 34: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Tinn-R

Editor muy pequeño, con funcionalidad extra paraedición de código en R.Permite enviar código a R.Se obtiene enhttp://www.sciviews.org/Tinn-R

Tinn-R es también parte del SciViews bundle.Muy bien documentado (incluido en la distribución).

(34 : 351)

Page 35: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Instalación

Descargar el instalador de sourceforge:http://sourceforge.net/projects/tinn-r

Usar el instalador existente en el CD.

(35 : 351)

Page 36: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Configuración (Tinn-R pre-2.0)

Podemos arrancar Tinn-R de forma automáticacada vez que arranca R:Arrancamos Tinn-R y abrimos ’c:/Archivos dePrograma/R/R-2.7.2/etc/Rprofile.site’Escribimosoptions(IDE = 'C:/Archivos de Programa/Tinn-R/++ bin/Tinn-R.exe') #### en una sóla lineaoptions(use.DDE = TRUE)library(svIDE)library(svSocket)library(svIO)guiDDEInstall()

(36 : 351)

Page 37: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Configuración (II pre-2.0)

Aseguramos que R se ejecuta en SDI (ver "Edit ->GUI preferences").Instalamos los paquetes "R2HTML" y "SciViews".(Desde un local zip file.)Cerramos R y arrancamos R de nuevo.

(37 : 351)

Page 38: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Configuración (III pre-2.0)

Cerramos R y Tinn-R.Si pre-2.0:

I Arrancamos R.I Tinn-R se debería haber arrancadoI (Si ya tenemos arrancado Tinn-R y R se arranca

despues, R usará el Tinn-R arrancado).Si post-2.0

I Arrancamos Tinn-RI Desde menú, lanzamos R

(38 : 351)

Page 39: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Configuración (Tinn-R post-2.0)

(De la documentación)1. Uninstall prior Tinn-R;2. Edit the file Rprofile.site and comment

(or remove) all prior line of configurationRELATED WITH TINN-R;

3. Start R;4. install the packages:4.1. 'Hmisc' and 'R2HTML' and TinnR;4.2. install.packages("svSocket",

repos="http://R-Forge.R-project.org";).5. Close R;6. Install the new version of Tinn-R;7. Start Tinn-R;8. Choice, in Tinn-R main menu, the option

'R/Configure/Permanent (Rprofile.site)'9. Start, inside of Tinn-R, Rgui or Rterm.10. With Tinn-R, read the files. 'Help/Main/Card/HTML' - to know the shortcuts

related with Rterm and all others;. 'Help/Main/Changes/HTML'.

(39 : 351)

Page 40: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

RGui o Rterm?

En post-2.0, si usamos Rterm, input y erroresseparados (output en log). Confuso (para mi): muydistinto a la consola usual.Usaré Rgui.Quitamos el log/IO. (R -> Rterm(interface) -> Interface (show/hide)).Si usamos Rterm: conveniente si foco en el editor(en el mismo menú).

(40 : 351)

Page 41: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Un ejemplo

Tecleemos el código anterior.> x1 <- rnorm(100)> x2 <- rnorm(100)> plot(x1, x2)> rug(x1)

Marcar, ej., las dos primeras líneasVamos a "R" -> "Send to R" -> "Send region" ( o“Send selection (echo = TRUE)” en post 2.0)

(41 : 351)

Page 42: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Configuración (IV)

Más importante: shortcuts. R -> Hotkeys.Yo uso:Send: selection Ctrl + R (pero conflictos en

post-2.0).Send: line Ctrl + L

Uso de shortcuts facilita mucho enviar código a R.

(42 : 351)

Page 43: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Otros

Call tips (Ctrl + D despues de un paréntesis).Match brackets (Ctrl + B).(Los siguientes: ejercicios para casa).R cardR explorerFile browser

(43 : 351)

Page 44: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Configuración

A mi no me gustan las toolbars (quitan espacioprecioso).Return focus after sending to R (Options) (verantes)Options -> Editor -> Show line numbersPodemos hacer que R aparezca encima (en vez dedebajo). Vosotros elegís. (Al menos en pre-2.0).Guardamos la configuración: Tools -> Backup ->System configuration.

(44 : 351)

Page 45: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Problemas con servidor? (versiones Tinn-Rpre-1.19)

Options -> Application -> RProblema potencial con comunicación con servidoren calltip completion.Cambiar el retraso hasta la sincronización.Usar sólo TCP/IP (despues de ponerlibrary(svSocket)).Deshabilitar: ´no afecta a call tips del sistema base,pero si de algunas librerías y nuestras user-definedfunctions.Estos problemas solo parecen darse a veces.

(45 : 351)

Page 46: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Otras cosas útiles de Tinn-R

Comparar ficheros (Tools→ Differences)Organización de proyectos.

(46 : 351)

Page 47: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

JEdit

Hay varios plugins para JEdit. Uno de Zed Shaw,otro de José Claudio Faria y otro de Tobias Elze. Elde JC Faria parece el más reciente. Trucos deinstalación en http://finzi.psych.upenn.edu/R/Rhelp02a/archive/0735.html.Múltiples sistemas operativos (es Java).Pero sólo provee syntax highlighting, no posibilidadde enviar a un running R process. (Podría cambiaren el futuro).

(47 : 351)

Page 48: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

JGR

JGRhttp://stats.math.uni-augsburg.de/JGR/incluye interacción con R, ayuda, calltips, editor ybrowser de objetos, etc.Múltiples sistemas operativos (es Java), aunque yohe tenido problemas en Linux.No permite usar R commanderNo posible el uso de keyboard shortcuts.

(48 : 351)

Page 49: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

¿R con (X)Emacs?

Colorea sintaxis, completa paréntesis, etc.Una interfaz común para R en distintos sistemasoperativos.Una interfaz común para otros paquetesestadísticos (ej., SAS, XLispStat, Arc, etc) ynuméricos (ej., Octave).Pero aunque (X)Emacs es MUCHO más que uneditor...

I (X)Emacs con ESS no es "familiar" para losusuarios de Windows (pero no tanto con lasmodificaciones de J. Fox).

I Problemas no resueltos en interacción R, XEmacs,Windows.

(49 : 351)

Page 50: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

R, ESS, XEmacs (a la J.Fox)

Toda la información (para Windows) está enhttp://socserv.mcmaster.ca/jfox/Books/Companion/ESS/.Para Linux ESS se distribuye en cómodo paquetepara muchas distribuciones. Todo sobre ESS enhttp://stat.ethz.ch/ESS/.Es posible usar ESS y (X)Emacs en Linux de formaparecida a Windows.

(50 : 351)

Page 51: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Eclipse

Eclipse: http://www.eclipse.org/.Plugin enhttp://www.walware.de/goto/statet, porStephan Wahlbrink.Múltiples sistemas operativos (es Java).Pero Eclipse es muy pesado (el fichero a descargarson 100 MB, y tiene un alto consumo de memoria yCPU), la interacción con R no funciona bien enLinux, no existen calltips, y Eclipse tiene suspeculiaridades en cuanto a modus operandi.

(51 : 351)

Page 52: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Sciviews-K

En http://www.sciviews.org/SciViews-K/index.html

Una especie de “cross-platform Tinn-R”.Aun en desarrollo.Si hubiera estado más maduro, habría usado estepara el curso.

(52 : 351)

Page 53: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

RCmdr

En http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/

“A basic statistics GUI”.Permite ver el código generado, para luego reusar yutilizar en nuestros propios programas.Alguna prueba rápida?Para usuarios habituales probablemente no es útil.Incluso para usuarios habituales, de todas formas,algunas entradas “curiosas”.

(53 : 351)

Page 54: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Otros [p. 62]

WinEdt (http://www.winedt.com yhttp://cran.r-project.org/contrib/extra/winedt). Pero WinEdt no es GPL nigratuito (es shareware): problemas de licencia (porej., para nosotros aquí) y no está disponible paraotros sistemas operativos.Coloreado de sintaxis (y completado deparéntesis?) para Vim y Nedit, pero nada similar ala interacción con un buffer con R.Opciones para otros editores (Syn, TextPad,UltraEdit, CrimsonEditor) pero sólo coloreado, noenvío de código (CrimsonEditor sí, concustomización?).

(54 : 351)

Page 55: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Paquetes adicionales [p. 29]-[p. 35]

R consta de un "sistema base" y de paquetesadicionales que extienden la funcionalidad. Distintos"tipos" de paquetes:

Los que forman parte del sistema base (ej. ctest).Los que no son parte del sistema base, pero son"recommended" (ej., survival, nlme). EnGNU/Linux y Windows ya (desde 1.6.0?) formanparte de la distribución estándard.Otros paquetes; ej., car, paquetes de Bioconductor(como multtest, etc). Estos necesitamosseleccionarlos e instalarlos individualmente.

(55 : 351)

Page 56: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Instalación de paquetes adicionales

Depende del sistema operativoWindows:

I Desde la "GUI".I Desde R, con "install.packages()",

“update.packages()”, etc.GNU/Linux:

I "R CMD INSTALL paquete-x.y.z.tar.gz". Permiteinstalar aunque uno no sea root (especificando eldirectorio).

I Más cómodo, desde R, "install.packages()","update.packages()", etc. También permiten instalarno siendo root (especificar lib.loc).

(56 : 351)

Page 57: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Paquetes adicionales: nuestro caso

Tenemos algunos paquetes adicionales en el CDLo más sencillo: usar el menú de R: “Packages” ->“Install packages from local zip file(s)”

(57 : 351)

Page 58: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

¿Qué paquetes están disponibles?

Podemos hacer:> library()

Instalemos alguno de los paquetes en el CD.Otra vez:> search()> library()

Y ahora> detach(2)> search()> library()

Repitamos a nuestro antojo.

(58 : 351)

Page 59: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Actualizando R (Windows)

Instalar R es sencillo. ¿Qué hacemos si hemosinstalado muchos paquetes?La opción más simple (ver también la FAQ paraWindows, q. 2.8):Instalar la nueva versión de R.Copiar todos los paquetes de “/library” de la vieja ala nueva versión (i.e., del viejo al nuevo directorio).Arrancar la nueva versión de R y hacerupdate.packages().Podemos entonces borrar la antigua versión.

(59 : 351)

Page 60: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Actualizando R (Linux)

Depende de la configuración y distribución deLinux.Si usamos Debian, y sólo paquetes de “r-cran-”,entonces basta hacer un apt-get install.Para cualquier distribución podemos usarinstalled.packages, especificando eldirectorio(s) apropiado, si fuera necesario:> paquetes <- installed.packages()[,+ 1]> save(file = "paquetes.RData",+ paquetes)

> paquetes

Ahora tecleariamos q() para terminar la sesion.Arrancamos la nueva versión y:load(“paquetes.RData”)install.packages(“paquetes”)

(60 : 351)

Page 61: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Memoria [p. 35]

Pregunta frecuente, sobre todo para Windows.Sistemas a 32 bits tienen limitación en máximamemoria usable por un proceso.Limitación aún más restrictiva en Windows.Por regla general, máximo usable es 1 GB. Posiblellegar a 3 GB (ver la FAQ, pregunta 2.9 , “Thereseems to be a limit on the memory it uses!”.Si necesitamos más memoria: pasar a sistemas de64 bits, con límites muuuucho mayores.Si 64 bits (ej., AMD Opteron o Intel Itanium) nóteseque NO existen (de momento) versiones de R paraWindows, por falta de compilador apropiado.

(61 : 351)

Page 62: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Configuración y mantenimiento

GUIs

Introducción

Tinn-R

Otros editores y entornos

Paquetes adicionales

Actualizando R

Algunas FAQs habituales

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Compartir datos y programas entreWindows y Linux [p. 37]

Los ficheros con código se pueden abrir tanto enWindows como en Linux. (Todo lo más, algúncaracter raro por la diferente codificación del“newline”).Pero, los ficheros RData guardados en una versiónde R para Windows se pueden abrir en R paraLinux, y viceversa.Esto es una funcionalidad excepcional: permite quepuedan enviarse y compartirse ficheros conidependencia del sistema operativo.

(62 : 351)

Page 63: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

R: lenguajeObjectos: tipos, atributos, nombresListasNA et al.Vectores de caracteresFactoresAtributos de los objetosOperadoresGeneración de secuenciasOrdenación e indexación de vectoresMatrices y arraysdata framesTablasLa family applyClases S3 y S4

(63 : 351)

Page 64: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Tipos de objetos (I) [OJO: cambios]

(Casi) todo en R es un objeto.vector Colección ordenada elementos del mismotipo.> x <- c(1, 2, 3)> y <- c("a", "b", "Hola")> z1 <- c(TRUE, TRUE, FALSE)

Podemos acceder a esos elementos (más detallesluego).> x[1]> x[3]> y[2]> z1[3]

array Generalización multidimensional de vector.Elementos del mismo tipo. Varias columnas (o filas)de vectores.

(64 : 351)

Page 65: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Tipos de objetos (II)

data frame Como array, pero permiten elementos(columnas) de distintos tipos. El objeto máshabitual para manejo de datos procedentes deexperimentos.

> my.data.frame <- data.frame(ID = c("samp1",+ "samp2", "samp3"),+ variable1 = c(10, 25,+ 33), subj2 = c(NA,+ 34, 15), sitio1 = c(TRUE,+ TRUE, FALSE), loc = c(1,+ 30, 125))

(65 : 351)

Page 66: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Tipos de objetos (III)

funciones Código.factor Un tipo de vector para datos categóricos.list Un "vector generalizado". Cada lista estáformada por componentes (que pueden ser otraslistas), y cada componente puede ser de un tipodistinto. Son unos "contenedores generales".

> (listaA <-+ list(un.vector = 1:10,+ una.palabra = "Hola",+ una.matriz = matrix(rnorm(20),+ ncol = 5),+ otra.lista = c(a = 5,+ b = factor(c("a", "b")))))

(66 : 351)

Page 67: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

> listaA[[1]]> listaA[[1]][4]> listaA$otra.lista

(67 : 351)

Page 68: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Listas

Las data.frames son, en realidad, tipos especialesde listas.Las listas son contenedores sin estructuradeterminada.Por tanto muy flexibles, pero sin estructura.Muchas funciones devuelven listas: devuelven unconjunto de resultados de distinta longitud y distintotipo.

(68 : 351)

Page 69: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

> d3 <- data.frame(g1 = runif(10),+ g2 = rnorm(10),+ id1 = c(rep("a", 3),+ rep("b", 2),+ rep("c", 2),+ rep("d", 3)))> my.fun <- function(x) {+ las.medias <- mean(x[, -3])+ las.vars <- var(x[, -3])+ max.total <- max(x[, -3])+ tabla.clases <- table(x[, 3])+ return(list(row.means = las.medias,+ row.vars = las.vars,+ maximum = max.total,+ factor.classes = tabla.clases))+ }> my.fun(d3)

(69 : 351)

Page 70: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

> una.lista <- my.fun(d3)> una.lista> attributes(una.lista)> names(una.lista)> length(una.lista)> una.lista[[4]]> una.lista[4]> una.lista$factor.classes> una.lista[[3]] <- list(NULL)> una.lista> una.lista[[3]] <- NULL> una.lista> unlist(una.lista)> otra.lista <- list(cucu = 25,+ una.lista)> otra.lista[["cucu"]]> unlist(otra.lista)> unlist(otra.lista, recursive = FALSE)> una.lista <- c(una.lista,+ otro.elemento = "una frase")

(70 : 351)

Page 71: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

NA, NaN, Inf

"NA" es el código de "Not available".> v <- c(1:3, NA)> is.na(v)> which(is.na(v))> v == NA

Lo último no funciona!Sustituir NA por, p.ej., 0:> v[is.na(v)] <- 0

Infinito y NaN (not a number). Son distintos de NA.> 5/0> -5/0> 0/0> is.infinite(-5/0)> is.nan(0/0)> is.na(5/0)

(71 : 351)

Page 72: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Quitar “NA” al evaluar la media:> xna <- c(1, 2, 3, NA, 4)> mean(xna)> mean(xna, na.rm = TRUE)

Lo mismo con otras funciones.Para "modelling functions" (ej., lm) lo mejor es usar"na.omit" o "na.exclude" ("na.exclude" másconveniente para generar predicciones, residuos,etc).Eliminar todos los NA:> XNA <- matrix(c(1, 2, NA, 3, NA, 4),+ nrow = 3)> XNA> X.no.na <- na.omit(XNA)> X.no.na> complete.cases(XNA)

Ojo: hemos creado nuestra matriz poniendo NA, no“NA”.

(72 : 351)

Page 73: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Vectores de caracteres

> codigos <- paste(c("A", "B"), 2:3, sep = "")> codigos> codigos <- paste(c("A", "B"), 2:3, sep = ".")> codigos> juntar <- paste(c("una", "frase", "tonta"),+ collapse ="")> juntar> columna.a <- LETTERS[1:5]> columna.b <- 10:15> juntar <- paste(columna.a, columna.b,+ sep ="")

(73 : 351)

Page 74: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Dividiendo un vector de caracteres

Ejemplo strsplit más adelante ( Ver“Dividiendo un vector de caracteres” ).

(74 : 351)

Page 75: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Extraer y reemplazar caracteres

> substring("abcdef",2,4)> x <- paste(LETTERS[1:5], collapse="")> x> substring(x, 3, 4) <- "uv"> x> x <- paste(LETTERS[1:5], collapse="")> substring(x, 3, 5) <- "uv"> x> x <- paste(LETTERS[1:5], collapse="")> substring(x, 3, 4) <- "uvwxyz"> x> x <- paste(LETTERS[1:5], collapse="")> (letras.indiv <- substring(x,+ 1:nchar(x),+ 1:nchar(x)))> which(letras.indiv == "D")> substring(x,+ 1:nchar(x),+ 2:(nchar(x) + 1))> ?substr

(75 : 351)

Page 76: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Ver grep, pmatch, match, tolower,toupper, sub, gsub, regexpr.Ver “Expresiones regulares con R” .

(76 : 351)

Page 77: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Factores

> codigo.postal <- c(28430,+ 28016, 28034)> mode(codigo.postal)

Pero no deberíamos usar el código postal en, porej., un ANOVA, como si fuera un vector numérico.El usar códigos (aparentemente) numéricos enanálisis estadísticos es una frecuente fuente deerrores.> codigo.postal <- factor(codigo.postal)

Si tenemos un vector con caracteres, y lo queremosusar para un análisis, necesitamos convertirlo enun factor. Si no, R, sabiamente, no se deja.> y <- rnorm(10)> x <- rep(letters[1:5],+ 2)> aov(y ~ x)> aov(y ~ factor(x))

(77 : 351)

Page 78: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

A veces, al leer datos, un vector de números seconvierte en factor. O queremos convertir un vectorfactor en numérico.> x <- c(34, 89, 1000)> y <- factor(x)> y> as.numeric(y)> y

No hace lo que queremos. Los valores han sidorecodificados. ¿Por qué?> as.numeric(as.character(y))> as.numeric(levels(y))[as.integer(y)]

Vamos a destripar lo anterior . . .

(78 : 351)

Page 79: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

orden y niveles de factores

Podemos fijar el orden de las etiquetas.> ftr1 <- factor(c("alto", "bajo", "medio"))> ftr1> ftr1 <- factor(c("alto", "bajo", "medio"),+ levels = c("bajo", "medio",+ "alto"))

Ver también relevel para escoger nivel dereferencia.

(79 : 351)

Page 80: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

reorder

Podemos rerodenar de acuerdo con el valor de unavariable.Primero, ordenemos en función de la mediana defrecuencia.> (d1 <- data.frame(f1 = factor(c("a",+ "b", "a", "b", "c",+ "b", "c", "c", "b")),+ count = c(11, 3, 14,+ 2, 8, 19, 16, 15,+ 9)))> d1$f1> (bymedian <- with(d1, reorder(f1,+ count, median)))

Y si no tenemos conteos como tal, y además loqueremos en orden decreciente?> reorder(d1$f1, rep(1, length(d1$f1)),+ function(x) -length(x))

(80 : 351)

Page 81: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Niveles no usados

> f1 <- factor(letters[1:8])> f2 <- f1[1:4]> f1> f2> f2[drop = TRUE]> table(f2)> levels(f2)> table(f2[drop = TRUE])> levels(f2[drop = TRUE])> table(factor(f2))> levels(factor(f2))

(81 : 351)

Page 82: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Combinar factores

> f1 <- factor(letters[1:8])> f2 <- factor(letters[9:16])> (f3 <- c(f1, f2))> (f4 <- factor(c(levels(f1)[f1],+ levels(f2)[f2])))> (f5 <- factor(c(as.character(f1),+ as.character(f2))))> (f6 <- interaction(f1,+ f2))> (f7 <- expand.grid(f1,+ f2))

(82 : 351)

Page 83: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

R también cuenta con "ordered factors". Sólodifieren de los factors "normales" en algunosanálisis (tipo de contrastes usados con modeloslineales —treatment vs. polinomial). No lo veremos.Como medida de "higiene mental y analítica"convirtamos en factores lo que debe serlo.Eliminará muchos errores y es "buena prácticaestadística".

(83 : 351)

Page 84: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Para discretizar datos: usar cut.Ver también split(x, f): divide datos del vectorx usando los grupos definidos en f.pretty para elección automática de puntos decorte.

(84 : 351)

Page 85: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Atributos de los objetos

> x <- 1:15> length(x)> y <- matrix(5, nrow = 3,+ ncol = 4)> dim(y)> is.vector(x)> is.vector(y)> is.array(x)> mode(x)> mode(y)> attributes(y)> z <- c(TRUE, FALSE)> mode(z)

(85 : 351)

Page 86: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

> w <- list(a = 1:3, b = 5)> attributes(w)> y <- as.data.frame(y)> attributes(y)> f1 <- function(x) {+ return(2 * x)+ }> attributes(f1)> is.function(f1)> x1 <- 1:5> x2 <- c(1, 2, 3, 4, 5)> typeof(x1)> typeof(x2)

Los atributos podemos verlos, pero tambiénpodemos cambiarlos (luego un ejemplo).

(86 : 351)

Page 87: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Nombres de objetos

Los nombres válidos para un objeto soncombinaciones de letras, números, y el punto (".").Los nombres no pueden empezar con un número.R es "case-sensitive". x != X.Hay nombres reservados ("function", "if", etc).Otras consideraciones:

I El uso del "." es diferente al de C++.I Mejor evitar nombres que R usa (ej., "c"’) (pero no

es dramático si nos confundimos: podemosarreglarlo).

(87 : 351)

Page 88: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

> c <- 4> c> rm(c)> c

Las asignaciones se hacen con "<-" (o con “=”), yes buen estilo el rodear "<-" por un espacio a cadalado.x <- 1:5x<-1:5

(88 : 351)

Page 89: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Asignaciones: una crítica injusta, un casopeculiar, y los paréntesis

Qué hace esto?a<-1a

Para los que usamos <-: está claro que se haasignado 1 a “a”.Los que usan = podrían intentar evaluar si “a esmenor que -1”. Pero es ambiguo.Si queremos comparar “a” con -1, entonces:a< -1 oa < (-1); este es mucho mejor (no depende deespacios pobremente usados).

(89 : 351)

Page 90: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Las "reglas" habituales de nombrar objetos enprogramación (usar estilo consistente, usorazonable del ".", nombres que tengan sentido—equilibrio entre longitud y frecuencia de uso, etc).Por ej., suelo nombrar data frames con la inicial enmayúscula, pero las variables siempre enminúscula. Si varias funciones hacen cosasparecidos a objetos distinto, separo con "." (másfácil luego usar clases).Sobre el uso de ";". No es bueno abusar, porquehace el código muy difícil de leer.

(90 : 351)

Page 91: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

¿Qué es este objeto?

> x> y> zz <- matrix(rnorm(10000),+ ncol = 100)> head(zz)> tail(zz)> head(d3)> tail(d3)> str(d3)> otra.lista> summary(otra.lista)> str(otra.lista)> ls.str()

(91 : 351)

Page 92: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Operaciones aritméticas con vectores (I)

FUNDAMENTAL: R puede operar sobre vectoresenteros de un golpe.> x <- 1:10> y <- x/2> z <- x^2> w <- y + z

Si un elemento es más corto, se "recicla". Es"intuitivo" si la operación es escalar con vector.Pero también ocurre en operaciones entre vectores.> x + 15> x2 <- 1:3> x + x2

El reciclado cuando (vector, escalar) suele ser loque queremos. Entre vectores no siempre:cuidado. (R da un warning, de momento –S4classes dan un error).

(92 : 351)

Page 93: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Operaciones aritméticas con vectores (II)

Operar sobre vectores enteros es MUCHO MEJORque usar loops:

I Mucho más claro:I Es la forma natural de operar sobre objetos enteros.I Código más fácil de entender.I Más sencillo de modificar y mantener.I Más fácil hacer debugging.I Más rápido de escribir (y no sólo porque muchas

menos líneas!).I Más eficiente (en tiempo y memoria).

(93 : 351)

Page 94: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Operaciones aritméticas con vectores (III)

+, -, *, /, ∧, %%, %/%.log, log10, log2, log(x, base), exp,sin, cos, tan, sqrt

Otras:I max, min, range, mean, var, sd, sum,prod

I which.max, which.minI > x <- c(3, 1, 9, 5)

> which.min(x)> which.max(x)

I Y si hacemos> which(x == min(x))

I Menos eficiente. Y los reales?

(94 : 351)

Page 95: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

pmax, pmin. max and min devuelven el máximo yel mínimo de un conjunto de números; devuelvenun solo número aunque les pasemos variosvectores. pmax, pmin devuelven un vector quecontiene el elemento max, min en esa posición.> xa <- c(1, 4, 3, 2)> xb <- c(2, 2, 1, 3)> xc <- c(1, 9)> pmin(xa, xb)> pmin(xa, xc)> pmax(xa, xb, xc)

cumsum, cumprod, diff.

(95 : 351)

Page 96: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Operadores comparativos y lógicos

<, >, <=, >=, ==, !=

!, &, |, xor() y los parecidos &&, ||> x <- 5> x < 5> x >= 5> x == 6> x != 5> y <- c(TRUE, FALSE)> !y> z <- c(TRUE, TRUE)> xor(y, z)> y & z> y | z> y || z> y && z

(96 : 351)

Page 97: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Operadores comparativos y lógicos

Las formas &&, || son "short-circuit operators":en if statements. Con vectores de longitud uno.Sólo evaluan el segundo argumento si es preciso.> x <- c(24, 25)> if (is.numeric(x) && min(x) >+ 0) {+ print("las dos cond. satisfechas")+ }> x <- "a"> if (is.numeric(x) && min(x) >+ 0) {+ print("las dos cond. satisfechas")+ }

min(x) no tiene sentido si x no es numérico.> min(x)

(97 : 351)

Page 98: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Más sobre comparaciones lógicas

Recordemos: “TRUE” se toma como 1, “FALSE”como 0.> x <- c(1, 2, 3, 4, 5> y <- (x < 3)> y> sum(y)> sum(!y)> y * 2> sum(3 * y)> as.numeric(y)> mode(y) <- "numeric"

(98 : 351)

Page 99: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

¿Y si hubiéramos hecho muchas comparaciones?> x <- rnorm(1000)

¿Hay alguno mayor que 1?¿Son todos menores que 1000?> any(x > 1)> all(x < 1000)> all(x < 1)

(99 : 351)

Page 100: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Interludio: comparando números reales

De la FAQ, 7.31. “Why doesn’t R think thesenumbers are equal?”Sólo los enteros (y fracciones cuyo denominador esuna potencia de 2) se pueden representarexactamente.Todos los demás son redondeados.Todos los demás incluyen cosas como 2/17, o 1.0.Por tanto “ two floating point numbers will notreliably be equal unless they have been computedby the same algorithm, and not always even then.For example “> a <- sqrt(2)> a * a == 2> a * a - 2

(100 : 351)

Page 101: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Para comparar números reales podemos usarall.equal.Una referencia clásica: David Goldberg (1991),“What Every Computer Scientist Should KnowAbout Floating-Point Arithmetic”, ACM ComputingSurveys, 23, 5 http://docs.sun.com/source/806-3568/ncg_goldberg.html.

(Problemas causados por la comparación indebidade números reales son habituales en las listas deR.)

(101 : 351)

Page 102: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Operaciones de conjuntos

> x <- 1:5> y <- c(1, 3, 7:10)> union(x, y)> intersect(x, y)> setdiff(y, x)> v <- c("bcA1", "bcA2", "blX1")> w <- c("bcA2", "xA3")> union(v, w)> intersect(v, w)> setdiff(w, v)> setdiff(v, w)

(102 : 351)

Page 103: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Generación de secuencias aleatorias

Muestrear un vector (imprescindible enbootstrapping y cross-validation):> sample(5)> sample(5, 3)> x <- 1:10> sample(x)> sample(x, replace = TRUE)> sample(x, size = 2 * length(x),+ replace = TRUE)> probs <- x/sum(x)> sample(x, prob = probs)

(103 : 351)

Page 104: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Ej: validación cruzada

Validación cruzada con aprox. mismo número encada grupo. (De Venables y Ripley, "Sprogramming", p. 175).¿Qué es validación cruzada?> x2 <- rnorm(200)> N <- length(x2)> knumber <- 10> index.select <- sample(rep(1:knumber,+ length = N), N, replace = FALSE)

(104 : 351)

Page 105: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Número aleatorios

Números aleatorios: usarrFuncionDistribucion (con sus parámetros).> rnorm(10)> rnorm(10, mean = 13, sd = 18)> runif(15)> runif(8, min = 3, max = 59)

Muchas funciones de distribución:lognormal, t, F, χ2, exponential, gamma, beta,poisson, binomial, etc. Ver, por ejemplo, sección8.1 (p. 33) de An introduction to R y p. 17 de R forbeginners, de E. Paradis. (Con esas funcionespodemos también obtener la densidad, quantiles yfunción cumulativa de todas estas distribuciones).

(105 : 351)

Page 106: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Generación de secuencias: seq

> x <- c(1, 2, 3, 4, 5)> x <- 1:10> y <- -5:3> x <- seq(from = 2, to = 18,+ by = 2)> x <- seq(from = 2, to = 18,+ length = 30)> x <- 5:10> y <- seq(along = x)> z2 <- c(1:5, 7:10, seq(from = -7,+ to = 5, by = 2))

(106 : 351)

Page 107: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

seq: otras formas

seq.int, seq_along, seq_with pueden sermucho más rápidas que seq.> x <- rnorm(100)> seq.int(1, 15)> seq_along(x)> seq_len(17)

(107 : 351)

Page 108: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Generación de secuencias: rep, gl,expand.grid

> rep(1, 5)> x <- 1:3> rep(x, 2)> y <- rep(5, 3)> rep(x, y)> rep(1:3, rep(5, 3))> rep(x, x)> rep(x, length = 8)> help(gl)> gl(3, 5)> gl(4, 1, length = 20)> gl(3, 5, label = c("Sano",+ "Enfermo", "Muerto"))> expand.grid(edad = c(10,+ 18, 25), sexo = c("Macho",+ "Hembra"), loc = 1:3)> (z5 <- c(1:5, rep(8, 3)))

(108 : 351)

Page 109: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Analizando secuencias

Identificar cambios en secuencias y saber quéelementos son únicos.> (z51 <- c(1, 1, 1, 7, 7,+ 3, 9, 9, 7, 7, 7, 7,+ 15, 7, 7))> rle(z51)> rle.z51 <- rle(z51)> which((rle.z51$values ==+ 7) & (rle.z51$lengths ==+ 4))> unique(z51)> duplicated(z51)

(109 : 351)

Page 110: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Indexación de vectores

Una de las gran virtudes de R es la flexibilidad en elacceso a los elementos (de vectores, arrays, dataframes, etc).> x <- 1:5> x[1]> x[3]> x[x > 3]> x > 3> y <- x > 3> y <- (x > 3)> x[y]> x[-c(1, 4)]> y <- c(1, 2, 5)> x[y]

Podemos nombrar los componentes:> names(x) <- c("a", "b",+ "c", "d", "patata")> x[c("b", "patata")]

(110 : 351)

Page 111: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Podemos indexar un vector de cuatro formas:I Un vector lógico.I Un vector de enteros (integers) positivos.I Un vector de enteros negativos.I Un vector de cadenas de caracteres (character

strings).

También, por supuesto, podemos indexar un vectorusando cualquier expresión o función que resulteen una de las cuatro anteriores.No solo podemos acceder (devolver) el/los valores,sino también asignarlos:> x[c(1, 3)] <- c(25, 79)> x[x > 3] <- 97

(111 : 351)

Page 112: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Ordenando vectores

> x1 <- c(5, 1, 8, 3)> order(x1)> sort(x1)> rank(x1)> x1[order(x1)]> x2 <- c(1, 2, 2, 3, 3,+ 4)> rank(x2)> min(x1)> which.min(x1)> which(x1 == min(x1))> y <- c(1, 1, 2, 2)> order(y, x1)

order y sort admiten "decreasing = TRUE".

(112 : 351)

Page 113: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Matrices y arrays (I)

Generalizaciones de vectores. Nos centraremos enarrays de 2 dimensiones, pero podemos usar unnúmero arbitrario. Con dos dimensiones, array ymatrix proveen similar funcionalidad, pero matrixes más cómoda.column-major-order, como en FORTRAN.> array(9, dim = c(5, 4))> matrix(1:20, nrow = 5)> matrix(1:20, nrow = 5,+ byrow = TRUE)

Crear a partir de vector, via modificación deatributos:> a1 <- 1:20> dim(a1) <- c(5, 4)> a1

(113 : 351)

Page 114: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Matrices y arrays (II)

Indexado de arrays es similar a vectores.> a1[1, 4]> a1[1, ]> a1[, 2]> a1[c(1, 3), c(2, 4)]

(114 : 351)

Page 115: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Podemos usar los cuatro métodos para vectores ytambién indexar con una matriz. En la matriz conlos índices cada fila extrae un elemento; su fila(primera dimensión) se especifica por el elementoen la primera columna, y su columna por elelemento en la segunda columna.> im <- matrix(c(1, 3, 2,+ 4), nrow = 2)> im> a1[im]

¿Por qué difiere de> a1[c(1, 3), c(2, 4)]

?El indexado con matrices se extiende también aarrays de más dos dimensiones.

(115 : 351)

Page 116: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Del libro de P. Spector (con algún cambio)> (mat <- matrix(c(1, 1, 11,+ 1, 2, 7,+ 2, 1, 9,+ 2, 2, 16,+ 3, 1, 12,+ 3, 2, 15),+ byrow = TRUE,+ ncol = 3))> (newmat <- matrix(NA, 3, 2))> (newmat[mat[, 1:2]] <- mat[, 3])

(116 : 351)

Page 117: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Ordenar un array usando una de las columnas:> (o.array <- matrix(rnorm(20), ncol = 4))> (o.array <- o.array[order(o.array[, 1]), ])

Selección aleatoria de filas:> (sa1 <- sample(1:dim(o.array)[1],+ replace = TRUE))> o.array[sa1, ]

Podemos hacerlo directamente, sin sal.> o.array[sample(1:dim(o.array)[1],+ replace = TRUE), ]

(117 : 351)

Page 118: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Matrices y arrays (III)

Y si seleccionamos sólo una fila o columna?> a1[1, ]

Para evitar "dropping indices" usar> a1[1, , drop = FALSE]> a1[, 3, drop = FALSE]

Esto mismo se aplica a arrays de más de dosdimensiones."drop = FALSE" generalmente debe usarse, deforma defensiva, cuando escribamos funciones (sino, nos encontraremos con errores como> a2 <- a1[, 1]> apply(a2, 2, mean)

(118 : 351)

Page 119: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Operaciones matriciales: muchas disponiblesincluyedo factorizaciones como svd y qr,determinantes, rango, solución de sistemas, etc.Sólo mencionamos diag, producto dematrices (%*%), traspuesto (t),crossprod:

(119 : 351)

Page 120: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Matrices rbind, cbind y otros

Para combinar vectores o arrays para obtenerarrays, usamos rbind, cbind.> x1 <- 1:10> x2 <- 11:20> cbind(x1, x2)> (a2 <- matrix(round(rnorm(30),+ 2), nrow = 5))> a1> cbind(a1, a2)> rbind(a1, a2)

(120 : 351)

Page 121: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Las matrices tiene atributos. En particular:> attributes(a1> colnames(a1) <- paste("v",+ 1:4, sep = "")> rownames(a1) <- paste("id",+ 1:5, sep = ".")> a1[, c("v1", "v3")]> attributes(a1)> colnames(a1) <- NULL

Eliminar nombres de filas y columnas (dropping) aveces aumenta velocidad de algunosprocedimientos (accesos a “named components”pueden ser más lentos).“Dropping col and row names” sólo justificado enocasiones.

(121 : 351)

Page 122: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Matrices: de carácter a numérico

Un ejemplo de uso de atributos. Si directamenteusamos “as.numeric” se pierden las dimensions.(De Bert Gunter en R-help, 2008-06-17).> my.matrix <- matrix(as.character(1:10),+ ncol = 2)> my.matrix> (my.matrix2 <- as.numeric(my.matrix))> storage.mode(my.matrix) <- "double"> my.matrix

(122 : 351)

Page 123: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

data frames

Y si son de distinto tipo?> cbind(1:10, letters[1:10])

No es eso lo que quiero. Quizás quería undata.frame> data.frame(1:10, letters[1:10])> (df1 <- data.frame(x1 = 1:10,+ x2 = letters[1:10]))

El indexado y subsetting de data frames como el dearrays y matrices Y como el de listas.> df1[, c(1, 2)]> df1[, c("x1", "x2")]> df1[, -3]> df1[["x1"]]> df1["x1"]> df1[2]> df1[[2]]

Al hacer data.frame, "character vectors" convertidosa factores (una ventaja).

(123 : 351)

Page 124: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

de arrays a data frames

Podemos convertir matrices a data frames conas.data.frame().Por estas razones, las data frames suelen serobjetos más útiles que las arrays. Permiten lomismo que las arrays, pero se puedeguardar/acceder a otra información.Las data.frames también tienen rownames,colnames.> attributes(df1)

Pero nosotros no habíamos fijado los row.namesTambién> dimnames(df1)

(124 : 351)

Page 125: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

... y de data frames a arrays

> data.matrix(df1)> as.matrix(df1)> df1

¿Y aquí que pasa?> (a9 <- cbind(1:10, letters[1:10]))> (a9 <- data.frame(a9))> data.matrix(a9)> as.matrix(a9)

(125 : 351)

Page 126: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Ordenar data frames

(Modificado de la ayuda de “order”)> x <- c(1, 1, 3:1, 1:4,+ 3)> y <- c(9, 9:1)> z <- c(2, 1:9)> (dd <- data.frame(x, y,+ z = factor(z, labels = LETTERS[9:1])))> (dd[order(x, -y, z), ])> (dd[do.call(order, dd),+ ])> (dd[order(x, y, z), ])

Y qué hace do.call?

(126 : 351)

Page 127: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

data.frames: $ y attach

Usar $ facilita el acceso y creación de nuevascolumnas.(recordad d1: lo usaremos un ratito)> d1 <- data.frame(g1 = 1:10,+ g2 = 31:40)> d1$edad <- c(rep(20, 5),+ rep(40, 5))> d2 <- cbind(g1 = 1:10,+ g2 = 31:40)> d2[, 3] <- c(rep(20,+ 5), rep(40, 5))> d2 <- cbind(d2, edad = c(rep(20,+ 5), rep(40, 5)))

(127 : 351)

Page 128: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Si usamos mucho los datos de un data.frame,podemos acceder a ellos directamente:> attach(d1)> g1> edad> plot(g1, g2)> detach(d1)

en vez de> plot(d1$g1, d1$g2)

Pero frecuentemente mejor hacer> plot(g2 ~ g1, data = d1)> with(d1, plot(g1, g2))

(128 : 351)

Page 129: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Precauciones con attach()

Con attach() ponemos el data frame nombradoen el search path (en la posición 2).Cierto cuidado, por masking.> attach(d1)> edad <- 25> edad> search()

Además, la actualización no es dinámica:Y podemos no entender lo que pasa . . .> d1$g3 <- "nueva columna"> d1> g3> detach(> attach(d1)> g3> edad> detach(d1)

(129 : 351)

Page 130: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

En general (y sobre todo en análisis que se prolonganen el tiempo) mejor evitar attach() y acceder siemprea las variables usando su localización explícita ycompleta.

(130 : 351)

Page 131: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

subset

> d1$id1 <- c(rep("a", 3),+ rep("b", 2), rep("c",+ 2), rep("d", 3))> d1

Los casos (filas) cuyo "id1" no es ni "a" ni "b"> d1[!(d1$id1 %in% c("a", "b")), ]

O usar subset> subset(d1, !(id1 %in% c("a", "b")))

(131 : 351)

Page 132: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Por supuesto, podemos usar reglas más complejas(ej., que sea igual a una variable, distinto en otra, yno missing en una tercera).subset también permite la selección de variables(columnas); el argumento "select" (con signonegativo para eliminar variables):> subset(d1, !(id1 %in% c("a", "b")),+ select = -g2)

(132 : 351)

Page 133: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

aggregate, etc

Escenario: un data frame; varias réplicas de lamisma especie (especie); queremos "colapsar" porespecie. Si es una variable numérica, hallar lamediana; si categórica, sólo debería haber un valor(el nombre de la especie y el investigador)

> colapsar <- function(x) {+ if (is.numeric(x))+ return(median(x,+ na.rm = TRUE))+ else return(as.character(x[1]))+ }

(133 : 351)

Page 134: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

aggregate

(Nuestro primer ejemplo de built-in data. Másdetalles en “Cargando built-in data” )> data(iris)> help(iris)> summary(iris)> aggregate(iris, list(id = iris[, "Species"]),+ FUN = colapsar)

Nos molesta la primera o última columna? Perosirve para asegurarse de que ha hecho lo quequeríamos.> aggregate(iris, list(id = iris[, "Species"]),+ FUN = colapsar)[, -1]

(134 : 351)

Page 135: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Y si alguna de las variables categóricas más de unvalor por especie?> iris2 <- iris> iris2$Investigador <-+ sample(LETTERS, 150, replace = TRUE)> head(iris2)> aggregate(iris2,+ list(id = iris2[, "Species"]),+ FUN = colapsar)

(135 : 351)

Page 136: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Necesitamos otra función (pero usamos el mismonombre; ¿es razonable?)> colapsar <- function(x) {+ if(is.numeric(x))+ return(median(x, na.rm = TRUE))+ else {+ tmp <- unique(x)+ if(length(tmp) > 1) return("Varios!")+ else return(as.character(tmp[1]))+ }+ }> aggregate(iris2,+ list(id = iris2[, "Species"]),+ FUN = colapsar)

(136 : 351)

Page 137: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

reshape, stack, unstack

Operaciones de “estirar”, “apilar” data frames."Estirar" es necesario, por ej., para análisis (lm).> en.columnas <- data.frame(sp1 = 1:5,+ sp2 = 11:15, sp3 = 21:25)> (apilado <- stack(en.columnas))> unstack(apilado)

Y si otro objeto más complicado?iris ya está estirado. Intentemos unstack> unstack(iris)> help(iris> (iris.un <- unstack(iris,+ form = Sepal.Length ~+ Species))> stack(iris.un)

La ayuda . . . realmente sirve.

(137 : 351)

Page 138: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

reshape mucho más flexible (y con muchos másargumentos, y mucho más complicada). Ejemplode la ayuda> summary(Indometh)> head(Indometh)> (wide <- reshape(Indometh,+ v.names = "conc", idvar = "Subject",+ timevar = "time", direction = "wide"))> reshape(wide, direction = "long")

Esta tarea es intrínsecamente complicado(intentadlo con Excel!)Para unir “inteligentemente” data frames porcolumnas/filas comunes: ver “merge” .

(138 : 351)

Page 139: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Combinar data frames: cbind, rbind.

(Seguimos con iris pero lo hacemos manejable)> (iris0 <- iris[c(1, 2, 3,+ 51, 52, 53,+ 101, 102, 103),+ c(1, 2, 5)])> iris2 <- iris0> iris2$Species <- factor(iris2$Species,+ labels = c("A2",+ "B2", "C2"))> iris2

(139 : 351)

Page 140: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

> rbind(iris0, iris2)> rbind(iris0,+ c(Sepal.Length = 13,+ Sepal.Width = 17,+ Species = "AA"))> rbind(iris0,+ data.frame(Sepal.Length = 13,+ Sepal.Width = 17,+ Species = "AA"))

Por supuesto, al usar rbind y cbind lasdimensiones tienen que ser apropiadas (mismonúmero de columnas –rbind– o filas –cbind)

(140 : 351)

Page 141: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

by

aggregate usa una función que devuelve solo unescalar. ¿Y si queremos otra cosa? by> by(iris0, iris0$Species,+ summary)> (ob1 <- by(iris0[, -3],+ iris0$Species, summary))> iris0$localidad <- factor(c(rep("L1",+ 4), rep("L2", 5)))> (ob2 <- by(iris0[, -3],+ list(iris0$Species,+ iris0$localidad),+ summary))

aggregate, by, relacionadas con tapply (másadelante).

(141 : 351)

Page 142: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

table

(From MASS, p. 38)Una tabla(Ahora un ratito con quine, otro built-in datapopular).> library(MASS)> data(quine)> help(quine)> attach(quine)> (tt1 <- table(Sex))> (tt2 <- table(Sex, Age))> detach(quine)

(142 : 351)

Page 143: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

De tablas a data frames

> as.data.frame(tt1)> as.data.frame(tt2)> v1 <- c(rep(1, 5),+ rep(2, 4),+ rep(3, 2),+ rep(4, 9))> v2 <- c(rep("a", 5),+ rep("b", 6),+ rep("c", 9))> table(v1, v2)> ## fijarse en valores con entradas de 0> ## queremos preservarlas en el data frame?> as.data.frame(table(v1, v2))

(143 : 351)

Page 144: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Márgenes y proporciones

> addmargins(tt2, 1)> addmargins(tt2, 2)> addmargins(tt2, c(1, 2))> prop.table(tt2)> prop.table(tt2, 1)> prop.table(tt2, 2)> addmargins(prop.table(tt2))> addmargins(prop.table(tt2, 1), 2)> addmargins(prop.table(tt2, 2), 1)

(144 : 351)

Page 145: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Más de dos dimensiones y xtabs

> quine2 <- quine[, 1:3]> table(quine2)> ftable(quine2)> xtabs(~ Age + Sex, data = quine)> xtabs(~ Age + Sex + Eth, data = quine)> as.data.frame(xtabs(~ Age + Sex + Eth,+ data = quine))

(145 : 351)

Page 146: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Más xtabs

> (t1 <- xtabs(~Age + Lrn,+ data = quine))> as.data.frame(t1)> xtabs(Freq ~ Age + Lrn,+ data = t1)

(146 : 351)

Page 147: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

La familia apply

> ax <- matrix(1:12, ncol = 4)> ax[2, 3] <- NA> ax> colnames(ax) <- LETTERS[1:4]> rownames(ax) <- 1:3> apply(ax, 1, mean)> apply(ax, 1, mean, na.rm = TRUE)> rowMeans(ax, na.rm = TRUE)> rowSums(ax, na.rm = TRUE)

(147 : 351)

Page 148: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Podemos pasar una función definida al vuelo.> apply(ax, 1,+ function(x) mean(x) - 20)> apply(ax, 1,+ function(x) mean(x, na.rm = TRUE) - 20)

Pero ojo si pasamos una función vectorizada> apply(ax, 1, function(x){return(2*x)})

(148 : 351)

Page 149: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

> media.por.columna <- apply(ax,+ 2, mean, na.rm = TRUE)> colMeans(ax, na.rm = TRUE)> (sample.rows <- t(apply(ax,+ 1, sample)))> dos.cosas <- function(y) {+ return(c(mean(y, na.rm = TRUE),+ var(y, na.rm = TRUE)))+ }> apply(ax, 1, dos.cosas)> t(apply(ax, 1, dos.cosas))

(149 : 351)

Page 150: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Operar con apply generalmente mucho máseficiente que loops (además de más claro, másfácil, etc, etc).apply conserva los nombres de filas y columnas, siexisten.sapply, lapply son como apply pero no hayque especificar el "margin"; sapply intentasimplificar el resultado a un vector o a una matriz(la "s" es de "simplify"), pero lapply siempredevuelve una lista. Ambas pueden aplicarse avectores, listas, arrays.

(150 : 351)

Page 151: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

sapply, lapply

Ligges and Fox, in R News, 2008, 8 (1), p. 47.> (A <- matrix(1:4, 2, 2))> (B <- matrix(5:10, 2, 3))> (L <- list(A, B))> lapply(L, function(x) x[, 2])> sapply(L, function(x) x[, 2])> t(sapply(L, function(x) x[, 2]))

(151 : 351)

Page 152: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Esto se puede hacer con replicate pero yo prefierosapply, pues es una cosa menos a recordar (peronotese los “dummy” indices).> sapply(1:10, function(x) mean(rnorm(100)))> sapply(1:10,+ function(x, sigma)+ mean(rnorm(100)), sigma = 4)

(152 : 351)

Page 153: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

tapply

(De MASS, p. 38)> library(MASS)> data(quine)> attach(quine)> tapply(Days, Age, mean)> tapply(Days, list(Sex, Age), mean)> tapply(Days, list(Sex, Age),+ function(y) sqrt( (var(y)/length(y))))> detach(quine)

(153 : 351)

Page 154: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Podemos devolver objetos que no son escalares> data(quine)> attach(quine)> (tap1 <- tapply(Days, Sex,+ range))> (tap2 <- tapply(Days, list(Sex,+ Age), range))> tap2[[1]]> unlist(tap2)> detach(quine)

Podemos "recomponer" un objeto a partir de "tap2",pero quizás más fácil sucesivas aplicaciones de"min" y "max".

(154 : 351)

Page 155: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Y podemos crear tablas (luego renombrarcabeceras)> as.data.frame(as.table(tap1))> as.data.frame(as.table(tap2))

tap2 es un “array de listas”.

(155 : 351)

Page 156: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

by otra vez

by: wrapper de tapply> data(iris> summary(iris)> (i1 <- by(iris[, -5], iris[,+ 5], mean))> do.call(rbind, i1)

Ojo, no funcionaría el usar “by” con "median"; porqué?> by(iris[, -5], iris[, 5], median)

(156 : 351)

Page 157: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Mezclando ideas . . .

Entendamos lo que está ocurriendo. Queremos lamedia y la mediana.> (i2 <- by(iris[, -5], iris[, 5],+ function(x+ unlist(lapply(x, median))))

¿Cómo es exactamente i2?> class(i2) ## no dice mucho> attributes(i2)> i2[1]> i2[[1]][1]

> do.call(rbind, i2) ## funciona> (i3 <- cbind(do.call(rbind, i1),+ do.call(rbind, i2)))> colnames(i3) <- paste(rep(c("MEAN.",+ "MEDIAN."),+ c(4, 4)),+ colnames(i3),+ sep = "")> i3

(157 : 351)

Page 158: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

mapply

De la ayuda> mapply(rep, 1:4, 4:1)

Otro ejemplo: la media de muestras de unadistribución normal con distintos parámetros.> ff <- function(x, y, n) {+ mean(rnorm(n, mean = x,+ sd = y))+ }> mapply(ff, 1:5, 0:4, c(2,+ 2, 10, 1000, 1000))

Perfecto para usarse en combinación conexpand.grid.

(158 : 351)

Page 159: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Recordemos rowSums, rowMeans, colSums,colMeans.Además, algunas funciones directamente hacen un"apply", pero a veces no parece muy consistente.> m1 <- matrix(1:20, ncol = 5)> d1 <- as.data.frame(m1)> mean(m1)> mean(d1)> sd(m1)> sd(d1)> median(m1)> median(d1)

(159 : 351)

Page 160: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

apply, sapply, lapply y tapply sonfunciones muy útiles que contribuyen a hacer elcódigo más legible, fácil de entender, y facilitanposteriores modificaciones y aplicaciones.Cada vez que vayamos a usar un "loop" explícito,intentemos substituirlo por algún miembro de lailustre familia apply.

(160 : 351)

Page 161: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

rapply: versión recursiva de lapply.eapply: como un lapply sobre unenvironment (más adelante).

(161 : 351)

Page 162: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Dividiendo un vector de caracteres

Una variable que contiene dos elementos quenecesitamos separar> (df1 <- data.frame(v1 = paste(c("AE", "BD"),+ 1:10, sep = "@"))> strsplit(as.character(df1$v1), "@")> strsplit(as.character(df1$v1[1]),+ split = "@")[[1]]> sapply(as.character(df1$v1),+ function(x) strsplit(x,+ split = "@")[[1]])> (tmp1 <- t(sapply(df1$v1,+ function(x)+ strsplit(as.character(x),+ split = "@")[[1]])))> df1$primera.parte <- as.factor(tmp1[, 1])> df1$segunda.parte <- as.numeric(tmp1[, 2])

(162 : 351)

Page 163: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Clases S3 y S4

Lenguaje orientado a objetos, incluyendo herenciay “method dispatch”.Clases S3: method dispatch haciendofunction.class.Funciones genéricas S3: “UseMethod”.> print> print.lm> apropos(".*\\.lm$")> `?`(getAnywhere)> library(rpart)> post.rpart> getAnywhere("post.rpart"> apropos(".*\\.rpart$")

No llamar directamente a function.class; usargenérico.

(163 : 351)

Page 164: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Clases S4: standardGeneric.> library(FLCore)> showMethods(class = "FLQuant")

Ahora creamos algunos objetos:> x <- 0:10> y <- c(26, 17, 13, 12,+ 20, 5, 9, 8, 5, 4,+ 8)> fit1 <- lm(y ~ x)> library(FLCore)> data(ple4)> fq <- catch.n(ple4)

(164 : 351)

Page 165: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Accediendo a los elementos> class(fit1)> isS4(fit1)> print(fit1)> print.lm(fit1)> fit1> isS4(fq)> showClass(class(fq))> getClass(class(fq))> slotNames(fq)> fq> fq@units

Limpiamos> detach(package:stats4)> detach(package:FLCore)

(165 : 351)

Page 166: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Resumen (y apología de R)

Una vez que los datos están en R, su manipulaciónes muy flexible.Podemos seleccionar variables, casos,subsecciones de datos, etc, de acuerdo concriterios arbitrarios (que usan, además, condicionesque pueden implicar a un número arbitrario devariables y casos).Los data frames y las matrices pueden separarse,juntarse, cambiarse de forma (reshape), etc.El indexado y selección de casos pueden usarnúmeros, factores, cadenas de caracteres, etc.Podemos preparar código que repita las mismasoperaciones con datos semejantes (i.e., podemosautomatizar el proceso con sencillez).

(166 : 351)

Page 167: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguajeObjectos: tipos, atributos,nombres

Listas

NA et al.

Vectores de caracteres

Factores

Atributos de los objetos

Operadores

Generación de secuencias

Ordenación e indexación devectores

Matrices y arrays

data frames

Tablas

La family apply

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Podemos verificar "on-the-fly" que estastransformaciones hacen lo que queremos quehagan (mirando selectivamente los resultados, o"emulando" el proceso en unos datos artificialesmás pequeños).Por tanto, una vez que los datos están en R, no haymuchas razones para exportarlos y hacer laselección y manipulación con otros lenguajes (ej.,Python, Perl) para luego volver a leerlos en R.Hay muchas formas de hacer lo mismo. A vecessobrecoge (lenguaje grande), pero no siemprenecesitamos la forma más elegante, rápida, osencilla. (Ej., convertir un matriz de caracter anumérico en “Matrices: de carácter a numérico” ).

(167 : 351)

Page 168: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Importar y exportar datosread.table, write.table, save.imageBuilt-in dataExcelOtros programas

(168 : 351)

Page 169: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Importando y exportando datos

read.tablewrite.tablesave.imagedata

(169 : 351)

Page 170: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Importando datos

Hay funciones para importar datos en formatobinario de SAS, SPSS, Minitab, Stata, S3 (verpackage foreign(http://cran.r-project.org/src/contrib/PACKAGES.html#foreign).También de bases de datos. Ver R dataimport/export.La forma más sencilla de importar desde Excel essalvando los datos como texto. Pero veremos otrosmecanismo también.(Para usuarios de GNU/Linux: con ficheros deExcel de tamaño moderado, Gnumericgeneralmente es más rápido que OpenOffice. Conficheros muy grandes, Gnumeric pareceatragantarse.)

(170 : 351)

Page 171: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Importando datos: read.table

Queremos leer un fichero simple, separado portabuladores: ejemplo-excel.txt.Abramos ese fichero en nuestro editor favorito.> (datain <- read.table("ejemplo-excel.txt",+ header = TRUE, sep = "\t",+ comment.char = ""))

Fijaos en los NA, y el espacio en blanco en elfichero original.Este fichero es el resultado de exportar desdeExcel un fichero a texto.

(171 : 351)

Page 172: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Si el carácter decimal no es un punto sino, por ej.,una coma, usar: dec = ",".Se pueden saltar lineas (skip) o leer un númerofijo de líneas (nrows).Otro separador habitual de columnas es sep = "" (un espacio en blanco).Hay funciones especializadas para otros ficheros(ej., read.csv) pero son casos específicos deread.table.> read.table("fichero-pocho.txt",+ header = TRUE, sep = "\t",+ comment.char = "")> count.fields("fichero-pocho.txt",+ sep = "\t",+ comment.char = "")

(172 : 351)

Page 173: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Ojo con comment.char. El "default" es "#" lo quepuede causar problemas si ese carácter se usa ennombres.Podemos especificar el código para "missing data"(por defecto usa NA y el que no haya valor—columna vacía).Muchos errores de lectura relacionados con distintonúmero de columnas. Usar count.fields paraexaminar donde está el problema.

(173 : 351)

Page 174: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

scan es una función más general, util conconjuntos de datos grandes o cuando pocamemoria. (Ver “scan vs. read.table” ).Nombres de columna como “V-1”.Cambiemos el nombre de un columna, y leamoslootra vez.Probemos con “#” también.

(174 : 351)

Page 175: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Exportando datos

Lo más sencillo es exportar una tabla.> write.table(file = "mi-fichero.txt",+ data.frame(Sp = letters[1:10],+ A = 1:10, B = 11:20),+ quote = FALSE, col.names = TRUE,+ row.names = FALSE,+ sep = "\t")> write.table(file = "copia-fichero-excel.txt",+ datain, quote = FALSE,+ col.names = TRUE, row.names = FALSE,+ sep = "\t")

row.names y col.names: TRUE o FALSE?col.names = NA.Abramos “mi.fichero.txt” y “copia-fichero-excel.txt”

(175 : 351)

Page 176: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Guardando datos

Guardar datos, funciones, etc, para ser usados enotras sesiones de R.Datos pueden compartirse entre sesiones de R endistintos sistemas operativos.> a1 <- rnorm(10)> a2 <- 1:10> a3 <- letters[10:20]> save(file = "unos.datos.guardados.RData",+ a1, a2, a3)

Los leemos con> rm(list = ls())> load("unos.datos.guardados.RData")

(176 : 351)

Page 177: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Guardando datos

Podemos salvar todos los objetos con> save.image()> save.image(file = "un.nombre.RData")> file.remove(".RData")

El fichero ".RData" es cargado al iniciarse R.(Haced la prueba a cerrar R y arrancar otra vez).

(177 : 351)

Page 178: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Cargando built-in data

R, y muchos paquetes, incorporan ficheros condatos.Se cargan con load(nombre.fichero).(Primero borramos todo del workspace, para ver losefectos de lo que hacemos).> rm(list = ls())> library(car)> data(Prestige)> search()> data()> data(package = "lattice")

?Prestige

(Prestige, package = "car") sirve, si nohemos attached la librería

(178 : 351)

Page 179: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Los data sets que usaremos

iris: manipulación data frames, plots. “aggregate”

quine: tablas, tapply, barplots. “table”

Prestige: modelos lineales, built-in data.“Regresión lineal”

gavote: interacciones en modelos lineales.“Interacciones”

Mroz: regresión logística: datos binarios.“Datos binarios”

budworm: regresión logística: datos binomiales.“Datos binomiales”

Ornstein: GLM: Poisson. “Conteos”

USCancerRates: mapas. “mapplot”

(179 : 351)

Page 180: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Importando de Excel

Lo mejor es exportar desde Excel como fichero detexto separado por tabuladores.Ojo con las últimas columnas y missing data (Excelelimina los "trailing tabs"). Dos formas de minimizarproblemas:

I Usar "NA" para missing.I Poner una última columna con datos arbitrarios (ej.,

una columna llena de 2s).

Cuidado también con líneas extra al final delfichero.Salvamos como texto (sólo salvamos una de lashojas).Importamos en R con read.table.

(180 : 351)

Page 181: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Importando de Excel: paquete "gdata"

Funciona en todas las plataformas (Win, Unix, Mac)Require Perl http://perl.org (que está en elCD).Requiere paquete "gtools".Mecanismo: Excel -> csv -> R> library(gdata)> read.xls("ejemplo-excel.xls",+ verbose = TRUE)> read.xls("ejemplo-excel.xls",+ sheet = 2)

(181 : 351)

Page 182: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Importando de Excel: RODBC

Solo funciona en WindowsUsa sintaxis SQL: trata las hojas de cálculo comobases de datos.> library(RODBC)> e1 <- "ejemplo-excel.xls"> conn.e1 <- odbcConnectExcel(e1)> tablas <- sqlTables(conn.e1)> tablas> sqlQuery(conn.e1,+ "select * from \"Sheet1$\"")> close(conn.e1)

Farragoso (para algunos de nosotros) necesitarsintaxis SQL.

(182 : 351)

Page 183: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

OpenOffice calc a R

http://www.uni-bielefeld.de/biologie/Oekosystembiologie/bio7app/flashtut/transfertor.htm

(183 : 351)

Page 184: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Exportread.table,write.table, save.image

Built-in data

Excel

Otros programas

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Importar de/exportar a otros programas

Ver paquete “foreign”Escribir a: SPSS, Stata, SASLeer de: Esos + Octave, Minitab, Systat, DBF, S (v.3), epinfo

(184 : 351)

Page 185: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Gráficos en RIntroducción a los gráficosBoxplotsJitteringIdentificación interactiva de puntosMúltiples gráficos por ventanaConditioning plots y datos multivariantesGuardando gráficosMúltiples ventanas gráficasOtros

(185 : 351)

Page 186: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Introducción a los gráficos

R incluye muchas y variadas funciones para hacergráficos.El sistema permite desde simples plots a figuras decalidad para incluir en artículos y libros.Sólo examinaremos la superficie. Más detalles enel capítulo 4 de Modern applied statistics with S; loscapítulos 3 y 7 de An R and S-PLUS companion toapplied regression; el capítulo 4 de R for beginners;el capítulo 12 de An introduction to R.Libro Lattice, documentación ggplot2 , vcd.También demo(graphics).

(186 : 351)

Page 187: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

plot()

plot() función gráfica básica.Modificado de "Introductory statistics with R"> attach(iris) ##> plot(Sepal.Length, Sepal.Width> plot(Sepal.Length, Sepal.Width,+ main = "Titulo principal",+ sub = "subtitulo",+ xlab = "x label",+ ylab = "y label",+ xlim = c(2, 9),+ ylim = c(1, 6))> abline(h = 3, lty = 1)> abline(v = 5, lty = 2)> text(3, 4, "Algo de texto")> mtext("mtext", side = 1)> mtext("mtext en side 2", side = 2,+ line = -3, cex = 2)

(187 : 351)

Page 188: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Variaciones de plot

> plot(Sepal.Length)> z <- cbind(x = rnorm(10),+ y = rnorm(10))> plot(z)> plot(Sepal.Length ~ Petal.Width)> plot(log(Sepal.Length ++ 1) ~ Petal.Width)> plot(Sepal.Length ~ Petal.Width,+ type = "l")> plot(Sepal.Length ~ Petal.Width,+ type = "p")> plot(Sepal.Length ~ Petal.Width,+ type = "b")> plot(Sepal.Length, type = "l")> plot(c(1, 5), c(1, 5))> legend(1, 4, c("uno", "dos",+ "tres"), lty = 1:3,+ col = c("red", "blue",+ "green"), pch = 15:17,+ cex = 2)

(188 : 351)

Page 189: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

De dónde cogemos los datos?> plot(Sepal.Length ~ Sepal.Width,+ data = iris)> plot(Sepal.Width,+ Sepal.Length)> with(iris, plot(Sepal.Width,+ Sepal.Length))

(189 : 351)

Page 190: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Con text podemos representar caracteres detexto directamente:> with(iris, plot(Sepal.Width,+ Sepal.Length))> with(iris, text(Sepal.Width,+ Sepal.Length, labels = Species))

La etiqueta demasiado larga?> sp2 <- factor(iris$Species,+ labels = c("S", "VE",+ "VI"))> with(iris, plot(Sepal.Width,+ Sepal.Length))> with(iris, text(Sepal.Width,+ Sepal.Length, labels = sp2,+ pos = 1))

Pero eso es aun muy confuso. En un momento loaclaramos . . .

(190 : 351)

Page 191: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

plot: pch, col, lty

Tipos de puntos:> plot(c(1, 10), c(1, 3),+ type = "n", axes = FALSE,+ xlab = "", ylab = "")> points(1:10, rep(1, 10),+ pch = 0:9, cex = 2,+ col = "blue")> points(1:10, rep(2, 10),+ pch = 10:19, cex = 2,+ col = "red")> points(1:6, rep(3, 6),+ pch = 20:25, cex = 2,+ col = "blue", bg = "yellow")

(191 : 351)

Page 192: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

> with(iris, plot(Sepal.Width,+ Sepal.Length, type = "n"))> points(iris[, 2], iris[, 1],+ col = c("red", "green",+ "blue")[iris$Species])> legend(2.2, 7.5, levels(iris$Species),+ col = c("red", "green", "blue"),+ pch = 1)

(Nótese como hemos usado los numeros decolumnas para ahorrar teclear with).

(192 : 351)

Page 193: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Tipos de líneas:> plot(c(0, 10), c(0, 10),+ type = "n", xlab = "",+ ylab = "")> for (i in 1:10) abline(0,+ i/5, lty = i, lwd = 2)

lty permite specificaciones más complejas(longitud de los segmentos que sonalternativamente dibujados y no dibujados).par controla muchos parámetros gráficos. Porejemplo, cex puede referirse a los "labels"(cex.lab), otro, cex.axis, a la anotación de losejes, etc.Hay muchos más colores. Ver palette, colors.

(193 : 351)

Page 194: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Boxplots

Muy útiles para ver rápidamente las característicasde una variable, o comparar entre variables.> with(iris, boxplot(Sepal.Length))> with(iris, plot(Species,+ Sepal.Length))> boxplot(Sepal.Length ~+ Species, data = iris,+ col = c("red", "green",+ "blue"))

boxplot tiene muchas opciones; se puedemodificar el aspecto, mostrarlos horizontalmente,en una matriz de boxplots, etc. Vease la ayuda(?boxplot).

(194 : 351)

Page 195: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Jittering en scatterplots

Los datos cuantitativos discretos pueden serdifíciles de ver bien:> dc1 <- sample(1:5, 500, replace = TRUE)> dc2 <- dc1 + sample(-2:2, 500, replace = TRUE,+ prob = c(1, 2, 3, 2, 1)/9)> plot(dc1, dc2)> plot(jitter(dc1), jitter(dc2))

También útil si sólo una de las variables está enpocas categorías.

(195 : 351)

Page 196: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Identificación interactiva de datos

(Dejamos un momento iris para que se vea eldetalle:> x <- 1:10> y <- sample(1:10)> nombres <- paste("punto",+ x, ".", y, sep = "")> plot(x, y)> identify(x, y, labels = nombres)

locator devuelve la posición de los puntos.> plot(x, y)> locator()> text(locator(1),+ "el marcado", adj = 0)

(196 : 351)

Page 197: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Múltiples gráficos por ventana

Podemos mostrar muchos gráficos en el mismodispositivo gráfico. La función más flexible ysofisticada es split.screen, bien explicada en Rfor beginners, secc. 4.1.2 (p. 30).Mucho más sencillo es par(mfrow=c(filas,columnas))

También mfcol.

(197 : 351)

Page 198: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

> par(mfrow = c(2, 2))> boxplot(Sepal.Length ~ Species, data = iris,+ col = c("red", "green", "blue"),+ main = "Sepal length")> boxplot(Sepal.Width ~ Species, data = iris,+ col = c("red", "green", "blue"),+ main = "Sepal Width")> plot(Sepal.Length ~ Sepal.Width,+ col = c("red", "green", "blue")[Species],+ data = iris)> plot(Petal.Length ~ Sepal.Length,+ col = c("red", "green", "blue")[Species],+ data = iris)> dev.off()

(198 : 351)

Page 199: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Datos multivariantes

Una "pairwise scatterplot matrix":> pairs(iris[1:4])> pairs(iris[1:4],+ col = c("red", "green",+ "blue")[iris$Species])

(199 : 351)

Page 200: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

"Conditioning plots" (revelan, entre otros,interacciones):(Inventamos "Loc", para condicionar en dosvariables categóricas)> Loc <- sample(c("A", "B"),+ 150, replace = TRUE)> coplot(Sepal.Length ~ Sepal.Width |+ Species, data = iris)> coplot(Sepal.Length ~ Sepal.Width |+ Loc, data = iris)> coplot(Sepal.Length ~ Sepal.Width |+ Loc + Species, data = iris)> coplot(Sepal.Length ~ Sepal.Width |+ Petal.Width, data = iris)> coplot(Sepal.Length ~ Sepal.Width |+ Petal.Width + Species,+ data = iris)

(200 : 351)

Page 201: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

La librería lattice permite lo mismo, y mucho más,que coplot (o que pairs). Ver secc. 4.6 de R forBegginers, o capítlo 4 en “Using R for data analysisand graphics”, o libro “Lattice” (D. Sarkar). Lattice,sin embargo, es algo más compleja de usar.

(201 : 351)

Page 202: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Adición de rectas de regresión

Podemos añadir muchos elementos a un gráfico,además de leyendas y líneas rectas:> plot(Sepal.Length ~ Sepal.Width,+ data = iris)> with(iris, lines(lowess(Sepal.Length ~+ Sepal.Width), lty = 2))> plot(Sepal.Length ~ Sepal.Width,+ data = iris)> abline(lm(Sepal.Length ~+ Sepal.Width, data = iris),+ lty = 3)

Podemos añadir otros elementos con "panelfunctions" en otras funciones (como pairs, lattice,etc).

(202 : 351)

Page 203: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Lo más sencillo es usar panel.car yscatterplot.matrix, en el paquete "car".> library(car)> coplot(Sepal.Width ~ Petal.Width |+ Species, panel = panel.car,+ data = iris)> coplot(Sepal.Width ~ Petal.Width |+ Loc, panel = panel.car,+ data = iris)> scatterplot.matrix(iris[,+ -5], diagonal = "density")

(203 : 351)

Page 204: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Guardando los gráficos

En Windows, podemos usar los menús y guardarcon distintos formatos.Podemos guardar al “portapapeles”.Tambien podemos especificar donde queremosguardar el gráfico:> pdf(file = "f1.pdf", width = 8,+ height = 10)> plot(rnorm(10))> dev.off()

O bien, podemos copiar una figura a un fichero:> plot(runif(50))> dev.copy2eps()

(204 : 351)

Page 205: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

También podemos usar comandos comodev.copy(), dev.copy2eps(), pdf(),png() (ver ?dev.copy).Guardar la figura (en formato pdf o emf o lo quesea) es más útil que copiar al clipboard para:

I Incluir en documentos de LATEX (en ps o pdf) y enalgunos casos de Word (como wmf; ej., si noshacen usar macros que piden inserción de figuras).

I Para mantener una copia de la figura en formato noWindow-céntrico (ej., en formato pdf) que podemosmandar por email, etc.

I Para añadir figuras en páginas Web.I Recordad que formatos como pdf, o ps son más

"portables" que metafile.

(205 : 351)

Page 206: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Por defecto, yo siempre uso dev.copy2eps(),pdf(), png().En GNU/Linux no hay un "File/Save As" para lasfiguras.

(206 : 351)

Page 207: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Múltiples ventanas gráficas

> for (i in 1:5) dev.off()> x11()> plot(rnorm(10), main = "En primer device")> x11()> plot(runif(100), main = "En segundo device")> dev.off()> dev.off()> help(x11)

(207 : 351)

Page 208: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

barplot, etc

> data(quine)> summary(quine)> barplot(table(quine$Age))> barplot(sort(table(quine$Age),+ decreasing = TRUE))> barplot(sort(table(quine$Age),+ decreasing = TRUE),+ las = 2)> dotchart(sort(table(quine$Age),+ decreasing = TRUE))> dotchart(sort(table(quine$Age),+ decreasing = FALSE))

(208 : 351)

Page 209: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

barplot, dotchart, mosaicplot

> mosaicplot(~Age + Lrn,+ data = quine, color = TRUE)> (t1 <- xtabs(~Age + Lrn,+ data = quine))> mosaicplot(t1, color = TRUE)> dotchart(t1)> dotchart(t(t1))

(209 : 351)

Page 210: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Otros

Podemos modificar márgenes exteriores de figurasy entre figuras (vease ?par y búsquense oma,omi, mar, mai; ejemplos en An introduction toR, secc. 12.5.3 y 12.5.4.También gráficos 3D: persp, image, contour;en lattice: cloud, wireframe

histogramas: hist; gráficos de barras:barplot; gráficos de comparación de cuantiles,usados para comparar la distribución de dosvariables, o la disribución de unos datos frente a unestándard (ej., distribución normal): qqplot,qqnorm y, en paquete "car", qq.plot.Para datos categóricos: paquete vcd.

(210 : 351)

Page 211: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a los gráficos

Boxplots

Jittering

Identificación interactiva depuntos

Múltiples gráficos por ventana

Conditioning plots y datosmultivariantes

Guardando gráficos

Múltiples ventanas gráficas

Otros

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Notación matemática (plotmath) y expresiones detexto arbitrariamente complejas.Gráficos tridimensionales dinámicos con XGobi yGGobi. (Ver http://cran.r-project.org/src/contrib/PACKAGES.html#xgobi, http://www.ggobi.org, http:

//www.stat.auckland.ac.nz/~kwan022/pub/gguide.pdf).El paquete JGR et al. pueden (?) ofreceralternativas similares o mejores.

(211 : 351)

Page 212: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Programación en R (I)Definición de functionesControl de ejecuciónCuando algo va mal: traceback, browser y debug

(212 : 351)

Page 213: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Definición de funciones

Ya hemos definido varias funciones. Aquí una más:> my.f2 <- function(x, y) {+ z <- rnorm(10)+ y2 <- z * y+ y3 <- z * y * x+ return(y3 + 25)+ }

Lo que una función devuelve puede ser un simplenúmero o vector, o puede producir una gráfica, odevolver una lista o un mensaje.

(213 : 351)

Page 214: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Argumentos

> otra.f <- function(a, b,+ c = 4, d = FALSE) {+ x1 <- a+ x2 <- b+ if (d)+ x3 <- c+ else x3 <- 55+ return(c(x1, x2, x3))+ }

Los argumentos "a" y "b" tienen que darse en elorden debido o, si los nombramos, podemos darlosen cualquier orden:> otra.f(4, 99)> otra.f(b = 99, a = 4)

Funciona, pero es confuso> otra.f(c = 25, 4, 99)> otra.f(c = 25, 99, 4)

(214 : 351)

Page 215: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Los argumentos "c" y "d" tienen "default values".Podemos especificarlos nosotros, o noespecificarlos (i.e., usar los valores por defecto).args(nombre.funcion) nos muestra losargumentos (de cualquier función).

(215 : 351)

Page 216: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

". . . " permite pasar argumentos a otra función:> f3 <- function(x, y, label = "la x",+ ...) {+ plot(x, y, xlab = label,+ ...)+ }> f3(1:5, 1:5)> f3(1:5, 1:5, col = "red")

(216 : 351)

Page 217: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Control de ejecución: if

Condicional: ifif condicion.logica instruccion donde“instruccion” es cualquier expresión válida(incluida una entre { }).if (condicion.logica) instruccion elseinstruccion.alternativa.

> f4 <- function(x) {+ if (x > 5)+ print("x > 5")+ else {+ y <- runif(1)+ print(paste("y is ",+ y))+ }+ }

(217 : 351)

Page 218: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

ifelse es una versión vectorizada:From Thomas Unternährer, R-help, 2003-04-17> odd.even <- function(x) {+ ifelse(x%%2 == 1, "Odd",+ "Even")+ }> mtf <- matrix(c(8, 3, 4,+ 12), nrow = 2)> odd.even(mtf)

(218 : 351)

Page 219: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Control de ejecución: while, for [OJO:cambios]

while (condicion.logica) instruccion

for (variable.loop in valores)instruccion

> for (i in 1:10) cat("el valor de i es",+ i, "\n")> for (nombre in c("Epi",+ "Blas")) cat(nombre,+ "trabajaba en Barrio Sesamo.\n")

> continue.loop <- TRUE> x <- 0> while (continue.loop) {+ x <- x + 1+ print(x)+ if (x > 10)+ continue.loop <- FALSE+ }

repeat, switch también están disponibles.(219 : 351)

Page 220: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

while (II)

while frecuentemente combinado con break parasalir de un loop tan pronto una condición sedetecta.Nótese el uso de while(TRUE)

> iteration <- 0> while (TRUE) {+ iteration <- iteration ++ 1+ cat(" ... iteration",+ iteration, "\n")+ x <- rnorm(1, mean = 5)+ y <- rnorm(1, mean = 7)+ z <- x * y+ if (z < 15)+ break+ }

(220 : 351)

Page 221: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

Cuando algo va mal: browser y debug

Cuando se produce un error, traceback() nosinforma de la secuencia de llamadas antes delcrash de nuestra función. Util cuando se producemensajes de error incomprensibles.Cuando se producen errores o la función daresultados incorrectos o warnings indebidospodemos seguir la ejecución de la función.

(221 : 351)

Page 222: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

browser interrumpe la ejecución a partir de esepunto y permite seguir la ejecución o examinar elentorno; con "n" paso a paso, si otra tecla sigueejecución normal. "Q" para salir.debug es como poner un "broswer" al principio dela función, y se ejecuta la función paso a paso. Sesale con "Q".> debug(my.buggy.function)> ...> undebug(my.buggy.function)

(222 : 351)

Page 223: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

> my.f2 <- function(x, y) {+ z <- rnorm(10)+ y2 <- z * y+ y3 <- z * y * x+ return(y3 + 25)+ }

Hagamos debugging> my.f2(runif(3), 1:4)> debug(my.f2)> my.f2(runif(3), 1:4)> undebug(my.f2)

Insertar un browser() y correr de nuevoDentro del entorno de debugging podemos cambiarvariables, crear variables, etc.Probémoslo.

(223 : 351)

Page 224: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. IDefinición de functiones

Control de ejecución

Cuando algo va mal:traceback, browser y debug

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.

“on.exit(browser())”

> my.f2 <- function(x, y) {+ on.exit(browser())+ z <- rnorm(10)+ y2 <- z * y+ y3 <- z * y * x+ return(y3 + 25)+ }

Usarla con argumentos “legítimos” y con algo quela haga fallar (e.j., my.f2(“a”, 34)).

(224 : 351)

Page 225: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Métodos y técnicas estadísticas: modelos lineales yGLMs

Métodos y técnicas estadísticas disponiblesModelos lineales

Modelos lineales: introducciónRegresión lineal y regresión múltipleAnova y otros modelosDiagnósticosSelección de variables

Modelos lineales generalizadosModelos lineales generalizados: introducciónDatos dicotómicos. Regresión logísticaModelos de Poisson

Un ejemplo con strings: Ajustando muchos modelos

(225 : 351)

Page 226: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Métodos y técnicas estadísticas disponibles

Estadística descriptiva y tabulación.Contrastes de hipótesis (test de la t, wilcoxon, etc).Modelos y métodos multivariantes

I PCAI Análisis factorialI MANOVAI Análisis discriminanteI Análisis de componentes independientesI Clustering (aglomerados), incluyendo modelos de

mezclas (mixture models).

(226 : 351)

Page 227: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Modelos lineales y derivadosI Modelos linealesI Modelos lineales generalizadosI Modelos lineales multivariantes (MANOVA)I Modelos lineales mixtosI Modelos no-linealesI Modelos no-lineales mixtosI Modelos lineales generalizados mixtos (GLMM)I Modelos aditivos generalizados (GAM)

(227 : 351)

Page 228: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Modelos para datos de supervivenciaI Cox y modelos paramétricosI Modelos con frailties

Modelos para datos categóricos (no solo GLM, sinotambién análisis de correspondencias, etc).

(228 : 351)

Page 229: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Métodos de clasificación y “machine learning”I Redes neuronales.I Máquinas de vector soporte (SVM).I Arboles de clasificación y random forest.I Bagging, boosting.

Paquetes y funcionalidad varia para “métodosbayesianos”.

(229 : 351)

Page 230: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Modelos lineales: introducción

Piedra angular de la estadística.Expresión general:

yi =

j=p∑j=1

xijβj + ei

Generalmente (suponemos) ei Normal(0, σ2)

Modelo de regresión de una sola variableyi = α+ βxi + ei es un caso especial de laexpresión anterior.También lo es la regresión múltiple.También lo es el ANOVA (análisis de la varianza).Otros, como los modelos lineales generalizados, sederivan del modelo lineal.

(230 : 351)

Page 231: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Modelos lineales y derivados

“Roadmap” en la fig. 57 de Kuhnert y Venables (p. 141).Modelos linealesModelos lineales generalizadosModelos lineales multivariantes (MANOVA)Modelos lineales mixtosModelos no-linealesModelos no-lineales mixtosModelos lineales generalizados mixtos (GLMM)Modelos aditivos generalizados (GAM)

(231 : 351)

Page 232: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Modelos lineales y derivados

Siguiendo Faraway, 2008.

El modelo lineal:

y = β0 + β1x1 + . . .+ βpxp + e

GLM: generaliza la y . El modelo lineal habitual nopuede analizar conteos, proporciones, etc. GLMspueden analizar datos binarios, categóricos, y deotros tipos.Modelos mixtos: generalizan la e. Datos conestructuras anidadas/encajadas (nested),longitudinales, multinivel, que inducen correlacionesen lo e. Modelos mixtos, GEE (y generalized leastsquares y weighted least squares).

(232 : 351)

Page 233: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

y = β0 + β1x1 + . . .+ βpxp + e

Modelos de regresión no paramética. Generalizanla forma de la x . La relación no tiene por qué serlineal. Por ej., GAMs.Regresión robusta: mínimos cuadrados funcionamal con errores con distribuciones con colas muypesadas. Efectos outliers, distribuciones extremas,etc. Ver rlm en paquete MASS.

(233 : 351)

Page 234: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Modelos lineales et al. en R

Todos los incluidos arriba pueden usarse en R.Para los lineales y lineales generalizados hay,generalmente, más de un paquete y muchasopciones y funciones auxiliares.Usaremos, además de las funciones existentes enel paquete base de R, la librería car de J. Fox.Para otros problemas con modelos lineales,algunos modelos lineales generalizados y análisisde supervivencia, muy interesantes también laslibrerías Hmisc y Design, de F. Harrell.

(234 : 351)

Page 235: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Nuestra exposición seguirá muy de cerca la deJ. Fox, 2002, “An R and S-Plus companion toapplied regression” (Sage) y J.J. Faraway (2006)“Extending the linear model with R”.Nuestra exposición es MUY rápida. Es sólo paraabrir el apetito y ver el amplísimo rango deherramientas a nuestra disposición.No recomiendo los libros de Crawley.

(235 : 351)

Page 236: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Regresión lineal

> library(car)> data(Prestige)> plot(education, prestige,+ data = Prestige)> plot(prestige ~ education,+ data = Prestige)> mod.prestige0 <- lm(prestige ~+ education, data = Prestige)> attach(Prestige)> mod.prestige01 <- lm(prestige ~+ education)> summary(mod.prestige0)> summary(mod.prestige01)> plot(prestige ~ education)> abline(mod.prestige0, col = "blue")> abline(-5, 8, col = "green",+ lty = 2)> identify(education, prestige)> detach(Prestige)

(236 : 351)

Page 237: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Regresión múltiple

Podemos expresar

yi =

j=p∑j=1

xijβj + ei

como

yi = α+

j=p∑j=1

xijβj + ei

o, por ej.,

yi = α+ β1xi1 + β2xi2 + β3xi3 + ei

cuando tenemos tres variables independientes.

(237 : 351)

Page 238: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> data(Prestige)> Prestige <- na.omit(Prestige)> names(Prestige)> par(mfrow = c(1, 3))> plot(prestige ~ education,+ data = Prestige)> plot(prestige ~ income,+ data = Prestige)> plot(prestige ~ women,+ data = Prestige)> dev.off()> attach(Prestige)> pairs(cbind(prestige, education,+ income, women))> detach(Prestige)> summary(mod.prestige <- lm(prestige ~+ education + income ++ women, data = Prestige))

(238 : 351)

Page 239: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> anova(mod.prestige)> Anova(mod.prestige)> help(Anova)

(La función Anova es parte de car, no del sistema base.)

(239 : 351)

Page 240: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

"Ancova"

Vamos a introducir variables contínuas y discretas.> summary(mod.prestige2 <- lm(prestige ~+ education + income ++ type, data = Prestige))> contrasts(Prestige$type)> summary(mod.prestige3 <- lm(prestige ~+ -1 + education + income ++ type, data = Prestige))> coefs <- mod.prestige2$coeff> coefs> coefs[4] + coefs[1]> coefs[5] + coefs[1]> mod.prestige3

(240 : 351)

Page 241: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Otros tipos de contrastes disponibles (sum,helmert, poly).Fundamental para entender e interpretarcoeficientes (y sumas, diferencias, etc, decoeficientes).La codificación por defecto es distinta a SAS y otrosprogramas.No entraremos en ello. Se pueden cambiar, por ej.,con options(contrasts=c(’contr.helmert’, ’contr.poly’)),donde el primero se refiere a factores sin ordenar yel segundo a factores ordenados.

(241 : 351)

Page 242: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Tests en "Ancova"

> anova(mod.prestige2)> Anova(mod.prestige2)> mod.prestige4 <- lm(prestige ~+ type + income + education,+ data = Prestige)> anova(mod.prestige4)> Anova(mod.prestige4)> Anova(mod.prestige3)

(242 : 351)

Page 243: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Interacciones> mod.prestige5 <- lm(prestige ~+ education + income ++ type + income:type ++ education:type,+ data = Prestige)> mod.prestige6 <- update(mod.prestige2,+ . ~ . + income:type ++ education:type)> mod.prestige7 <- lm(prestige ~+ education * type ++ income * type,+ data = Prestige)> Anova(mod.prestige5)> Anova(mod.prestige6)> Anova(mod.prestige7)> summary(mod.prestige5)> summary(mod.prestige6)> summary(mod.prestige7)

Principio de marginalidad.Y las sumas de cuadrado de Type III???

(243 : 351)

Page 244: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Interacciones: caso más fácil

Construir predicciones para todos los niveles de lasvariables implicadas (al nivel mediano de la continua).(De Faraway, 2006).> library(faraway)> data(gavote)> summary(gavote)> gavote$undercount <- (gavote$ballots -+ gavote$votes)/gavote$ballots> mg1 <- lm(undercount ~+ equip + econ + perAA ++ equip:econ + equip:perAA,+ data = gavote)> summary(mg1)

(244 : 351)

Page 245: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> dd0 <- data.frame(econ = rep(levels(gavote$econ),+ 5), equip = rep(levels(gavote$equip),+ rep(3, 5)), perAA = 0.233)> dd0 <- expand.grid(econ = levels(gavote$econ),+ equip = levels(gavote$equip),+ perAA = 0.233)> pred.dummy <- predict(mg1,+ new = dd0)> xtabs(round(pred.dummy,+ 3) ~ econ + equip,+ data = dd0)

(245 : 351)

Page 246: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Interludio: ¿y el warning?

> mg1> summary(mg1)> xtabs(~econ + equip, data = gavote)

(246 : 351)

Page 247: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Transformaciones

A veces necesario transformar la y o los x .Box-Cox (ver MASS) para la y , pero problemas deinterpretación. Mejor si guiados for conocimiento dela naturaleza sustantiva del problema.Polinomios. En R, usar “orthogonal polynomials”:coficientes de términos de menor orden nocambian si alteramos máximo grado polinomio.splines son alternativa; ojo con predicciones(MASS, p. 229).

(247 : 351)

Page 248: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> (mg2 <- lm(undercount ~+ poly(perAA, 4) + equip,+ data = gavote))> (mg3 <- lm(undercount ~+ poly(perAA, 2) + equip,+ data = gavote))> library(splines)> (mg5 <- lm(undercount ~+ bs(perAA, 4) + equip,+ data = gavote))> summary(mg5)> Anova(mg2)> Anova(mg3)> Anova(mg5)> mg5> mg2

(248 : 351)

Page 249: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Anova y otros modelos

Hemos visto el uso de " ", "+", ":", "*", "-1", paraespecificar modelos.Rango completo de modelos es más amplio; "/"para modelos enjados o anidados (nested).A veces se separan el Anova de la regresión. Enrealidad, ambos son casos específicos de modeloslineales. Anidamiento, factores fijos y aleatorios,split-plot designs, modelos de medidas repetidas,etc, se recogen más cómodamente en el contextode los modelos lineales mixtos. Ver esquema endiapo “Modelos lineales y derivados” .No entramos aquí en más detalles.

(249 : 351)

Page 250: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Diagnósticos

Las funciones en el paquete básico:> par(mfrow = c(1, 1))> plot(mod.prestige)> dev.off()

Qué es cada cosa?Vamos con calma... uno a uno.

(250 : 351)

Page 251: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> help(influence.measures)> help(influence)> hatvalues(mod.prestige)> round(dfbeta(mod.prestige),+ 3)> round(dfbetas(mod.prestige),+ 3)> plot(cookd(mod.prestige))> identify(1:length(cookd(mod.prestige)),+ cookd(mod.prestige),+ row.names(Prestige))> plot(rstudent(mod.prestige) ~+ fitted.values(mod.prestige))> abline(h = 0, lty = 2)

El último, al usar studentized residuals, minimiza elproblema de que los residuos no tienen la mismavarianza.(cookd no es del paquete básico, sino de car).

(251 : 351)

Page 252: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Diagnósticos: car

La librería car ofrece ciertas adaptaciones yadiciones de plots diagnósticos que son muycómodas. halfnorm es de Faraway(library(faraway)).> qq.plot(mod.prestige, simulate = TRUE,+ labels = row.names(Prestige))> plot(hatvalues(mod.prestige))> identify(1:length(hatvalues(mod.prestige)),+ hatvalues(mod.prestige),+ row.names(Prestige))> halfnorm(hatvalues(mod.prestige))> plot(dfbetas(mod.prestige)[,+ c(2, 3)])

(252 : 351)

Page 253: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Added variable plots y ceres plots

Added variable plots : Muy útiles para detectarleverage e influencia, minimizando elenmascaramiento. Para cada variable Xi ,representar los residuos de y en una regresión contodos menos Xi frente a residuos de la regresión deXi contra todos los demás X .Ceres or “component + residual” or “partial residual”plots: detección de relaciones no lineales. Tambiénla función en sistema base termplot. Muestranxi β̂i + ε̂ = y −

∑j 6=i xj β̂j .

(En “car”, ver tanto “ceres.plots” como “cr.plots”).

(253 : 351)

Page 254: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> av.plots(mod.prestige,+ labels = row.names(Prestige))> ceres.plots(mod.prestige,+ ask = TRUE)> par(mfrow = c(1, 2))> ceres.plots(mod.prestige,+ variable = "education")> termplot(mod.prestige,+ partial = TRUE, terms = 1,+ smooth = panel.smooth)> dev.off()

(254 : 351)

Page 255: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

VIF: variance inflation factors

Y la multicolinealidad?> vif(mod.prestige)> vif(mod.prestige2)

La√

(vifj) indica cuanto se ensancha el intervalode confianza para βj en comparación con unasituación en la que no hubiera predictorescorrelacionados.Si VIF > 10: preocupante. Algunos autoressugieren cuidado si VIF > 5.

(255 : 351)

Page 256: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Otros

Casi todos los métodos mencionados sirven paramodelos lineales generalizados.No se puede enfatizar bastante la necesidad demirar con mimo y cuidado los plots de diagnóstico!!

(256 : 351)

Page 257: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Selección de variables

¿Necesitamos todas esas variables en el modelo?La selección de variables es terreno muy peligroso.En general, despues de la selección de variables,los p-valores no son de fiar (subestimados) y sesubestima también la variabilidad en la obtenciónde soluciones.Frank Harrell (su libro “Regression modelingstrategies”) tiene una detallada discusión de estostemas, y posibles formas de examinarlo (ej., viabootstrap del proceso de selección de variables).Ver también http:

//www.pitt.edu/~wpilib/statfaq/regrfaq.html.No entramos ahora en más detalles. Suponemos,en lo que sigue, que haremos selección por"motivos heurísticos".

(257 : 351)

Page 258: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Comparar algunos modelos concretos> mp1 <- lm(prestige ~ education ++ income + women, data = Prestige)> mp2 <- update(mp1, . ~+ . - women)> mp3 <- update(mp1, . ~+ . + census)> Anova(mp1)> anova(mp1, mp2)> anova(mp1, mp3)> anova(mp2, mp3)> mpS <- update(mp1, . ~+ . - women)> anova(mpS, mp1)

¿Y si tecleamos> anova(mp1, mpS)

(258 : 351)

Page 259: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

A veces popular el uso de métodos "stepwise"usando p-valores. En general, aun másdesaconsejables.Usemos stepAIC.> library(MASS)> stepAIC(mp3)> stepAIC(mp2)

Cierta tendencia a seleccionar modelos“demasiado grandes”.Podemos hacer también "forward selection",empezando con un modelo con sólo el intercepto, oacotar los modelos a usar.Podemos obtener los subconjuntos óptimos depredictores para modelos de todos los tamaños(ver regsubsets en librería leaps y función subsetsen car).

(259 : 351)

Page 260: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Polinomios: el factor con polinomio entra o saleentero. No posibilidad con poly de seleccionargrado de polinomio. (Podemos usar, en vez depoly, codificación a “mano”: x , x2, x3 pero: noortogonales, y no respeto de marginalidad).> mp8 <- lm(prestige ~ poly(education,+ 2) + income + women ++ type + census, data = Prestige)> mp9 <- lm(prestige ~ poly(education,+ 3) + income + women ++ type + census, data = Prestige)> anova(mp8, mp9)> stepAIC(mp8)> stepAIC(mp9)

(260 : 351)

Page 261: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

GLM: introducción

Generalización modelo lineal.Distribución del error cambia.La relación entre la esperanza de la respuesta y elpredictor lineal cambia.Lo que sigue igual: un predictor lineal, que es unacombinación lineal de las variables independientes.∑j=p

j=1 xijβj

ηi = β1xi1 + β2xi2 + . . .+ βpxip

"Link function": g(µi) = ηi . µi = g−1(ηi) (g−1 aveces llamada "mean function").

(261 : 351)

Page 262: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Datos normales: "identity link"; datos binomiales:"logit link"; Poisson: "log link".Los anteriores son los links comunes. Hay otrospara esas distribuciones, asi como links para otrasdistribuciones.Y la varianza? Para familias exponenciales, lavarianza es una función de la media y de unparámetro de dispersión.Esta es otra introducción, AUN MAS RAPIDA.Seguimos Fox (2002), “An R and S-Plus companionto applied regression”, Faraway (2006) “Extendingthe linear model with R”, Everitt y Hotorn (2006) “Ahandbook of statistical analysis using R” y notas deKuhnert y Venables.

(262 : 351)

Page 263: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Regresión logística

µ = eη

1+eη , η = log µ1−µ

Usando R: distinguir entre datos binarios (0, 1) ydatos binomiales.

(263 : 351)

Page 264: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Datos binarios

> data(Mroz)> attach(Mroz)> mroz.mod1 <- glm(lfp ~+ k5 + k618 + age + wc ++ hc + lwg + inc,+ family = "binomial")> summary(mroz.mod1)> Anova(mroz.mod1)> stepAIC(mroz.mod1)> mroz.mod2 <- update(mroz.mod1,+ . ~ . - k5)> summary(mroz.mod2)> anova(mroz.mod1, mroz.mod2,+ test = "Chisq")> Anova(mroz.mod1)

(264 : 351)

Page 265: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> mroz.mod3 <- update(mroz.mod1,+ . ~ . - k618 - hc)> anova(mroz.mod1, mroz.mod3,+ test = "Chisq")> mroz.mod4 <- update(mroz.mod1,+ . ~ . - k618 - hc -+ k5)> anova(mroz.mod1, mroz.mod4,+ test = "Chisq")

(265 : 351)

Page 266: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Diagnosticos: mucho más complicados, en especialcon datos binarios.Podemos usar GAMs para examinar relaciones nolineales.(En realidad, algunos de estos plots los deberíamoshaber hecho antes!).(ceres.plots a veces no funcionan bien conGLMs. Usaremos termplot).

(266 : 351)

Page 267: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> plot(mroz.mod3)> av.plots(mroz.mod3, identify = FALSE,+ variable = "lwg")> termplot(mroz.mod3, partial = TRUE,+ smooth = panel.smooth,+ terms = 4)> par(mfrow = c(1, 2))> plot(lfp ~ lwg, data = Mroz)> cdplot(lfp ~ lwg, data = Mroz)> dev.off()> library(mgcv)> summary(mroz.mod3.gam <- gam(lfp ~+ k5 + age + wc + s(lwg) ++ inc, family = "binomial"))> plot(mroz.mod3.gam, residuals = TRUE)> detach(Mroz)

(267 : 351)

Page 268: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

“Bubble plots”

La visualización de regresiones logísticas siemprecomplicada.Los bubble plots pueden ayudar (modificado, endatos y otros, de Everitt y Hothorn).> plot(inc ~ lwg, data = Mroz,+ pch = ".", ylim = c(-10,+ 90), xlim = c(-2,+ 4))> symbols(Mroz$lwg, Mroz$inc,+ circles = predict(mroz.mod3,+ type = "response"),+ add = TRUE)> plot(inc ~ lwg, data = Mroz,+ pch = ".", ylim = c(-10,+ 60), xlim = c(-2,+ 0))> symbols(Mroz$lwg, Mroz$inc,+ circles = predict(mroz.mod3,+ type = "response"),+ add = TRUE)

(268 : 351)

Page 269: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Podríamos poner un eje “dummy” si usamos unavariable que no esté en el modelo (el caso delejemplo en libro Everitt y Hothorn).

(269 : 351)

Page 270: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Datos binomiales

Creamos los "famosos" budworm data.> ldose <- rep(0:5, 2)> numdead <- c(1, 4, 9, 13,+ 18, 20, 0, 2, 6, 10,+ 12, 16)> sex <- factor(rep(c("M",+ "F"), each = 6))> SF <- cbind(numdead, numalive = 20 -+ numdead)> Budworms <- data.frame(ldose,+ sex)> Budworms$SF <- SF> rm(sex, ldose, SF)> Budworms

(270 : 351)

Page 271: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> bud.mod1 <- glm(SF ~ sex/ldose,+ family = "binomial",+ data = Budworms, trace = TRUE)> summary(bud.mod1, cor = FALSE)> bud.mod2 <- glm(SF ~ sex *+ ldose, family = "binomial",+ data = Budworms, trace = TRUE)> summary(bud.mod2, cor = FALSE)> anova(bud.mod1, bud.mod2)> bud.mod3 <- glm(SF ~ -1 ++ sex + ldose, family = "binomial",+ data = Budworms)> anova(bud.mod3, bud.mod1,+ test = "Chisq")> summary(bud.mod3)> drop1(bud.mod3, test = "Chi")

(271 : 351)

Page 272: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Diagnósticos

Usando “plot” algo más información (pero en estecaso pocos puntos).Nótese “Deviance”: pequeña para los df.

(272 : 351)

Page 273: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> summary(bud.mod3)> pchisq(deviance(bud.mod3),+ df.residual(bud.mod3),+ lower = FALSE)> pchisq(126.227, 12, lower = FALSE)> plot(bud.mod3)> plot(residuals(bud.mod3,+ type = "deviance") ~+ predict(bud.mod3, type = "response"))> plot(residuals(bud.mod3,+ type = "deviance") ~+ predict(bud.mod3, type = "link"))> av.plots(bud.mod3)> ceres.plots(bud.mod3)> termplot(bud.mod3, partial = TRUE,+ smooth = panel.smooth)> halfnorm(cooks.distance(bud.mod3))> plot(dfbetas(bud.mod3)[,+ 3])

(273 : 351)

Page 274: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Y si la “Deviance” es muy grande? (SiguiendoFaraway, 2006, pp. 43 –47; 123–131).

1. Forma estructural incorrecta: faltan predictores o nobien transformados o faltan interacciones.

2. Outliers3. La “deviance” no dice nada (ej., datos binarios).4. over/under-dispersion. Sobre-dispersión:

clustering, dependencia entre ensayos, etc.(under-dispersion es más rara; fenómenos derepulsión). Usar “quasi-likelihood”. No es trivial.

(274 : 351)

Page 275: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

No cambian los coeficientes.Cambia el test a usar (F).> bud.mod3.qsi <- glm(formula = SF ~+ -1 + sex + ldose,+ family = "quasibinomial",+ data = Budworms)> summary(bud.mod3.qsi)> drop1(bud.mod3.qsi, test = "F")

(275 : 351)

Page 276: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Poisson

Dos usos fundamentales: para conteos y paraanalizar tablas de contingencia.Sólo mostraremos un ejemplo con conteos. (Elexamen de las tablas de contingencia requiereextenderse sobre modelos loglineares, etc).

(276 : 351)

Page 277: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Conteos

> data(Ornstein)> summary(Ornstein)> attach(Ornstein)> iltable <- table(interlocks)> plot(as.numeric(iltable) ~+ as.numeric(names(iltable)),+ type = "h", xlab = "Number of interlocks",+ ylab = "Frecuencia")> orns.mod1 <- glm(interlocks ~+ assets + nation + sector,+ family = "poisson")> summary(orns.mod1)> Anova(orns.mod1)> detach(Ornstein)

(277 : 351)

Page 278: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> par(mfrow = c(1, 2))> plot(residuals(orns.mod1,+ type = "deviance") ~+ predict(orns.mod1))> plot(orns.mod1, which = 1)> cr.plots(orns.mod1, variable = "assets")> orns.mod2 <- glm(interlocks ~+ log(assets) + nation ++ sector, family = "poisson",+ data = Ornstein)> cr.plots(orns.mod2, variable = "log(assets)")> dev.off()

Otros diagnósticos aprox. como antes (outliers,varianzas, etc).

(278 : 351)

Page 279: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Quasilikelihood con Poisson

> orns.mod3 <- glm(interlocks ~+ log(assets) + nation ++ sector, family = "quasipoisson",+ data = Ornstein)> orns.mod3> Anova(orns.mod3, test = "F")> Anova(orns.mod2)

(279 : 351)

Page 280: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Otros

Nos hemos dejado muchas cosas.Modelos de Poisson para tablas de contingencia:modelos log-lineares. (Ver MASS; Fox, sec. 5.3.2;Faraway, 2006, ch. 4).Datos politómicos/multinomiales:

I logit multinomial (via multinom en MASS; ver tb.Fox, p. 172 y sig.; Faraway, 2006, 5.1);

I dicotomías anidadas/encajadas: glm confamily=binomial. Fox, 5.5.2, Faraway, 5.2.

I Datos ordinales: proportional odds models.Función polr en MASS. Fox, p. 175; Faraway, 5.3.

Over y under-dispersion.Residuos: hay varios tipos de residuos con GLMs(que en modelos Gausianos coinciden).Datos de supervivencia: como un tipo de GLMs.

(280 : 351)

Page 281: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

eval(parse(text=x))

Muchas regresiones: hay muchas variables.La variable dependiente es siempre y.Una de las independientes es siempre x.Un modelo de regresion para cada una de lasdemás + x.O sea . . .y ~ x + ay ~ x + b

...

(281 : 351)

Page 282: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Una situación así:> a <- 1:10> b <- 11:20> c <- 21:30> y <- rnorm(10)> x <- rnorm(10)

Una idea: almacenemos los nombres de las otrasvariables independientes en la variable varname.> varname <- c("a", "b",+ "c")

(282 : 351)

Page 283: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Dos posibles formas de hacerlo> eval(substitute(lm(y ~ x + variable),+ list(variable = as.name(varname[1]))))> eval(parse(text = paste("lm(y ~ x + ",+ varname[1], ")")))

Entendamos lo que hacen. Destripemos lasexpresiones

(283 : 351)

Page 284: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

eval(substitute(...))

> varname[1]> as.name(varname[1])> substitute(A, list(A = as.name(varname[1])))> uu <- substitute(A, list(A = as.name(varname[1])))> class(uu)> eval(uu)> eval(substitute(A, list(A = as.name(varname[1]))))

(284 : 351)

Page 285: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

> substitute(lm(y ~ x + variable),+ list(variable = as.name(varname[1])))> uu <- substitute(lm(y ~ x + variable),+ list(variable = as.name(varname[1])))> class(uu)> eval(uu)> eval(substitute(lm(y ~ x + variable),+ list(variable = as.name(varname[1]))))

(285 : 351)

Page 286: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

eval(parse(text = ...))

> paste("lm(y ~ x + ", varname[1],+ ")")> parse(text = paste("lm(y ~ x + ",+ varname[1], ")"))> uuu <- parse(text = paste("lm(y ~ x + ",+ varname[1], ")"))> class(uuu)> eval(uuu)> eval(parse(text = paste("lm(y ~ x + ",+ varname[1], ")")))

De la ayuda de eval: "Objects to be evaluated canbe of types ’call’ or ’expression’ (...)"

(286 : 351)

Page 287: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Ahora podemos ajustar todos

Primero, creamos las variables extras, y lasguardamos en un data frame con nombres en lascolumnas.

> mdf <- matrix(rnorm(50), ncol = 5)> colnames(mdf) <- sapply(1:5,+ function(x) paste(sample(letters,+ 5), collapse = ""))> (mdf <- as.data.frame(mdf))

(287 : 351)

Page 288: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Ajustando con eval(substitute

> for(i in 1:ncol(mdf)){+ cat("\n\n ***** Model number ", i, "\n")+ print(eval(substitute(lm(y ~+ x + variable,+ data = mdf),+ list(variable =+ as.name(colnames(mdf)[i])))))+ }

(288 : 351)

Page 289: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

¿Dónde los guardamos?

Guardándolos al vuelo> for(i in 1:ncol(mdf)){+ cat("\n\n ***** Model number ", i, "\n")+ assign(paste("modelo.variable",+ colnames(mdf)[i], sep = "."),+ eval(substitute(lm(y ~x + variable,+ data = mdf),+ list(variable =+ as.name(colnames(mdf)[i])))))+ }> ls()

El entorno global se nos llena de cosasPero podemos acceder a cada una (intentémoslo;el nombre será distinto):summary(modelo.variable.lo.que.sea)

(289 : 351)

Page 290: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Guardándolos en una lista> modelos <- list()> for(i in 1:ncol(mdf)){+ cat("\n\n ***** Model number ", i, "\n")+ modelos[[i]] <- eval(substitute(lm(y ~+ x + variable,+ data = mdf),+ list(variable = as.name(colnames(mdf)[i]))))++ names(modelos)[[i]] <- colnames(mdf)[i]+ }> summary(modelos[[3]])

(290 : 351)

Page 291: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

Con eval(parse(text = la lógica similar.> for(i in 1:ncol(mdf)){+ cat("\n\n ***** Model number ", i, "\n")+ print(eval(parse(text = paste("lm(y ~ x + ",+ colnames(mdf)[i],+ ", data = mdf)"))))+ }

(291 : 351)

Page 292: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMsMétodos y técnicasestadísticas disponibles

Modelos lineales

Modelos lineales:introducción

Regresión lineal y regresiónmúltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados: introducción

Datos dicotómicos. Regresiónlogística

Modelos de Poisson

parsing strings

Prog. II

Miscell.

“How can I turn a string into a variable?”De la FAQ, 7.21:If you have

varname <- c("a", "b", "d")you can do

get(varname[1]) + 2for

a + 2or

assign(varname[1], 2 + 2)for

a <- 2 + 2or

eval(substitute(lm(y ~ x + variable),list(variable = as.name(varname[1]))

forlm(y ~ x + a)

At least in the first two cases it is ofteneasier to just use a list, and then youcan easily index it by namevars <- list(a = 1:10, b = rnorm(100),

d = LETTERS)vars[["a"]]

without any of this messing about.(292 : 351)

Page 293: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Programación en R (II)source y BATCH¿Qué contiene un paquete para R?Creación de paquetes para uso propioAmbito: lexical scopeTryProfilingLlamando a funciones en C/C++

(293 : 351)

Page 294: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

source y BATCH

Para la ejecución no interactiva de código.Con source abrimos una sesión de R y hacemos> source("mi.fichero.con.codigo.R").Con BATCH: % R CMD BATCHmi.fichero.con.codigo.R.source es en ocasiones más útil porque informainmediatamente de errores en el código. BATCH noinforma, pero no requiere tener abierta una sesión(se puede correr en el background).Ver la ayuda: R CMD BATCH -help.Puede que necesitemos explícitos printstatements o hacer source(my.file.R, echo= TRUE).sink es el inverso de source (manda todo a unfichero).

(294 : 351)

Page 295: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

¿Qué contiene un paquete para R?

Elijamos algunos. Mirar tanto el .zip como el .tar.gz.tar.gz es probablemente donde queremos ir si nosinteresan las fuentes.¿Qué son los directorios?DescriptionNAMESPACEuseDynLib

(295 : 351)

Page 296: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Creación de paquetes para uso propio

Si tenemos unos ficheros con funciones, etc,¿cómo lo usamos repetidas veces?Podemos usar “source”.Llena el espacio global de funciones, etc.Alternativa: usar un paquete.

(296 : 351)

Page 297: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Detalles sobre como escribir un paquete: enmanual “Writing R extenssions”.Si sólo queremos “paquete de andar por casa”basta con:Crear un directorio; ej. “MisFuncs”.Crear subdirectorio: R y poner ahí el código.Crear fichero DESCRIPTION (ej., copiar de otralibrería).Crear usando R CMD build. (Herramientasadicionales necesarias; ver http://www.murdoch-sutherland.com/Rtools/.

(297 : 351)

Page 298: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Dónde buscamos las cosas?

Aquí explicamos dónde buscamos funcionesY dónde buscamos objetosEnmascaramiento y acceso a funciones “novisibles”Lexical scope

(298 : 351)

Page 299: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

search, librerías, enmascaramientos

Nótese que search() nos informa de comobuscamos valores y funciones.Redefinimos lm> lm <- function(x, y) {+ x * y+ }> lm> rm(lm)> lm

Habíamos enmascarado “lm” (pero nadie nos dijonada!).

(299 : 351)

Page 300: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

> library(car)> ls(pos = 2)> rm(xless, pos = 2)> apropos("locked"

(300 : 351)

Page 301: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

> library(rpart)> post.rpart> rpart:::post.rpart> rpart::post.rpart> ls(pos = 2)

Ver el fichero “NAMESPACE” en rpart.

(301 : 351)

Page 302: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Lexical scope: introducción

> ff <- function(a, b, c = 4,+ d = FALSE) {+ x1 <- a * z+ return(xl)+ }

"z" es una "free variable": ¿cómo se especifica suvalor? Lexical scoping.Documentación: Frames, environments,and scopein R and S-PLUS de J. Fox (enhttp://cran.r-project.org/doc/contrib/Fox-Companion/appendix.html) ysección 10.7 en An introduction to R. Tambiéndemo(scoping). El que seguiré.Lexical scope and statistical computing deR. Gentleman y R. Ihaka, J. Comput Graph. Stats,2000, 9: 491–508. Más detalles, y susimplicaciones generales en statistical computing.

(302 : 351)

Page 303: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Ojo: las “scoping rules” son algo distintas entre R yS-PLUS. Nos limitaremos a R. Ver documentosmencionados para diferencias con S-PLUS.¿Por qué importa? Porque hace la programaciónen R mucho más potente y sencilla.

(303 : 351)

Page 304: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

DefinicionesBound to: una variable is bound to si se le haasignado un valor. x <- 5 o f1(x = 2).Frame: un conjunto de bindings. En un frame dado,una variable sólo puede tener un valor asignado(ej., podemos hacer: x <- 2; x <- 5; x primerotiene el valor 2, y luego el 5, pero no ambos). Endistintos frames, una variable puede tener distintosbindings (veremos ejemplos en un momento).Free variable: una variable que, en un frame dado,no está “bound to” a ningún valor. En f3 <-function(x) x * y; f3(5), y es una variablelibre en el frame local de la función f3 (pero x tieneel valor 5).global frame, global environment: all arrancar R, sihacemos x <- 13, hemos asignado 13 a x en el“global frame” o “global envornment”.

(304 : 351)

Page 305: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Scoping rules: determinan como el intérprete (deR, o de cualquier lenguaje) busca el valor de lasfree variables.environment: una secuencia de frames. Ojo la ideade secuencia.

I frame 1 luego frame 2I frame 2 luego frame 1I Pueden tener consecuencias MUY distintas. Si “x”

está definido tanto en frame 1 como en frame 2, enel primero caso x en el frame 1 “shadows”(enmascara) el valor de x en el frame 2.

I closure: función + environment.

(305 : 351)

Page 306: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Scoping rules en R

El environment de una función. Ej., “f1”, definidadentro de “f1Padre”, dentro de “f1Abuelo”, ...frame local de la función luego frame donde sedefinión función (f1Padre) luego f1Abuelo . . .global environment.> f1 <- function(x) x + a> a <- 15> x <- 7> f1(x = 1)> f1(3)

¿Por qué no funciona?> f1()

(306 : 351)

Page 307: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

> f2 <- function(x) {+ a <- 3+ f3(x+ }> f3 <- function(y) y + a> f2(2)> f3(2)

> f4 <- function(x) {+ a <- 3+ f5 <- function(y) y+ f5(x)+ }> f4(2)

(307 : 351)

Page 308: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

> f6 <- function(x) {+ a <- 3+ f7 <- function(y) y ++ a+ f7(x)+ }> f6(2)

Esta funcionalidad facilita muchísimo el escribirfunciones dentro de otras funciones. Lo volveremosa ver luego.

(308 : 351)

Page 309: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Closures: definiendo funciones

(Seguimos siguiendo a J. Fox).> make.power <- function(power) {+ function(x) x^power+ }> square <- make.power(2)> cuberoot <- make.power(1/3)> square> cuberoot> square(2)> square(9)> cuberoot(64)

Al hacer square <- make.power(2) el valor 2es bound a la variable local “power”, y la asignacióna “square” devuelve una “closure” (función +environment).

(309 : 351)

Page 310: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

environments

Verifiquemos qué es lo que “hay dentro de” squarey cuberoot:> environment(square)> ls(envir = environment(square))> get("power", envir = environment(square))> get("power", envir = environment(cuberoot))

square y cuberoot son, por tanto, la definición de lafunción y un conjunto de bindings (en este caso, elbinding de power), que son distintos entre ambasfunciones.

(310 : 351)

Page 311: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

try

Qué hacemos si algo falla?En R, un mecanismo sencillo de hacer frente a“excepciones” es con try.Varios ejemplos lo usarán luego. De momento:> ffail <- function(x, y) {+ tf1 <- try(lm(y ~ x))+ if (class(tf1) == "try-error")+ print("Vaya, un error")+ else print(summary(tf1))+ }> x <- rnorm(10)> y <- rnorm(10)> ffail(x, y)> y <- 34> ffail(x, y)

(311 : 351)

Page 312: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Profiling: system.time y Rprof

Nuestro objetivo aquí no es producir las funcionesmás eficientes, sino funciones que hagan lo quedeben.Las adminiciones habituales sobre no optimizar yjamás optimizar antes de tiempo.Pero a veces útil saber cuanto dura la ejecución deuna función:system.time(my.f2(runif(10000),rnorm(1000))).Rprof: un profiler para ver cuantas veces esllamada cada función y cuanto tiempo se usa enesa función. Ver la ayuda.Garbage collection: desde R 1.2.0 hay garbagecollection. Se puede ver el status con gc(), quesirve también para despejar las cosas depues deoperaciones con manejo de grandes objetos.

(312 : 351)

Page 313: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Rprof

> fC <- function(z, rep = 10) {+ for (i in 1:rep) {+ x <- rnorm(2000)^2+ y <- mean(x) - runif(length(x))+ w <- sample(y, z)+ }+ }> Rprof()> fC(300, 500)> Rprof(NULL)> summaryRprof()

(313 : 351)

Page 314: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Llamando a funciones en C/C++Se puede llamar con facilidad a código escrito enC/C++ (y en Fortran).Util si existen librerías con la funcionalidaddeseada.Util si algo en nuestro código es muy lento y fácil dereescribir en C/C++.Las herramientas necesarias son muy fáciles deconfigurar en Unix/Linux (en Linux, son parte demuchas instalaciones por defecto).Requerimientos más complicados en Windows.Ver:

I R Installation and Administration: Appendix F, "TheWindows toolset".

I R Installation and Administration: Ch. 3, "Buildingfrom source".

I R for Windows FAQ, Ch. 8, "Building from source".Se puede hacer, pero no es para uso casual. No locubriremos aquí.

(314 : 351)

Page 315: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. IIsource y BATCH

¿Qué contiene un paquetepara R?

Creación de paquetes parauso propio

Ambito: lexical scope

Try

Profiling

Llamando a funciones enC/C++

Miscell.

Desde R dos maneras de llamarlo: ".C" y ".Call".Detalles en "Writing R extenssions", Ch. 4, "Systemand foreign language interfaces"..C es mucho más fácil, y para muchos usos basta..Call nos permite manipular objetos de R desde C.Más complicado.

(315 : 351)

Page 316: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Miscell.scan vs. read.tabletapply para bootstrapcov, cor, outerFechasmergeR y bases de datosExpresiones regulares con RMapas y datos espacialesOrganización de análisis y programaciónDocumentaciónESS, Emacs, R

(316 : 351)

Page 317: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

scan vs. read.table

Comprobar si scan es más o menos rápido queread.table.Generemos un fichero largo y exportemoslo comotexto.Leamos tanto con scan como con read.table.Podemos evaluar velocidad usando "system.time".

(317 : 351)

Page 318: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

scan vs. read.table

> fichero.grande <- matrix(rnorm(200 *+ 100), ncol = 100)> colnames(fichero.grande) <- paste("V",+ 1:100, sep = ".")> write.table(file = "fichero.grande.txt",+ fichero.grande, sep = "\t",+ col.names = TRUE, row.names = FALSE)> system.time(t1 <- read.table("fichero.grande.txt",+ header = TRUE, sep = "\t"))> system.time(t2 <- matrix(scan("fichero.grande.txt",+ skip = 1, what = 0, sep = "\t"),+ ncol = 100, byrow = TRUE))> system.time(t3 <- read.table("fichero.grande.txt",+ header = TRUE, sep = "\t",+ colClasses = "numeric",+ nrows = 10005))> rm(t1, t2, t3)

(318 : 351)

Page 319: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Mirar la documentación de ambas con detallecuando muchos datos, o situaciones complejas (ej.,no convertir factor); múltiples argumentos quepueden ser de utilidad o hacer más rápida lalectura.Si fichero no cabe en memoria de un golpe, hacerloa trozos (o usar conexión a DB).

(319 : 351)

Page 320: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Connections

Forma general de leer y escribir datos de fuentesdiversas: URLs, ficheros comprimidos (gz, bz, zip),pipes, ficheros, etc.Connections pueden usarse en casi todos los sitiosdonde se usan nombres de ficheros.> gzf <- gzfile("f1.gz")> write.table(rep(letters,+ 4), file = gzf)

Ir al sistema y abrir el fichero> system("cp f1.gz f2.gz")> system("rm f2")> system("gzip -d f2.gz")> system("cat f2")

Leer de nuevo> gzf <- gzfile("f1.gz")> gzfLeido <- read.table(file = gzf)> help(connections)

(320 : 351)

Page 321: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

tapply para bootstrap

Generar bootstrap samples con mismo número demuestras por grupo que en muestra original (yasegurar que no replicamos muestra original).> x <- 1:30> y <- factor(c(rep("a", 5),+ rep("b", 10), rep("c",+ 15)))> N <- length(x)> sample.again <- TRUE> while (sample.again) {+ bootsample <- unlist(tapply(1:N,+ y, function(x) sample(x,+ size = length(x),+ replace = TRUE)))+ nobootsample <- setdiff(1:N,+ bootsample)+ if (!length(nobootsample))+ sample.again <- TRUE+ else sample.again <- FALSE+ }

(321 : 351)

Page 322: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

> bootsample> nobootsample

(322 : 351)

Page 323: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

cov, cor, outer

Dos funciones que se aplican directamente sobrematrices:> m1 <- matrix(1:20, ncol = 5)> cov(m1)> round(cor(m1), 3)> cor.test(m1[, 1], m1[, 2])> cor(apply(m1, 2, rank))

> tabla.multiplicacion <- outer(11:15,+ 11:20, "*")

A outer se pueden pasar funciones mucho máscomplejas; por ej., outer se usa en el ejemplo depersp. Ejecutemos los primeros ejemplos.> help(persp)> par(mfrow = c(1, 2))> help(image)> dev.off()

outer requiere funciones vectorizadas (applyno). Ver FAQ, 7.19 para más detalles.

(323 : 351)

Page 324: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Fechas

Posibilidad de manejo sofisticado de fechas en Rincluyendo zonas horarias.Muy importante en algunos entornos y enocasiones en análisis de series temporales.> d1 <- as.Date("2008-07-01")> class(d1)> d2 <- as.Date("02 7 de 2008",+ format = "%d %m de %Y")> d2> d1> as.numeric(d1)> d3 <- as.POSIXlt(d2)> d3> names(d3)> d4 <- as.POSIXlt("2008-07-03 14:42:05")> d4$sec> d5 <- ISOdatetime(2008, 6,+ 20, 10, 9, 12)> class(d5)> format(d5, "%A, %d %m %y %H:%M:%S")

(324 : 351)

Page 325: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Algunas operaciones con fechas

> min(c(d4, d5))> d4> d5> class(d4)> d41 <- as.POSIXct(d4)> min(c(d41, d5))> mean(c(d41, d5))> d41 - d5> d2 - d1> difftime(d41, d5)> difftime(d41, d5, units = "secs")> difftime(d41, d5, units = "weeks")> seq(from = d5, to = d4, by = "days")> seq(from = d5, to = d4, by = "weeks")> seq(from = d4, to = d5,+ by = "days")

(325 : 351)

Page 326: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

merge

merge> dA <- data.frame(id = c(1,+ 2, 3, 4), v2 = c(21,+ 22, 23, 24))> dB <- data.frame(id = c(1,+ 3, 7, 2), v3 = c(99,+ 100, 101, 500))> dA> dB> merge(dA, dB)

(326 : 351)

Page 327: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Varias filas con valores comunes: un jaleo.> datos <- data.frame(species = c("A",+ "A", "B", "B", "B", "C",+ "C"), v1 = rnorm(7),+ v2 = rnorm(7), v3 = c("a",+ "a", "b", "b", "b",+ "c", "c"), v4 = c("a",+ "a", "b", "d", "b",+ "c", "c"))> d1 <- datos[, c(1, 4)]> d2 <- datos[, c(1, 5)]> d3 <- datos[, c(1, 4)]> merge(d1, d3)> merge(d1, d2)

(327 : 351)

Page 328: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

R y bases de datos

Posible acceder a bases de datos relacionalesdesde R.Paquetes DBI y RODBC. DBI usa otros paquetesespecializados (ej., RMySQL); si existen, lo mássencillo. Si no, RODBC.Queries en SQl directamente desde R.Ver “handout” para detalles (y para no revisarsintaxis SQL).

(328 : 351)

Page 329: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Expresiones regulares con RSi se trabaja mucho con caracteres, uso deexpresiones regulares simplifica tareas repetitivas:no buscamos una cadena concreta, sino “unaexpresión” (por ejemplo, “sardina”, pero sólo si escon minúscula, no está al inicio de la frase, y noforma parte de “sardinas fritas”, etc).Muchos usuarios jamás necesitan esto: constrsplit, substring les basta.Si necesitamos todo el poder de expresionesregulares en R:grep, sub, gsub, regexpr, gregexpr.Unico problema inicial: familiarizarse conexpresiones regulares.Ver “handouts”.Ver páginahttp://www.zytrax.com/tech/web/regex.htm.Ver Google.

(329 : 351)

Page 330: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Mapas y datos espaciales

Area especializada.Hay un “special interests group”:http://r-spatial.sourceforge.net/

Varios paquetes relevantes: “maps”, “mapproj”,“maptools”, “GEOmap”, “mapdata”.Sólo mostraremos algunos ejemplos de muy altonivel (modificados de las ayudas correspondientes).Lo demás depende completamente de lasnecesidades concretas.

(330 : 351)

Page 331: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

> library(maps)> map(database = "world", regions = "japan")> identify(map("world", regions = "spain",+ fill = TRUE, col = 0))> map.scale()> map.text("world", regions = "spain")

(331 : 351)

Page 332: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

> library(maps)> par(pty = "s")> plot(lat ~ long, data = quakes)> map("world2", regions = c("New Zealand",+ "Fiji"), add = TRUE)> dev.off()

(332 : 351)

Page 333: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

(De Murrell, 2006, “R Graphics”, p. 110).> library(maps)> coplot(lat ~ long | depth,+ data = quakes, number = 4,+ panel = function(x, y,+ ...) {+ map("world2", regions = c("New Zealand",+ "Fiji"), add = TRUE,+ fill = TRUE,+ col = "grey")+ points(x, y, pch = ".")+ })

(333 : 351)

Page 334: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

mapplot

(Ayuda de mapplot, en “latticeExtra” —y ver comentarioal final de ayuda).> library(maps)> library(mapproj)> library(latticeExtra)> data(USCancerRates)> mapplot(rownames(USCancerRates) ~+ log(rate.male) + log(rate.female),+ data = USCancerRates,+ map = map("county", plot = FALSE,+ fill = TRUE, projection = "mercator"))

(334 : 351)

Page 335: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Notas generales

Crucial mantener código comentado en ficheros:permite repetir análisis, automatizar acciones,entender secuencia de acciones.De gran ayuda si los comentarios contienen fechas.Más sofisticado el uso de sistemas de control deversiones (RCS, CVS, subversion), disponiblestanto en Linux/Unix, como Unix. (Por ejemplo, RCSes estándard en Emacs).Incorporar comentarios y código en el estilo“Literate Programming”...

(335 : 351)

Page 336: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Sweave

Sweave (estándar con R) facilita el uso de un estilotipo “Literate Programming”. Tenemos código ycomentarios mezclados por completo.Ahora mismo, Sweave usa LATEX(pero podría usarotros lenguajes).Toda esta presentación escrita usando Sweave.Sweave especialmente útil para “análisisreproducibles”, elaboración de informes con datoscambiantes (pero análisis similares), etc.

(336 : 351)

Page 337: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Sweave y otros

Sweave sólo necesita una instalación funcional deLATEX.Estándard en Linux (tetex). En Windows, muyrecomendable MikTeX.Si sólo queremos HTML, podemos usar paquetes“R2HTML” o “prettyR”.

(337 : 351)

Page 338: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Documentación sobre R (I)

Los "manuales" de R, incluidos en todas lasinstalaciones. Son:

An introduction to R. De lectura requerida.Writing R extensions. Creación de paquetes,interfaz con C.R data import/export.The R language definition.R installation and administration.

Y la FAQ.

(338 : 351)

Page 339: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Documentación sobre R (II)

Documentación general:http://cran.r-project.org/other-docs.html.

Muchos libros: http://www.r-project.org/doc/bib/R-books.html

(339 : 351)

Page 340: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

R, ESS, Emacs (the usual way)

¿Por qué podríamos querer usar Emacs + ESS?Usar Emacs directamente, sin iconos ni toolbarsadicionales.La forma más sencilla en Windows: bajar Emacs(con ESS incorporado) de: http://vgoulet.act.ulaval.ca/en/ressources/emacs/.Si los shortcuts son “raros”: usar cua-mode.

(340 : 351)

Page 341: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

R, ESS, XEmacs, (a la J. Fox)Ojo: Material que no está ya mantenido por J. Fox(solo bug fixes).Toda la información está en http://socserv.

mcmaster.ca/jfox/Books/Companion/ESS/

Las últimas páginas de An Introduction to ESS +XEmacs for Windows Users of R tiene unaclarísima y detallada información de como instalary configurar ESS y XEmacs con las modificacionesde J. Fox. En resumen:Descargar XEmacs para Windows (la versiónbinaria para Windows, no para Cygwin) dehttp://www.xemacs.org/Download/win32.Si es posible, instalar todos los paquetesseleccionados por defecto (si no, ver documentoJ. Fox "An introduction to ESS (...)" para paquetesrequeridos.)Instalar R (si no está ya instalado).

(341 : 351)

Page 342: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Modificaciones (XEmacs + ESS) (I)

Muy conveniente mantener cada proyectoseparado. Separamos código, datos, etc. Para eso:

I Abrir en el Explorador de Windows el/los directoriosdonde queremos trabajar.

I Right-click en el icono de XEmacs, y arrastrar hastael directorio.

I Seleccionar "crear iconos de acceso directo aquí".

El icono de cada directorio inicia R en esedirectorio.(Si nos olvidamos, siempre podemos cambiardirectorios con "getwd").También podemos editar init.el y donde pone(setq ess-ask-for-ess-directory nil)poner (setq ess-ask-for-ess-directoryt).

(342 : 351)

Page 343: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Modificaciones (XEmacs + ESS) (II)

Podríamos querer usar XEmacs y ESS de la forma"tradicional", con el estilo genuino de XEmacs.Toda la funcionalidad de XEmacs (que se vedisminuida un poco por los keybindings tipoWindows al no permitir "C-x" como inicio desecuencia de teclas).Funciona si nos movemos a otro sistemaoperativo/otra máquina.

(343 : 351)

Page 344: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Algunas limitaciones usando "modo windows":I No podemos usar shortcuts para evaluar línea,

región o buffer (C-c C-j, C-c C-r, C-c C-b).I No podemos usar shortcuts para abrir ficheros (C-x

C-f), para guardarlos (C-x C-s), para dividir lapantalla en 2 (C-x 2, C-x 3), para seleccionar elbuffer que estamos editando (C-x b), o paracambiar de ventana (C-x o).

I Limita un uso completo y sofisticado, tanto de ESScomo de (X)Emacs.

I ESS es un sistema grande y complejo con muchasopciones. No se aprende en 2 días. (¡(X)Emacsmucho menos!).

(344 : 351)

Page 345: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Modificaciones (XEmacs + ESS) (III)

Si preferimos los keybindings de XEmacs: cambiarla linea "(defconst pc-behaviour-level 2)" a"(defconst pc-behaviour-level 0)" (Y algún otrocambio menor).

(345 : 351)

Page 346: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

R, ESS + (X)Emacs bajo GNU/Linux

Obtener (X)Emacs y ESS.En algunas distribuciones, ESS precompilado (ej.Debian). En otras hay que instalar desde ficherotar.gzSi se quiere replicar comportamiento bajo windows:se puede, modificando el .(x)emacs y el init.el.

(346 : 351)

Page 347: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Uso básico de ESS + (X)Emacs (I)Tomado de An introduction to ESS + XEmacs for Windows users of R de

J. Fox.

Frame: la ventana de Xemacs.Menu bar, toolbar: pues eso.Window: cada una de las ventanas.Minibuffer: muestra mensajes, se introducencomandos (ej., "C-s", o seleccionar "Edit/FInd" enMenubar).Buffer: lo que Xemacs está editando. Dosimportantes:

I Inferior R process: el buffer cuyo buffer name es"*R*".

I "*scratch buffer*": donde introduciremoscomandos y código para R. Lo renombraremoslo-que-sea.R.

Podemos tener muchos otros buffers (ej., podemoseditar código HTML, o C++, o Python, o Perl, oLATEX).

(347 : 351)

Page 348: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Uso básico de ESS + XEmacs (II)Mode line: información sobre el buffer que estájusto encima. Información sobre buffer name,major mode, font, column and row. (Ojo: lanumeración de la columna empieza por 0 pordefecto).El buffer que estamos editando es lo que está enmemoria, no es el fichero mismo. Los cambios sólose guardan si salvamos el buffer.Se crean ficheros "nombre˜ " que son copias delanterior estado del buffer. También se puedeseleccionar para que Xemacs haga copiasperiódicas (útil en caso de crash.)La extensión de un fichero ayuda a (X)Emacs aelegir el modo de edición apropiado. Para nuestrosficheros con código en R usaremos ".R" (o ".r" o".s" o ".S"). Pero, ¿qué pasa si abrimos (o creamos)un fichero con extensión Py, cpp, tex, html?

(348 : 351)

Page 349: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Uso básico de ESS + XEmacs (III)

Iniciamos XEmacs en el directorio de nuestrointerés.Abrimos o creamos un fichero con código en R.El fichero de configuración de J. Fox reserva elbuffer inferior para R, así que otros buffers sólo porarriba.Escribimos algo de código en R...

(349 : 351)

Page 350: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

(Cosas a probar)

Edición de código.Envío de una línea.Envío de una región marcada.Envío de un buffer entero.Guardar una figura como Metafile.Trabajar directamente en *R*, editando comandos,completando comandos, etc.Podemos instalar paquetes desde "ESS/R"(tenemos que estar en un buffer con código R).Salir de R. Es preferible hacer explícito la salida deR via "q()" (en vez de usar el menú de "File/ExitR").

(350 : 351)

Page 351: R: estadística, programación, manejo y representación de datosligarto.org/rdiaz/Courses/CursoAztiOctubre2008-B.pdf · Enfatizaremos manejo de datos en R y gráficos y la programación

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Métodos y técnicasestadísticas:modelos lineales yGLMs

Prog. II

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regulares con R

Mapas y datos espaciales

Sweave et al.

Docs.

ESS, Emacs

Shortcuts útiles en ESS y XEmacs

Los siguientes funcionan tanto con como sin lasmodificaciones de J. Fox."M-x comment-region" ("M" es la "Meta key" quecorresponde a "Alt")."C-s": incremental forward search."C-r": incremental backward search."M-Shift-5": query replace."M-g": Ir a linea (no en Emacs por defecto).

(351 : 351)