r: estadística, programación, manejo y representación de...
TRANSCRIPT
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)