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

522
Objetivos Introducción R: lenguaje Import/Export Gráficos en R Progr. I Estadística con R (I) Estadística con R (II): Intro a modelos lineales Estadística con R (III) Prog. II Progr. III: Debugg Parall. Miscell. Estadística con R (IV): Modelos lineales con R ESS, Emacs R: estadística, programación, manejo y representación de datos Ramón Díaz-Uriarte Biología Computacional Centro Nacional de Investigaciones Oncológicas (CNIO) [email protected] http://ligarto.org/rdiaz Copyright © 2011 Ramón Díaz-Uriarte Master Bioinformática, 18-31 Enero, 2011 (1 : 511)

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

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 © 2011 Ramón Díaz-Uriarte

Master Bioinformática, 18-31 Enero, 2011

(1 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Licencia y copyright

This work is Copyright, ©, 2011, Ramón Díaz-Uriarte, andis licensed under the Creative Commons

Attribution-NonCommercial-ShareAlike License. To view acopy of this license, visit

http://creativecommons.org/licenses/by-nc-sa/3.0/

or send a letter to Creative Commons, 559 Nathan AbbottWay, Stanford, California 94305, USA.

*****************************Please, respect the copyright. This material is provided freely, and if you use

it, I only ask that you use it according to the (very permissive) terms of the

license: attribution, non-comercial use, and a share alike license. If you have

any doubts, ask me.(2 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

TemarioObjetivos

Introducción

R: lenguaje

Importar y exportar datos

Gráficos en R

Programación en R (I)

Estadística con R (I)

Estadística con R (II): Intro a modelos lineales

Estadística con R (III)

Programación en R (II)

Programación en R (III): errores, debugging, profiling

Programación en R (IV): paralelización y ff

Miscell.

Estadística con R (IV): Modelos lineales con R

ESS, Emacs, R

(3 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 (desdeun test de la t a un glm) es solo cuestión de saber queargumentos usar (y entender la estadí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.Qué/cómo vemos lo configuraremos una vezterminemos con intro. modelos lineales.

(4 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

R, estadística, . . .

Sobre todo veremos RDe estadística unas nocionesR y la estadística; un bisturí y la cirugía

(5 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Código

Todo el código está disponible (o basta con hacer cutand paste) de los ficheros *.R.Mucho mejor que lo tecleéis:

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 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

IntroducciónQué son R y SInstalación de RPrimera sesiónAyuda y documentaciónEditores y GUIs para RPaquetes adicionalesActualizando R

(7 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Qué son R y S

" R, also known as “GNU S”, is a language andenvironment for statistical computing and graphics. Rimplements a dialect of the award-winning languageS, developed at Bell Laboratories by John Chamberset al. For newcomers it provides easy access to awide variety of statistical and graphical techniques.Advanced users are offered a full-featuredprogramming language with which to add functionalityby defining new functions."" [S] has forever altered the way how people analyze,visualize and manipulate data" (Association ofComputer Machinery Software System Award 1998 aJohn Chambers).Probablemente, S y R son los dos lenguajes másusados en investigación en estadística.

(8 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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áficas parapapers).

La comunidad de R es muy dinámica (ej., crecimientoen número de paquetes), integrada por estadísticosde 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++.

(9 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿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 "freeis 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

(10 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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ón almanejo y análisis de datos:

I Podemos modificar las funciones preexistentes (ej., sino 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).

(11 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 las fuentes.I Obtener binarios (ej., *.deb para Debian).

(12 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Inicio de una sesión de R

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

(13 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ayuda incluida con el programa

?rnorm

help(rnorm)

help("+")

help.start()

?help.search

help.search("normal")

?apropos

apropos("normal")

Si hay acceso a internet: RSiteSearch("logisticresiduals")

Y qué hace eso? ?RSiteSearch

(14 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ayuda (II)

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.> R.home()> system.file("demo", package = "stats")

(15 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ayuda (III)

Mecanismo muy potente en paquete sos

http://cran.r-project.org/web/packages/sos/vignettes/sos.pdf

(16 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Reference cards **

http://cran.r-project.org/doc/contrib/refcard.pdf

http://cran.r-project.org/doc/contrib/Short-refcard.pdf

(17 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Documentación

Referencia más extensa al final. Pero debemosmencionar:Toda instalación de R incluye manuales. El primero aleer: “An introduction to R”.An introduction to R: software for statistical modellingand computing, de P. Kuhnert y W.. Venables, enhttp://cran.r-project.org/doc/contrib/Kuhnert+Venables-R_course_Notes.zip.A guide for the unwilling S user, de P. Burns. En http:

//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.

(18 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

An R and S-PLUS companion to applied regression,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/).

(19 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(20 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Desde dónde ejecutamos R?

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

(21 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Una primera sesión **

> ## 5 numeros aleatorios de una> ## distribucion normal (mean= 0, sd = 1)> rnorm(5)> ## Los números se producen, y se muestran (print).>> ## asignamos esos números a un objeto (un vector)> ## llamado x.> x <- rnorm(5)> x> ## mostrar un "summary" de x (un summary "inteligente").> summary(x)> ## o también:> w <- summary(x)> ## summary(x) TAMBIEN es un objeto.> ## (virtually) "everything is an object".>> # teclear w y print(w) producen el mismo resultado.> w> print(w)>

(22 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(23 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> 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()> library(lattice)> xyplot(x2 ~ x1 | tipo,+ type = c("p", "r"))

(24 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Editores y GUIs para R

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 estas líneas aR").Una página desactualizada con muchas de lasposibilidades existentes: http://www.sciviews.org/_rgui/projects/Editors.html.Otras notas: http://www.stats.uwaterloo.ca/stats_navigation/StatSoftware/Essential-Software/pdf/EclipseAndEmacs.pdf (sobre todo Emacs!!)

(25 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Distinción entre GUI y editor.GUI vs. no GUI una compleja discusión.

(26 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 paquetes estadísticos(ej., SAS, XLispStat, Arc, etc) y numéricos (ej.,Octave).Lo que yo usaré.(X)Emacs es MUCHO más que un editor pero

I (X)Emacs con ESS no es "familiar" para los usuariosde Windows (menos con las modificaciones de J. Fox— ?).

Instrucciones mínimas en “R, ESS, Emacs (the usual way)” ).

(27 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 yo hetenido problemas en Linux.Lo deberíais tener instalado (si nohttp://rosuda.org/JGR/down.shtml).

(28 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Rkward

http://rkward.sourceforge.net/

Sencillo, “runs out of the box”.Ahora ya disponible para Windows también (noMacs).

(29 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Editores: resumen práctico

Yo usaré Emacs + ESSTenéis disponibles Emacs, Rkward, JGRPodéis instalar cualquier otra cosa que queráis u osguste.Algunas otras opciones . . .

(30 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 en Linux(?), y Eclipse tiene sus peculiaridades en cuanto amodus operandi.Notas:http://jeromyanglim.blogspot.com/2010/02/getting-started-with-sweave-r-latex.html y http://www.splusbook.com/R_Eclipse_StatET.pdf (un “clásico”).

(31 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

JEdit

Hay varios plugins para JEdit. Uno de Zed Shaw, otrode José Claudio Faria y otro de Tobias Elze. El de JCFaria parece el más reciente. Trucos de instalación enhttp://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 cambiar enel futuro —pero lleva años sin hacerlo).

(32 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Sciviews-K

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

Una especie de “cross-platform Tinn-R”.Aun en desarrollo (y así lleva dos años, y con escasadocumentación).Muy atractivo, pero . . .

(33 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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”.Muchos plug-ins desarrollados recientemente.

(34 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Otros

Coloreado de sintaxis (y completado de paréntesis?)para Vim y Nedit, pero nada similar a la interaccióncon un buffer con R.Opciones para otros editores (Syn, TextPad, UltraEdit,CrimsonEditor) pero sólo coloreado, no envío decódigo (CrimsonEditor sí, con customización?).

(35 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Paquetes adicionales

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

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

(36 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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).

(37 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Qué paquetes están disponibles en nuestroordenador? **

Podemos hacer:> library()> search()

Instalemos algún paquete (por ej., randomForests).Otra vez:> search()> library(randomForest)> search()

Y ahora> detach(2)> search()

Repitamos a nuestro antojo.

(38 : 511)

Objetivos

IntroducciónQué son R y S

Instalación de R

Primera sesión

Ayuda y documentación

Editores

Paquetes adicionales

Actualizando R

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Actualizando R (Linux)

Depende de la configuración y distribución de Linux.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)

(39 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

R: lenguajeObjectos: tipos, atributos, nombresListasNA et al.Vectores de caracteresOperadoresGeneración de secuenciasOrdenación e indexación de vectoresNombres de objetos y asignacionesFactoresMatrices y arraysdata framesAtributos de los objetosTablasLa family applyMiscel. precaucionesClases S3 y S4

(40 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Tipos de objetos (I)

(Casi) todo en R es un objeto.vector Colección ordenada elementos del mismo tipo.> 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.

(41 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Tipos de objetos (II)

data frame Como array, pero permiten elementos(columnas) de distintos tipos. El objeto más habitualpara manejo de datos procedentes de experimentos.

> 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))

(42 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Tipos de objetos (III)

funciones Código.factor Un tipo de vector para datos categóricos.list Un "vector generalizado". Cada lista está formadapor componentes (que pueden ser otras listas), ycada componente puede ser de un tipo distinto. Sonunos "contenedores generales". Empezamos conesto.

(43 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Listas

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

(44 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Las data.frames son, en realidad, tipos especiales delistas.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.

(45 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> 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(medias = las.medias,+ varianzas = las.vars,+ maximo = max.total,+ factor.clases = tabla.clases))+ }> my.fun(d3)

(46 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> (una.lista <- my.fun(d3))> attributes(una.lista)> names(una.lista)> length(una.lista)> una.lista[[4]]> una.lista[4] # por qué sale el nombre?> una.lista$factor.clases> una.lista[[3]] <- list(NULL)> una.lista> una.lista[[3]] <- NULL> una.lista # hemos eliminado el "slot" maximum> 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"))

(47 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

([[]] evalua el argumento, pero $ no)> otra.lista> ae <- "cucu"> otra.lista[[ae]]> otra.lista$ae

(48 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

(49 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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))> X.no.na <- na.omit(XNA)> X.no.na> complete.cases(XNA)

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

(50 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 ="")

(51 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Dividiendo un vector de caracteres

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

(52 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(53 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ver grep, pmatch, match, tolower,toupper, sub, gsub, regexpr.Ver “Expresiones regulares con R” .Un ejemplo corto en “Ejemplo de grep” .

(54 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 intuitivosi la operación es escalar con vector. Pero tambiénocurre en operaciones entre vectores.> x + 15> x2 <- 1:3> x + x2

El reciclado cuando (vector, escalar) suele ser lo quequeremos. Entre vectores no siempre: cuidado. (R daun warning, de momento –S4 classes dan un error).¿Qué hace paste?

(55 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 Habitualmente más eficiente (en tiempo y memoria).

(56 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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?

(57 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

pmax, pmin. max and min devuelven el máximo y elmínimo de un conjunto de números; devuelven unsolo número aunque les pasemos varios vectores.pmax, pmin devuelven un vector que contiene elelemento 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.

(58 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(59 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Operadores comparativos y lógicos

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

min(x) no tiene sentido si x no es numérico.> if (is.numeric(x) & min(log(x)) > 0)+ {print('las dos cond. satisfechas')})> log(x)

(60 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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"

(61 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿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)

(62 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Interludio: comparando números realesDe la FAQ, 7.31. “Why doesn’t R think these numbersare equal?” (http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f)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.Por tanto “two floating point numbers will not reliablybe equal unless they have been computed by thesame algorithm, and not always even then. Forexample”> a <- sqrt(2)> a * a == 2> a * a - 2

(63 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(Problemas causados por la comparación indebida denúmeros reales son habituales en las listas de R.)

(64 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

(65 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Generación de secuencias aleatorias

Muestrear un vector (imprescindible en bootstrappingy 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, size = 4, prob = probs)> sample(x, size = 4, prob = probs,+ replace = TRUE)

(66 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ej: validación cruzada

Validación cruzada con aprox. mismo número encada grupo. (De Venables y Ripley, "S programming",p. 175).¿Qué es validación cruzada?> x2 <- rnorm(27)> N <- length(x2)> knumber <- 10> ## en la k-vez, dejamos en testing set> ## los que tienen index.select = k>> index.select <- sample(rep(1:knumber,+ length = N),+ N, replace = FALSE)> rep(1:knumber, length = N)> table(index.select)> sum(index.select != 1)> sum(index.select != 10)> sum(index.select != 6)>

(67 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Números aleatorios

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

Y la semilla?> set.seed(53)> runif(1)

Y el generador?> ?RNGkind

OJO si cálculos en paralelo.

(68 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Números aleatorios

Muchas funciones de distribución:lognormal, t, F, χ2, exponential, gamma, beta,poisson, binomial, etc. Ver, por ejemplo, sección 8.1de An introduction to R y R for beginners, de E.Paradis. (También la densidad, quantiles y funcióncumulativa de todas estas distribuciones).

(69 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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))

(70 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

(71 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

(72 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Analizando secuencias

Identificar cambios en secuencias y saber quéelementos son únicos.> ## z5> ## rle(z5)> (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)>> ## Y con doubles?

(73 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Indexación de vectores

Una de las grandes virtudes de R es la flexibilidad enel acceso 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")]

(74 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 resulte enuna 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

(Ojo: “replacement functions” crean una nuevacopia.).

(75 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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".

(76 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Una pequeña disgresión . . .

¿Qué nombres podemos usar?¿Como asignamos? <- vs. =.

(77 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 Mejor evitar el punto (dispatch en clases S3).I Mejor evitar nombres que R usa (ej., "c"’) (pero no es

dramático si nos confundimos: podemos arreglarlo).

(78 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Asignaciones

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

Las asignaciones se hacen con "<-" (o con “=”), y esbuen estilo el rodear "<-" por un espacio a cada lado.x <- 1:5x<-1:5

Mucho ojo con “«-”.

(79 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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).

(80 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Nombres de objetos

Las normas habituales de nombrar objetos enprogramación (usar estilo consistente, uso razonabledel ".", nombres que tengan sentido —equilibrio entrelongitud y frecuencia de uso, etc).Nombres de vectores, matrices, data framesNombres de variablesNombres de funciones y “.”Existen propuestas de “coding standards”.Sobre el uso de ";". No es bueno abusar, porque haceel código muy difícil de leer.

(81 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Factores

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

Pero no deberíamos usar el código postal en, por ej., unANOVA, como si fuera un vector numérico. El usarcódigos (aparentemente) numéricos en análisisestadísticos es una frecuente fuente de errores.> codigo.postal <- factor(codigo.postal)

(82 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Si tenemos un vector con caracteres, y lo queremos usarpara un análisis, necesitamos convertirlo en un factor. Sino, R, sabiamente, protesta.> y <- rnorm(10)> x <- rep(letters[1:5],+ 2)> aov(y ~ x)> aov(y ~ factor(x))

(83 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 . . .

(84 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

orden y niveles de factores

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

Ver también relevel para escoger nivel dereferencia.

(85 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

nombres de los niveles

> (ftr3 <- factor(c("alto", "bajo", "bajo", "medio"),+ labels = c("a", "b", "m")))> (ftr4 <- factor(c("alto", "bajo", "bajo", "medio"),+ labels = c("a", "b", "m"),+ levels = c("b", "m", "a")))> (ftr5 <- factor(c("alto", "bajo", "bajo", "medio"),+ labels = c("a", "b", "m"),+ levels = c("bajo", "medio", "alto")))> table(ftr3, ftr5) ## que ha pasado??!!!> ### (Menos mal que hemos comprobado)> (ftr6 <- factor(ftr3, levels = c("b", "m", "a")))> table(ftr3, ftr6)> (ftr7 <- factor(ftr2, labels = c("b", "m", "a")))> table(ftr3, ftr7)

(86 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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))

(87 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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))

(88 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Agrupar algunos niveles

> (f1 <- factor(letters[1:8]))> levels(f1) <- list(A = letters[1:4],+ Z = letters[5:14])> f1> (f1 <- factor(letters[1:8]))> levels(f1) <- list(A = letters[1:4],+ Z = letters[6:7])> f1> ## Pero, no deberiamos haber verificado el output?>

(89 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Combinar factores

> f1 <- factor(letters[8:1])> 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))

(90 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

R también cuenta con "ordered factors". Sólo difierende los factors "normales" en algunos análisis (tipo decontrastes usados con modelos lineales —treatmentvs. 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áctica estadística".

(91 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(92 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 matrix esmá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 de atributos:> a1 <- 1:20> dim(a1) <- c(5, 4)> a1

(93 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)]

(94 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 elemento enla primera columna, y su columna por el elemento enla 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.

(95 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Del libro de P. Spector (con algún cambio) En casa> (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])

(96 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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), ]

(97 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 (si no,nos encontraremos con errores como> a2 <- a1[, 1]> apply(a2, 2, mean)

(98 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Operaciones matriciales: muchas disponiblesincluyedo factorizaciones como svd y qr,determinantes, rango, solución de sistemas, etc. Y,claro, diag, producto de matrices %*%, traspuesto t,crossprod.

(99 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Matrices rbind, cbind y otros

Para combinar vectores o arrays para obtener arrays,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)

(100 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 algunos procedimientos(accesos a “named components” pueden ser máslentos).“Dropping col and row names” sólo justificado enocasiones.

(101 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

data frames

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

No es eso lo que quiero. Quizás quería un data.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" convertidos afactores (una ventaja).

(102 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

de arrays a data frames

Podemos convertir matrices a data frames conas.data.frame().Por estas razones, las data frames suelen ser objetosmás útiles que las arrays. Permiten lo mismo que lasarrays, pero se puede guardar/acceder a otrainformación.Las data.frames también tienen rownames,colnames.> attributes(df1)

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

(103 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

... y de data frames a arrays

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

¿Y aquí qué pasa? En casa> (a9 <- cbind(1:10, letters[1:10]))> (a9 <- data.frame(a9))> data.matrix(a9)> as.matrix(a9)> ### qué son en realidad las columnas?> summary(a9)> is.factor(a9[, 1])> a9[, 1]

(104 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ordenando otra vez En casa

> (u <- c(1, 1, 2, 2))> (v <- c(9, 8, 6, 7))> order(u)> order(v)> order(-v)> order(u, v)> cbind(u, v)> cbind(u, v)[order(u, v), ]> order(u, -v)> cbind(u, v)[order(u, -v), ]

(105 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ordenar data frames y de donde salen lasvariables

(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 = -z))> (dd[ order(x, y, z), ])> ## De donde salen x, y, z??> (dd[ order(x, y, -z), ])> rm(x, y, z)> (dd[ order(x, y, z), ])> ## Ordenar con _SUS_ columnas.> (dd[ do.call(order, dd) ,])

Y qué hace do.call? . . .

(106 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

data.frames: $ y attach

Usar $ facilita el acceso y creación de nuevascolumnas. Más fácil que con matrices.> 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)))

(107 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Otra vez: dónde encontramos los objetos . . . .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))

(108 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

with y within

> with(d1, 20 * g1)> with(d1, g2 <- 20 * g1)> d1> d3 <- d1> within(d3, g2 <- 20 * g1)> d3> d4 <- within(d1, g2 <- 20 * g1)> d4> d5 <- with(d1, g2 <- 20 * g1)> d5

(109 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Precauciones con attach()

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

(110 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

. . .

Además, la actualización no es dinámica, y podemosno entender lo que pasa . . .> d1$g3 <- "nueva columna"> d1 # aquí está. Y en g3?> g3)> detach() # detach(d1) es equivalente> attach(d1)> g3> edad # y esto qué?> search()> ls()> rm(edad)> edad> detach(d1)

(111 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

En general (y sobre todo en análisis que se prolongan enel tiempo) mejor evitar attach() y acceder siempre a lasvariables usando su localización explícita y completa.

(112 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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")))

(113 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(114 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

aggregate

Escenario: un data frame; varias réplicas de la mismaespecie (especie); queremos "colapsar" por especie ymostrar la media de las variables numéricas.(Nuestro primer ejemplo de built-in data. Más detallesen “Cargando built-in data” )> data(iris)> help(iris)> summary(iris)> aggregate(iris,+ list(id = iris[, "Species"]),+ FUN = mean)> aggregate(iris[, -5],+ list(id = iris[, "Species"]),+ FUN = mean)

¿Y si hubiera missing values?

(115 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

aggregate: más complicado En casa

Escenario: un data frame; varias réplicas de la mismaespecie (especie); queremos "colapsar" por especie.Si es una variable numérica, hallar la mediana; sicategórica, sólo debería haber un valor (el nombre dela especie y el investigador)

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

(116 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> aggregate(iris, list(id = iris[, "Species"]),+ FUN = colapsar)

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

(117 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

(118 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

(119 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

by

aggregate usa una función que devuelve solo unescalar. ¿Y si queremos otra cosa? by> (iris0 <- iris[c(1, 2,+ 3, 51, 52, 53, 101,+ 102, 103), c(1, 2,+ 5)])> 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).

(120 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

reshape, stack, unstack En casa; porencima

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.Ojo: posible falsa impresión con unstack output aquí.

(121 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Y si diferente número de casos cada especie?> iris.nn <- iris[c(1:50, 51:90, 101:110), ]> (unstack(iris.nn, form = Sepal.Length ~+ Species))

(122 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

reshape mucho más flexible (y con muchos másargumentos, y mucho más complicada). Ejemplo dela 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 complicada (intentadlocon Excel!)Para unir “inteligentemente” data frames porcolumnas/filas comunes: ver “merge” .

(123 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(124 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> 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)

(125 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

(Ojo: “reciclado” con cbind de data frames?)> cbind(iris0[, 1:2], iris0[1, 3])> cbind(iris0[, 1:2], iris0[1:2, 3])

(126 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplo de grep En casa —con conexiónrápida a Internet!

Si quisieramos instalar todos los Rcmdr plugins> allPck <- available.packages(contriburl =+ contrib.url("http://stat.ethz.ch/CRAN"))> install.packages(allPck[grep("Rcmdr", aa[, 1]), 1],+ repos = "http://stat.ethz.ch/CRAN")

(127 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Qué es este objeto?

> x <- 1:20> x> 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()

Pero los objetos nos dicen cosas sobre sí mismos . . .

(128 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Atributos de los objetos En casa

> 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)> attributes(x)> z <- c(TRUE, FALSE)> mode(z)> class(x)> class(y)> class(z)

(129 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> 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)> mode(x1)> mode(x2)> class(x1)> class(x2)

Los atributos podemos verlos, pero también podemoscambiarlos (luego un ejemplo).

(130 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Operadores y otros “objetos del sistema” Encasa

> class(`+`)> class(`if`)> typeof(`+`)> typeof(`if`)> `+`> `if`> miSuma <- `+`> miSuma> miSuma(8, 9)

(131 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Listas y dims En casa

> (l1 <- as.list(1:20))> dim(l1) <- c(4, 5)> l1> class(l1)> mode(l1)> is.list(l1)> is.matrix(l1)> is.array(l1)> typeof(l1)> attributes(l1)> ## A ver qué pasa en el subsetting?> l1[c(2, 3), c(4, 5)]> l1[matrix(c(2, 4, 3, 5), byrow= TRUE, ncol = 2)]> ## Convertir en "matriz de verdad"> ll3 <- l1> mode(ll3) <- "numeric"> ll3[matrix(c(2, 4, 3, 5), byrow= TRUE, ncol = 2)]> (l1 <- as.list(1:20))> dim(l1) <- c(3, 2)> dim(l1) <- c(5, 8)

(132 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Matrices: de carácter a numérico En casa

Un ejemplo de uso de atributos. Si directamenteusamos “as.numeric” se pierden las dimensions. (DeBert 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

(133 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

table

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

(134 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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))> cbind(v1, v2)> table(v1, v2)> ## fijaos en valores con entradas de 0> ## queremos preservarlas en el data frame?> as.data.frame(table(v1, v2))>

(135 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Márgenes y proporciones

> addmargins(tt2, 1)> addmargins(tt2, 2)> addmargins(tt2, c(1, 2))> addmargins(tt2)> 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)>

(136 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Más de dos dimensiones y xtabs

> ## eliminar columnas para ejemplo ftable> 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))> ## ftable muy util a medida que añadimos dimensiones

(137 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Más xtabs

> (t1 <- xtabs( ~ Age + Lrn, data = quine))> (dft1 <- as.data.frame(t1))> xtabs(Freq ~ Age + Lrn, data = t1) ## silly> xtabs(Freq ~ Age + Lrn, data = dft1)> as.data.frame(ftable(quine2))> as.data.frame(xtabs(~ Eth + Sex + Age,+ data = quine))>

(138 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

(139 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)})> 2 * ax[1, ]

(140 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> 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))

(141 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Operar con apply generalmente mucho más eficienteque loops (además de más claro, más fácil, etc, etc).apply conserva los nombres de filas y columnas, siexisten.sapply, lapply son como apply pero no hay queespecificar el "margin"; sapply intenta simplificar elresultado a un vector o a una matriz (la "s" es de"simplify"), pero lapply siempre devuelve una lista.Ambas pueden aplicarse a vectores, listas, arrays.

(142 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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]))

(143 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(144 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

(145 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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".tap2 es un “array de listas”. Hemos visto algoparecido antes.

(146 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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é? En casa> by(iris[, -5], iris[, 5], median)

(147 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Que ocurre con by y median? En casa

> by(iris[, -5], iris[, 5], median)> by(iris[, -5], iris[, 5], function(x) x)> by(iris[, -5], iris[, 5], function(x) class(x))> median(iris[, -5])> lapply(iris[, -5], median)> class(iris[, 1])> (i2 <- by(iris[, -5], iris[, 5],+ function(x)+ unlist(lapply(x, median))))

(148 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Mezclando ideas . . . En casa

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> is.list(i2)> 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

(149 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

mapply

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

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

Perfecto para usarse en combinación conexpand.grid.> condiciones <- expand.grid(x = c(1,+ 5), y = c(0.1, 4))> mapply(hh, condiciones[,+ 1], condiciones[, 2],+ 4)

(150 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

(151 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

apply, sapply, lapply y tapply son funcionesmuy útiles que contribuyen a hacer el código máslegible, fácil de entender, y facilitan posterioresmodificaciones y aplicaciones.Cada vez que vayamos a usar un "loop" explícito,intentemos substituirlo por algún miembro de la ilustrefamilia apply.

(152 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(153 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

strsplit : Dividiendo un vector de caracteres Encasa

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])

(154 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Miscel. precauciones En casa

> d1 <- data.frame(g1 = 1:10, g2 = 31:40)> rownames(d1)> d1["1", ]> d1["11", ]> colnames(d1)> d1["g1"]> d1["g34"])

(155 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> xnn <- 1:10> names(xnn) <- letters[1:10]> xnn> xnn["b"]> xnn[NA]> xnn[NA] <- 99> xnn> xnn[as.character(NA)] <- 99> xnn> names(xnn)[5] <- NA> names(xnn)[2] <- as.character(NA)> names(xnn)[8] <- "NA"> which(is.na(names(xnn)))> xnn["NA"]> xnn[as.character(NA)] <- 99> xnn

(156 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> xnn <- 1:10> names(xnn) <- letters[1:10]> xnn + numeric()> xnn + vector()> xnn + NULL

(157 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Clases S3 y S4

Lenguaje orientado a objetos, incluyendo herencia y“method dispatch”.Clases S3: method dispatch haciendofunction.class.Funciones genéricas S3: “UseMethod”.> print> print.lm> apropos('.*\\.lm$')> ?getAnywhere> ## Ojo con objetos no exportados> library(rpart)> post.rpart)> getAnywhere("post.rpart")> apropos('.*\\.rpart$')>

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

(158 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

Ahora creamos algunos objetos:> m1 <- Matrix(1:9, nrow = 3)> m2 <- Diagonal(5)> x <- 0:10> y <- c(26, 17, 13, 12,+ 20, 5, 9, 8, 5, 4,+ 8)> fit1 <- lm(y ~ x)

(159 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Accediendo a los elementos> class(fit1)> isS4(fit1)> print(fit1)> print.lm(fit1)> fit1> names(fit1)> fit1$coefficients> coefficients(fit1)> isS4(m1)> getClass(class(m1))> slotNames(m1)> slotNames(m2)> m1> m1@Dim> m1@x> m2@Dim

Limpiamos> detach(package:Matrix)

(160 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Resumen

Una vez que los datos están en R, su manipulaciónes muy flexible.Podemos seleccionar variables, casos, subseccionesde datos, etc, de acuerdo con criterios arbitrarios (queusan, además, condiciones que pueden implicar a unnúmero arbitrario de variables 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).

(161 : 511)

Objetivos

Introducción

R: lenguajeObjectos: tipos,atributos, nombres

Listas

NA et al.

Vectores de caracteres

Operadores

Generación desecuencias

Ordenación e indexaciónde vectores

Nombres de objetos yasignaciones

Factores

Matrices y arrays

data frames

Atributos de los objetos

Tablas

La family apply

Miscel. precauciones

Clases S3 y S4

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Podemos verificar "on-the-fly" que estastransformaciones hacen lo que queremos que hagan(mirando selectivamente los resultados, o "emulando"el proceso en unos datos artificiales más pequeños).Por tanto, una vez que los datos están en R, no haymuchas razones para exportarlos y hacer la seleccióny 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” ).

(162 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Importar y exportar datosread.table, write.tablesave.image y load: formato binarioBuilt-in dataExcelMiscell.

(163 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Leer datos: read.table

Fichero simple, separado por tabuladores:ejemplo-excel.txt.> (datain <- read.table("fichero-entrada-1.txt",+ header = TRUE, sep = "\t",+ comment.char = ""))> summary(datain)

Fijaos en los NA, y el espacio en blanco en el ficherooriginal.

(164 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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úmero fijode 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.

(165 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 —columnavacía).Muchos errores de lectura relacionados con distintonúmero de columnas. Usar count.fields paraexaminar donde está el problema.> read.table("fichero-pocho.txt",+ header = TRUE, sep = "\t",+ comment.char = "")> count.fields("fichero-pocho.txt",+ sep = "\t",+ comment.char = "")

(166 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Exportando datos

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

row.names y col.names: TRUE o FALSE?

(167 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

col.names = NA. En casa> write.table(file = "fichero-salida-3.txt",+ datain,+ quote = FALSE,+ col.names = NA,+ sep = "\t")> ## Y esto??> write.table(file = "fichero-salida-4.txt",+ datain,+ quote = FALSE,+ col.names = NA,+ row.names = FALSE,+ sep = "\t")>>> ## Mirad ayuda write.table, sección "CSV files"

(168 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

scan Info adicional

scan es una función más general, util con conjuntosde datos grandes o cuando poca memoria. (Ver

“scan vs. read.table” ).Menos cómodo para conjuntos de datos de tamañomoderado.(¿Y qué hacemos con datos monstruosamentegrandes? ff y “very large data” )Línea a línea: “readLines”, “writeLines”.

(169 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Guardando datos en formato binario R

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(a1, a2, a3, file = "unos.datos.guardados.RData")

Los leemos con load.Por ejemplo:> ## Arrancamos nuevo R, o borramos todo> rm(list = ls())> ls()> ## Cargamos fichero *.RData> load("unos.datos.guardados.RData")

(170 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Podemos salvar todos los objetos con> save.image() # salvado como ".RData"> ## Por ej., haced ls desde la shell

El fichero ".RData" es cargado al iniciarse R. (Hacedla prueba a cerrar R y arrancar otra vez).(La pregunta que hace sobre “Save workspace”cuando tecleáis q())OJO: R, por defecto, carga el “.RData” si loencuentra!!!

(171 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

.RData con más control

> AA <- 23> BB <- 45> save.image(file = "un.nombre.RData")> ## frente a "save.image()

Probablemente mucho mejor que dejar por ahí“.RData” que se cargan por defecto.Y qué diferencia hay entre> save.image(file = "un.nombre.RData")> save(a1, a2, a3, file = "otro.nombre.RData")

(172 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Cargando built-in data

Muchos paquetes (y “R base”), incorporan ficheroscon datos.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

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

(173 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 99s).

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

(174 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Importando de Excel: paquete "gdata"

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

(175 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 necesitar sintaxis SQL?

(176 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

OpenOffice calc a R

http://wiki.services.openoffice.org/wiki/R_and_Calc

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

(177 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Todos los data sets que hay en estapresentación

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”

(178 : 511)

Objetivos

Introducción

R: lenguaje

Import/Exportread.table, write.table

save.image y load:formato binario

Built-in data

Excel

Miscell.

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Importar de/exportar a otros programas

Ver paquete “foreign” (http://cran.r-project.org/web/packages/foreign/index.html).Escribir y leer: Minitab, S, SAS, SPSS, Stata, Systat,. . . .

(179 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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áficasGráficos 3D e interactivosOtros

(180 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 en elcapí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; elcapítulo 12 de An introduction to R.Libro Lattice, libro ggplot2 , documentación vcd.También demo(graphics).

(181 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

plot()

plot() función gráfica básica.> ## Modificado de "Introductory statistics with R">> attach(iris) ## OJO!> 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, col = "green")> abline(a = -2, b = 1.3, col = "blue", lty = 3)> text(3, 4, "Algo de texto")> mtext("mtext en side 1", side = 1)> mtext("mtext en side 2", side = 2,+ line = -3, cex = 2)

(182 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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")>

(183 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

De dónde cogemos los datos?La mayor parte de las funciones gráficas tienen un“data =” como argumento en alguna de susversiones.> detach(iris)> plot(Sepal.Length ~ Sepal.Width,+ data = iris)> plot(Sepal.Width,+ Sepal.Length)> with(iris, plot(Sepal.Width,+ Sepal.Length))

(184 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Con text podemos representar caracteres de textodirectamente:> attach(iris)> plot(Sepal.Width, Sepal.Length,+ type = "n")> text(Sepal.Width, Sepal.Length,+ labels = Species, col = c("red",+ "green", "blue")[Species])

(185 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> ## Lo siguiente vale, pero no lo hago> ## plot(Sepal.Width, Sepal.Length,> ## col = c("red", "green",> ## "blue")[Species])>>> plot(Sepal.Width, Sepal.Length, type = "n")> points(iris[, 2], iris[, 1],+ col = c("red", "green",+ "blue")[Species])> legend(2.1, 7.5, levels(Species),+ col = c("red", "green", "blue"),+ pch = 1)> detach()

(186 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

plot: pch, col, lty

Tipos de puntos: por qué funciona esto?> 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")

points: forma sencilla añadir tercera dimensión(diámetro de punto, color, etc). Por ejemplo, Bubble plots

(187 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Tipos de líneas: por qué funciona esto?> par(pty = "s")> 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 (longitudde los segmentos que son alternativamente dibujadosy 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 los ejes, etc.Hay muchos más colores. Ver palette, colors.

(188 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Boxplots

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

boxplot tiene muchas opciones; se puede modificarel aspecto, mostrarlos horizontalmente, en una matrizde boxplots, etc. Vease la ayuda (?boxplot).

(189 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Jittering en scatterplots

Los datos cuantitativos discretos pueden ser difícilesde 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))> ## mirad ayuda de jitter

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

(190 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Identificación interactiva de datos

identify muestra etiquetas.> x <- 1:10> y <- sample(1:10)> nombres <- paste("punto", x, ".", y, sep ="")> plot(x, y)> ## boton izquierdo marca> ## boton derecho termina> ## Y si marcais donde no hay nada?> identify(x, y, labels = nombres)

locator devuelve la posición de los puntos.> plot(x, y)> locator()> ## Entonces debería poder ...> ## poner etiqueta que quiero donde queiero.> text(locator(1), "la etiqueta", adj = 0)

(191 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 ensecc. 4.1.2 (p. 37) “R for beginners”, de E. Paradishttp://cran.r-project.org/doc/contrib/Paradis-rdebuts_en.pdf.Mucho más sencillo es par(mfrow=c(filas,columnas))

También mfcol.

(192 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> data(quine, package = "MASS")> attach(quine)> par(mfrow = c(2, 2))> hist(Days, main = "")> barplot(table(Age))> boxplot(Days ~ Age)> dotchart(Days, groups = Age)> title("Titulo", outer = TRUE, line = -2)> dev.off()

(193 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Conditioning plots

"Conditioning plots" (revelan, entre otros,interacciones):(Inventamos "Loc", para condicionar en dos variablescategó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)

(194 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Coplots con lattice

La librería lattice permite lo mismo, y mucho más,que coplot. Ver secc. 4.6 de R for Begginers, o capítlo4 en “Using R for data analysis and graphics”, o librodedicado enterito a “Lattice” (D. Sarkar). Lattice, sinembargo, es algo más compleja de usar.

(195 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> library(lattice)> xyplot(Sepal.Length ~ Sepal.Width | Species,+ data = iris)> xyplot(Sepal.Length ~ Sepal.Width | Loc,+ data = iris)> xyplot(Sepal.Length ~ Sepal.Width | Loc + Species,+ data = iris)> xyplot(Sepal.Length ~ Sepal.Width | Petal.Width,+ data = iris)> PW <- equal.count(iris$Petal.Width,+ number = 6, overlap = 0.1)> xyplot(Sepal.Length ~ Sepal.Width | PW + Species,+ data = iris)

(Vosotros elegís)

(196 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Datos multivariantes

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

(197 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Lattice versus ggplot2

I really liked Lattice for generating graphs in R until I sawwhat ggplot2 can do . . . One of the big differences betweenthe two is the theory on which ggplot2 is based upon. Thereare clear modular building blocks that can be applied in aconsistent manner on any graph generated. Both packagesare extremely versatile but at the end of the day I thinkggplot2 provides a clearer structure and hence moreflexibility . . .

Hadley Wickham (the author of ggplot2) has a book outon ggplot2 at Springer (. . . ) [ggplot2: Elegant Graphics forData Analysis]

The learningR people[http://learnr.wordpress.com/2009/06/28/ggplot2-version-of-figures-in-lattice-multivariate-data-visualization-with-r-part-1/]have a long series of posts where they provide ggplot2 codefor nearly all the graphs in the Lattice book . . . worth taking alook at!

From http://www.schulte-mecklenbeck.com/?p=65

(198 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Adición de rectas de regresión

Podemos añadir muchos elementos a un gráfico,además de leyendas y líneas rectas:> dev.off() ## por si algún par> 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).

(199 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(200 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Guardando los gráficos

(Pre) especificar donde queremos guardar el gráfico:> pdf(file = "f1.pdf", width = 8,+ height = 10)> plot(rnorm(10))> dev.off()

En vez de pdf, otros: ps, png, . . . . Ver ayuda deDevices.O bien, podemos copiar una figura a un fichero:> plot(runif(50))> dev.copy2eps()

Diferencias entre ambos??Desde la shell, o con Emacs + ESS, no hay un “SaveAs" para las figuras. Sí lo hay en rkward y en JGR.

(201 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Múltiples ventanas gráficas

> for(i in 1:5)+ mytry(dev.off()) ## Ninguna abierta> x11()> plot(rnorm(10), main = "En primer device")> x11()> plot(runif(100), main = "En segundo device")> dev.off()> dev.off()> help(x11)

(202 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

3D: Ej.: scatter3d

> scatter3d(iris[, 1], iris[, 2], iris[, 3],+ fit = "smooth")>

También gráficos 3D: persp, image, contour;en lattice: cloud, wireframe

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).Paquete iplot

(203 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Otros

Además de las referencias ya dadas, ver “task view” degráficos: http://cran.r-project.org/web/views/Graphics.html. (Aunque un poco viejo).

(204 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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))

(205 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Datos categóricos: dotchart, mosaicplot

> mosaicplot(~ Age + Lrn, data = quine, color = TRUE)> (t1 <- xtabs( ~ Age + Lrn, data = quine))> mosaicplot(t1, color = TRUE)> dotchart(t1)> dotchart(t(t1))> ## Sólo para la figura!!!> ## Esto NO tiene ningún sentido.> cdplot(Sex ~ Days, data = quine)> plot(Sex ~ Days, data = quine)

Para datos categóricos: ver también paquete vcd.

(206 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en RIntroducción a losgráficos

Boxplots

Jittering

Identificación interactivade puntos

Múltiples gráficos porventana

Conditioning plots ydatos multivariantes

Guardando gráficos

Múltiples ventanasgráficas

Gráficos 3D einteractivos

Otros

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Otros

Podemos modificar márgenes exteriores de figuras yentre figuras (vease ?par y búsquense oma, omi,mar, mai; ejemplos en An introduction to R,secc. 12.5.3 y 12.5.4.gráficos de comparación de cuantiles, usados paracomparar la distribución de dos variables, o ladisribución de unos datos frente a un estándard (ej.,distribución normal): qqplot, qqnorm y, enpaquete "car", qq.plot.Notación matemática (plotmath) y expresiones detexto arbitrariamente complejas.

(207 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Programación en R (I)Definición de functionesControl de ejecuciónCuando algo va mal: traceback, browser y debugsource y BATCH

(208 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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.

(209 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

Los argumentos "C" y "D" tienen "default values".Podemos especificarlos nosotros, o no especificarlos(i.e., usar los valores por defecto).

(210 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Funciona, pero es confuso> otra.f(C = 25, 4, 99)> otra.f(C = 25, 99, 4)

(211 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

args(nombre.funcion) nos muestra losargumentos (de cualquier función).> args(rnorm)> args(plot)> args(otra.f)

(212 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Y los . . . ?

". . . " 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")

(213 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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))+ }+ }

(214 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

ifelse es una versión vectorizada:> x <- 1:10> ifelse(x%%2 != 1, "Par", "Impar")>

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)

(215 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

ifelse y dims

Gentleman, “R programming for bioinformatics”(modificado)Probadlo en casa; un poco retorcido.> (x <- matrix(1:10, ncol = 2))> ## Qué pasa en estos dos?> ifelse(x < 2, x, c(3, 9))> ifelse(x < 7, x, c(3, 9))> ### Estos tres quizás den pistas> ifelse(x < 2, x, c(3, 9, 5))> ifelse(x < 7, x, c(3, 9, 5))> ifelse(x < 7, c(22, 44, 88),+ c(3, 9, 99, 109))>

(216 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

for

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, "trabaja en Barrio Sesamo.\n")

(217 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

while

while (condicion.logica) instruccion

> 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.

(218 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

while (II)

while frecuentemente combinado con break parasalir de un loop tan pronto una condición se detecta.(Por ejemplo, optimización).Nótese el uso de while(TRUE)

> iteration <- 0> while(TRUE) {+ iteration <- iteration + 1+ cat(" ... iteration", iteration)+ x <- rnorm(1, mean = 5)+ y <- rnorm(1, mean = 7)+ z <- x * y+ cat(" z = ", z, "\n")+ if (z < 15) break+ }>

(219 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Pre-alocación de vectores

Esto es mala idea con loops largos:> v1 <- vector("numeric")> for(i in 1:100) {+ v1 <- c(v1, rnorm(1))+ }>>

Mejor pre-alocar (incluso si nos pasamos —luegocortar).> v1 <- vector(mode = "numeric", length = 1000)

(220 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Asignaciones repetidas: ojo

OJO: “x[i] <- 0” llama a “[<-”, y eso suele copiar elobjeto entero.Asignaciones repetidas “x[i] <- algo” son muy malasideas.Hacerlo en bloques o de golpe.

(221 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

traceback: dónde salta el error

Cuando se produce un error, traceback() nosinforma de la secuencia de llamadas antes del crashde nuestra función. Util cuando se produce mensajesde error incomprensibles.> lm("a" ~ rnorm(25))> traceback()

Cuando se producen errores o la función daresultados incorrectos o warnings indebidospodemos seguir la ejecución de la función.

(222 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

borwser, debug

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 de lafunción, y se ejecuta la función paso a paso. Se salecon "Q".> debug(my.buggy.function)

> ...> undebug(my.buggy.function)

Dentro del entorno de debugging podemos cambiarvariables, crear variables, etc.

(223 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> 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)

(224 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Insertad un browser() y corred de nuevo (tecleadn).> my.f2 <- function(x, y) {+ z <- rnorm(10)+ y2 <- z * y+ browser()+ y3 <- z * y * x+ return(y3 + 25)+ }> my.f2(runif(3), 4)

(225 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

“on.exit(browser())”

> my.f2 <- function(x, y) {+ on.exit(browser())+ z <- rnorm(10)+ y2 <- z * y+ y3 <- z * y * x+ return(y3 + 25)+ }> my.f2("a", 34)> my.f2(9, "cucu")

> my.f2(3, 4)

(226 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Cuando algo val mal: detalles

Lo anterior es explicación mínima. MUCHOSmás detalles en “Programación en R (III): errores, debugging, profiling”

(227 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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, desde la shell:% R CMD BATCH mi.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 (sepuede correr en el background).Ver la ayuda: R CMD BATCH -help.Puede que necesitemos explícitos print statementso hacer source(my.file.R, echo = TRUE).

(228 : 511)

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 ydebug

source y BATCH

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Otra forma parecida: R [options] [< infile][> outfile].Por ejemplo (en la shell): R -no-save <progr1.R > progr2.Rout

sink es el inverso de source (manda todo a unfichero).Entended bien el uso de BATCH y source.

(229 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Estadística con R (I)Métodos y técnicas estadísticas disponiblesContrastes de hipótesis: t, permutación

(230 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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).

(231 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Modelos lineales y derivadosI Modelos lineales y ANOVAI 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)

(232 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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).

(233 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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”.Análisis de datos de high-throughput: BioConductor.http://www.bioconductor.org.

(234 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Estimación, contraste hipótesis, . . .

(235 : 511)

(De Efron, 1986, The American Statistician, 40: 1–11)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Hay diferencias en la expresión de ciertosgenes entre los grupos de sujetos?

Si tenemos 2 (o 3, o 4, o ...) tipos de sujetos (cáncer demama, cáncer de colón, etc), ¿qué genes muestranexpresión diferencial?

Dados dos (o tres, o cuatro, o ...) tipos de sujetos, ¿quégenes hacen cosas distintas?

(Hummm . . . contraste de hipótesis, estimación?)

(236 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Y esto, ¿en qué se diferencia de laclasificación?

¿Cómo distinguimos entre grupos de pacientes? ¿Cómolos clasificamos?¿Cómo predecimos el grupo al que pertenece un pacientedado su perfil de expresión?

(vs. ¿qué genes muestran diferencias entre grupos desujetos?)

(237 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Expresión diferencial

“genes que hacen cosas distintas en distintos gruposde sujetos”¿Qué es “hacer cosas distintas”? ¿Qué es “mostrardiferencias”?

Ej., diferencia en medias: la media de expresión delgen MYC en el grupo 1 es mayor que la media deexpresión del gen MYC en el grupo 2 (grupo 1sobre-expresado con respecto a grupo 2).“cosas distintas”⇒ “difieren en la media”Pero no tiene por qué referirse a las medias.

(238 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Expresión diferencial

“genes que hacen cosas distintas en distintos gruposde sujetos”¿Qué es “hacer cosas distintas”? ¿Qué es “mostrardiferencias”?

Ej., diferencia en medias: la media de expresión delgen MYC en el grupo 1 es mayor que la media deexpresión del gen MYC en el grupo 2 (grupo 1sobre-expresado con respecto a grupo 2).“cosas distintas”⇒ “difieren en la media”Pero no tiene por qué referirse a las medias.

(238 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Queremos comparar la media de expresión del gen MYCentre 15 pacientes con cáncer de mama y 18 pacientessanas. ¿Cómo?

Más formalmente: ¿puede la “verdadera” (media de la)expresión en los dos grupos ser igual? (¿Tienen los dosgrupos la misma media de expresión?)

Mejor aun si decimos algo sobre la certeza en laconclusión de “son iguales” o “son distintas”.

(239 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Calculamos la media en los dos grupos: 2.2 y 3.4. ¿Y?

La diferencia es 1.2.¿Es esa diferecia mucha o poca?

(240 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Calculamos la media en los dos grupos: 2.2 y 3.4. ¿Y?

La diferencia es 1.2.¿Es esa diferecia mucha o poca?

(240 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Escenario I

> cancer <- rep(c(2, 2.1, 2.2, 2.3, 2.4), 3)> sanas <- rep(c(3.2, 3.3, 3.4, 3.4, 3.5, 3.6), 3)> tipo <- factor(c(rep("cancer", 15),+ rep("sanas", 18)))> mean(cancer)> mean(sanas)>

(241 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> par(mfrow = c(2, 1))> hist(sanas, xlim = c(1.9, 3.8), col = "red",+ main = "")> par(new = TRUE)> hist(cancer, xlim = c(1.9, 3.8), col = "blue",+ main = "", xlab = "")> dotchart(c(cancer, sanas),+ groups = tipo,+ color = c("blue", "red")[tipo])>

(242 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Escenario II

> cancer.ii <- c(0.7, 4.5, 3.7, 4.0, 8.9,+ 3.2, 0.0, 1.8, 3.5, 2.7,+ 0.5, 3.4,-1.4, 2.9,-5.4)> sanas.ii <- c(8.4, 6.1, 1.3, 4.1, 2.9,+ 5.2, 2.4,-2.0, 4.4, 3.5,+ -2.7, 3.2, 3.2,-0.6, 3.3,+ 2.6, 9.1, 6.8)> mean(cancer.ii)> mean(sanas.ii)

(243 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> x11()> par(mfrow = c(2, 1))> hist(sanas.ii, xlim = c(-5.5, 9.2), col = "red",+ main = "")> par(new = TRUE)> hist(cancer.ii, xlim = c(-5.5, 9.2), col = "blue",+ main = "", xlab = "")> dotchart(c(cancer.ii, sanas.ii),+ groups = tipo,+ color = c("blue", "red")[tipo])>

(244 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

(Hay buenas y malas formas de representar los datos. Notodo vale, ni vale lo mismo.)

(En “la vida real” los datos deberían estar en data frames).

(245 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Diferencias entre escenarios

La variabilidad.La variabilidad en la diferencia de las medias.

(246 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Diferencias entre escenarios

La variabilidad.La variabilidad en la diferencia de las medias.

(246 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Cómo podemos comparar las medias?

¿Qué queremos “evaluar” (testar)?Si no hubiera diferencias (hipótesis nula, H0), ¿quéesperaríamos?Si no hubiera diferencias, ¿qué relación habría entreetiquetas y valores?

(247 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

La lógica de un test de permutación

Definimos el estadístico (ej., diferencias entremedias).Obtenemos su distribución bajo la hipótesis nula (H0).Vemos como de probable es que nuestro estadísticoobservado aparezca bajo la hipótesis nula.

(248 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Programad un test de permutación

En casa, id a Programando un test de permutación con R

El próximo día aclaramos dudas.

(249 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

t-test: Para comparar dos grupos

1. Calcular las medias2. Restarlas3. Calcular una cantidad relacionada con la varianza de

la diferencia de medias (esa cantidad se calcula apartir de la varianza de cada grupo).

4. Dividir la diferencia de medias por la desviación típicade la diferecia de las medias.

5. Ya tenemos una “diferencia estandarizada”: elestadístico de la t.

(250 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Y esa medida de probabilidad?

1. Usando distintas posibles estrategias (análisis,permutación) podemos obtener la distribución de “t”bajo la hipótesis nula.

2. Hipótesis nula en este caso: las dos medias deverdad son iguales.

3. Obtener la distribución de los “t” que uno calcula si,en realidad, no hay diferencias.

4. Calculamos la probabilidad de observar nuestro “t” sila hipótesis nula es cierta.

5. p-valor: cómo de probable nuestro resultado si la nulafuera cierta.

6. p-valor: medida de evidencia contra la hipótesis nula.

(251 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

(252 : 511)

−4 −2 0 2 4

0.0

0.1

0.2

0.3

0.4

t

Observed t

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

p-valor y el saco de genes interesantes

Si estamos estudiando, por ej., expresión diferencial degenes . . .

Un test estadístico: (podemos pensar en él como)un procedimiento para asignar un gen a uno de dosgrupos

I “Interesantes” (probablemente están diferencialmenteexpresados)

I No “interesantes”

Aplicamos ahora el procedimiento a cada uno de losgenes

(253 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

p-valor y el saco de genes interesantes

Si estamos estudiando, por ej., expresión diferencial degenes . . .

Un test estadístico: (podemos pensar en él como)un procedimiento para asignar un gen a uno de dosgrupos

I “Interesantes” (probablemente están diferencialmenteexpresados)

I No “interesantes”

Aplicamos ahora el procedimiento a cada uno de losgenes

(253 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)Métodos y técnicasestadísticas disponibles

Contrastes de hipótesis:t, permutación

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Qué test usar?

Incluso en el caso más sencillo de comparar dosclases, muchas formas de analizar. ¿Cuál?Estadística no-paramétrica y estadística paramétrica.Estadística no-paramétrica y tests de permutación.Diseño experimental.Tamaño de muestra (probad un test de permutacióncon pequeña “N”).

(254 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Estadística con R (II): Intro a modelos linealesRegresión linealRegresión múltipleInteracciones y parametrizacionesPresunciones del modelo

(255 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 con una sola variable independiente:yi = α + βxi + ei . Caso especial de la expresiónanterior.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.

(256 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Intro mínima

Esta es una exposición MINIMA.Lo que de modelos lineales debería saber cualquieraque haga, aunque sólo sea una vez en su vida, unaregresión múltiple.Pero todo esto es mucho más rico. Veremos detallesen:

“Modelos lineales con R”

(257 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)

(258 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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).

(259 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

y = β0 + β1x1 + . . .+ βpxp + e

Modelos de regresión no paramética. Generalizan laforma de la x . La relación no tiene por qué ser lineal.Por ej., GAMs.Regresión robusta: mínimos cuadrados funciona malcon errores con distribuciones con colas muypesadas. Efectos outliers, distribuciones extremas,etc. Ver rlm en paquete MASS.

(260 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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.Dos funciones básicas: lm, aov.Muy útiles las funciones existentes en la librería carde J. Fox.Para otros problemas con modelos lineales, algunosmodelos lineales generalizados y análisis desupervivencia, muy interesantes también las libreríasHmisc y Design, de F. Harrell.Modelos mixtos: librerías nlme, lme4.

(261 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Regresión lineal

y = α + βx + eyi = αi + βxi + ei

. . .¿Qué es cada cosa?

(262 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Demo

Rcmdr vamos a la “Teaching demo” de regresión.

install.packages(“RcmdrPlugin.TeachingDemos”)

library(Rcmdr)

En Tools -> Load plugins -> TeachingDemos

Demos -> Simple linear regression

(263 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Cómo se estiman α y β? Minimizar desviacionesentre observado y predicho.¿Qué hay de la normalidad?¿Es eso una regresión, un modelo lineal?¿Es x continua? ¿Y si es categórica?¿Y qué ha sido del ANOVA? Está por aquí, escondido.

(264 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Una x continua

> x1 <- 1:10> y1 <- x1 + rnorm(10, sd = 2)> summary(lm1 <- lm(y1 ~ x1))> ## Eh! Siempre deberíamos empezar> ## con gráficos>> plot(y1 ~ x1)> abline(lm1)>

(265 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

La x discreta

> ## Una var. indep. con dos estados> x2 <- c(rep(0, 5), rep(1, 5))> y2 <- x2 + rnorm(10, sd = 0.5)> plot(y2 ~ x2)> summary(lm2 <- lm(y2 ~ x2))> abline(lm2)> ## La pendiente "a mano"> (my2 <- tapply(y2, factor(x2), mean))> (my2[2] - my2[1])/(x2[9] - x2[1])> ## Y por qué tiene eso sentido?>> ## Cambia algo si un factor?> summary(lm3 <- lm(y2 ~ factor(x2)))> ## Y si en vez de 0, 1 son 0, 7?> x2bis <- x2 * 7> summary(lm(y2 ~ factor(x2bis)))> summary(lm(y2 ~ x2bis))

(266 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> x4 <- c(rep(0, 3), rep(1, 3), rep(2, 4))> y4 <- x4 + rnorm(10, sd = 0.5)> summary(lm4 <- lm(y4 ~ x4))> summary(lm4 <- lm(y4 ~ factor(x4))) ## Anda!!

(267 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Recapitulemos como vemos los resultados

> lm1> summary(lm1)> anova(lm1)> aov(lm1)> summary(aov(lm1))> lm2> summary(lm2)> anova(lm2)> lm3> summary(lm3)> anova(lm3)

(268 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

El juguete ilustrativo otra vez (en Rcmdr, la “Teachingdemo” de regresión).

Efecto de un punto extremo: outlier vs. influyente.Variable independiente con dos (o tres, o cuatro)valores.

(269 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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.

(270 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> library(car)> data(Prestige)> summary(m1 <- lm(prestige ~ education + women,+ data = Prestige))> summary(m2 <- lm(prestige ~ education + census,+ data = Prestige))> anova(m1)> ## Eh!!!! No deberíamos mirar primero los datos???> cor(data.matrix(Prestige))> plot(prestige ~ education, data = Prestige)> plot(prestige ~ census, data = Prestige)> plot(prestige ~ women, data = Prestige)> scatterplotMatrix(data.matrix(Prestige))> scatter3d(prestige ~ education + census,+ data = Prestige)

(271 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> summary(m1)> summary(lm(prestige ~ women + education,+ data = Prestige))> anova(lm(prestige ~ education + women,+ data = Prestige))> anova(lm(prestige ~ women + education,+ data = Prestige))> ## Cambiar orden cambia anova> ## ¿Cuál es el resultado correcto?>> summary(m2)> summary(lm(prestige ~ census + education,+ data = Prestige))> anova(lm(prestige ~ education + census,+ data = Prestige))> anova(lm(prestige ~ census + education,+ data = Prestige))

(272 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Sorpresa!

> ##Y qué es census???> table(Prestige$census)> help(Prestige)>> ## A rehacer todo. Y census probablemente> ## no tenga sentido.

(273 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

X: categórica con más de dos grupos **

> x4 <- c(rep("A", 3), rep("B", 3), rep("C", 3))> y4 <- rnorm(9, rep(2:4, c(3, 3, 3)), sd = 0.5)> f4 <- factor(x4)> options(contrasts = c("contr.treatment",+ "contr.poly"))> summary(lm4 <- lm(y4 ~ factor(x4)))> tapply(y4, factor(x4), mean)> coefficients(lm4)[1] + coefficients(lm4)[2]> coefficients(lm4)[1] + coefficients(lm4)[3]>>

(274 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

X: categórica con más de dos grupos

> model.matrix(lm4)> coef(lm4)> ## Los sumamos, ponderados> ## por los coefficientes:> model.matrix(lm4) %*% coef(lm4)> ## Esos son los valores predichos> ## que son las medias de los grupos> ## en este caso>> ## Sin intercepto:> summary(lm4ni <- lm(y4 ~ -1 + f4))> model.matrix(lm4ni)> model.matrix(lm4ni) %*% coef(lm4ni)

(275 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Parametrizaciones et al.

> Prestige2 <- subset(Prestige,+ subset =+ type %in% c("bc", "prof"))> Prestige2$type <- factor(Prestige2$type)> ## Por qué hago esto?> Prestige2$income <- Prestige2$income/1000> summary(m3 <- lm(prestige ~ income*type,+ data = Prestige2))> summary(m3.1 <- lm(prestige ~ income,+ data = Prestige2,+ subset = type == "bc" ))> summary(m3.2 <- lm(prestige ~ income,+ data = Prestige2,+ subset = type == "prof" ))> coefficients(m3)> coefficients(m3.1)> coefficients(m3.2)> (coefficients(m3.2) - coefficients(m3.1))> model.matrix(m3)> model.matrix(m3.1)> model.matrix(m3.2)>

(276 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

(OJO:!! de qué son los p-valores? que testan?)> Prestige3 <- Prestige2> Prestige3$type <- factor(Prestige2$type,+ levels = c("prof", "bc"))> ## Verificando!> table(Prestige2$type, Prestige3$type)> summary(m4 <- lm(prestige ~ income*type,+ data = Prestige3))> summary(m3)> summary(m5 <- lm(prestige ~ -1 + income*type,+ data = Prestige3))> m3.1> m3.2> model.matrix(m4)> model.matrix(m5)>

(277 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> summary(lm(prestige ~ income*type,+ data = Prestige2))> summary(lm(prestige ~ -1 + income*type,+ data = Prestige2))> summary(lm(prestige ~ -1 + type + income:type,+ data = Prestige2))> m3.1> m3.2> summary(lm(prestige ~ type + income,+ data = Prestige2))> summary(lm(prestige ~ income:type,+ data = Prestige2))>

(278 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

ANCOVA: tipos de modelos.¿Y si más de dos grupos?

(279 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Un ejemplo a discutir

> x2 <- c(runif(10, 0, 1), runif(10, 0.9, 2))> x1 <- c(rep(0, 10), rep(1, 10))> y <- c(x2[1:10] + rnorm(10, sd = 0.05),+ 0.5 * x2[11:20] + rnorm(10, sd = 0.05))> summary(mm1 <- lm(y ~ x1 + x2))> summary(mm2 <- lm(y ~ x2 + x1))> anova(mm1)> anova(mm2)> summary(mm3 <- lm(y ~ x1 + x2 + x1:x2))> anova(mm3)> plot(y ~ x2)

(280 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Selección de modelos, selección de variables

Comparamos modelos> anova(mm3)> anova(mm2, mm3)>

Stepwise: mala idea.

(281 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos linealesRegresión lineal

Regresión múltiple

Interacciones yparametrizaciones

Presunciones delmodelo

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Primero, claro, miramos con cuidado los datos, losgráficos, y las preguntas que estamos haciendo.La estadística NO es una excusa para no tener quepensar.Después ajustamos un modelo y . . .> plot(lm1)> plot(m1)> plot(m3)

Lo anterior es un MÍNIMO INNEGOCIABLE.Pero hay mucho más. Ver “Modelos lineales con R” ).

(282 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Estadística con R (III)Control de multiple testingq-values, PEPProgramando un test de permutación con RAnálisis de supervivenciaDiseño experimental y otros

Tamaño de muestraDiseño experimental

Un ejemplo con strings: Ajustando muchos modelos

(283 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

(Recordemos) p-valor y el saco de genesinteresantes

Si estamos estudiando, por ej., expresión diferencial degenes . . .

Un test estadístico: (podemos pensar en él como)un procedimiento para asignar un gen a uno de dosgrupos

I “Interesantes” (probablemente están diferencialmenteexpresados)

I No “interesantes”

Aplicamos ahora el procedimiento a cada uno de losgenes

(284 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

(Recordemos) p-valor y el saco de genesinteresantes

Si estamos estudiando, por ej., expresión diferencial degenes . . .

Un test estadístico: (podemos pensar en él como)un procedimiento para asignar un gen a uno de dosgrupos

I “Interesantes” (probablemente están diferencialmenteexpresados)

I No “interesantes”

Aplicamos ahora el procedimiento a cada uno de losgenes

(284 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Muchos contrastes de hipótesis

Ya sabemos como obtener un p-valor para comparar dosgrupos.(Y existen mecanismos similares para otras comparaciones,entre más grupos, o relación con la supervivencia, etc).

¿Podemos simplemente calcular un p-valor por gen yseleccionar aquellos relevantes?

(285 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

NO

No estamos obteniendo el p-valor de un test (un contrastede hipótesis) sino el de miles de tests.

(286 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

NO

No estamos obteniendo el p-valor de un test (un contrastede hipótesis) sino el de miles de tests.

(286 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Los peces

Nos vamos de pesca.En este mar hay un pez concreto (pez A) con unaprobabilidad de ser pescado de 0.05.En ese mar 1000 peces como el A (pero sólo un es A,claro).¿Cuál es Pr{cenamos pez A}?¿Cuál es Pr{cenamos pescado}?

(287 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Los peces (II)

Pr{cenamos pez A} = 0.05.Pr{cenamos pescado} ' 1 .Los eventos “cenarnos al pez A” y “cenar pescado”son muy diferentes.Cenar pescado =⋃

(cenarnos a A, cenarnos a B, cenarnos a C,. . . , cenarnos a A y B, . . .).

(288 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Los p-values son peces

Si tenemos 30000 genes, en los que no existenninguna diferencia . . .y declaramos como “interesantes” todos los quetienen p − value < 0.05 vamos a cometer montonesde “falsos positivos” (∼ 1500).Necesitamos controlar eso.

(289 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

The p-value case

(An example modified from Westfall and Young, 1993“Resampling-based multiple testing”).

Suppose we have 10 independent genes. Thus, 10null hypotheses, one for each gene.Suppose also that there are no differences in geneexpression between the two groups of patients (i.e.,the null is true, and we are using the appropriate testso that the p-value is Uniform on [0,1]).Thus, the probability that a particular test (say, forgene 3) is declared significant at level 0.05 is exactly0.05. Good.

(290 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

p-value case (II)

However, the probability of declaring at least one ofthe 10 hypotheses false (i.e., rejecting at least one, orfinding at least one result significant) is:

Pr(at least one null rejected) = 1− Pr(all pi > 0.05) =

1− Pr(1− 0.05)10 = 1− 0.9510 = 0.401

So now, even if the 10 genes are not differentiallyexpressed, there is a probability of 0.401 (yes, that is40%!!!) of “finding” at least one which we declare assignificantly different.The more genes, the more serious is the problem.In summary, without control for multiple testing, wewould end up rejecting the null much more often thanwe should.

(291 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

FDR

# no rechazadas # rechazadas# misma expresión(H0 verdadera)

U V

# diferente expre-sión (H0 falsa)

T S

FDR False Discovery Rate: tasa dedescubrimiento falso: proporción esperadade errores de tipo I entre las nulasrechazadas: (V + S). FDR = E(Q) dondeQ = V/(V + S) si V + S > 0 (y Q = 0 en elotro caso).

FWER P(V ≥ 1)

(292 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

FDR: el algoritmo En casa

(Reiner et al., 2003, Bioinformatics)

(Nótese que es un “step-up procedure”).

Este procedimiento controla el FDR. (No dice “estima”).

(293 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplos

¿Qué rechazaré al 0.1?0.1, 0.1, 0.1, 0.10.1, 0.01, 0.01, 0.010.2, 0.1, 0.1, 0.1

Umbral fijado: 0.1¿p ≤ umbral ∗ i/m?0.1 ∗ 3/4 = 0.0750.2, 0.075, 0.075, 0.075

(294 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplos

¿Qué rechazaré al 0.1?0.1, 0.1, 0.1, 0.10.1, 0.01, 0.01, 0.010.2, 0.1, 0.1, 0.1Umbral fijado: 0.1¿p ≤ umbral ∗ i/m?0.1 ∗ 3/4 = 0.0750.2, 0.075, 0.075, 0.075

(294 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Adjusted p-values

The results of a multiple testing procedure can bereported as multiplicity adjusted p-values. As withthe regular p-value, each adjusted p-value iscompared to the desired significance level, and ifsmaller, the hypothesis is rejected. Therefore, theway adjusted p-values are used and interpretedremains conveniently familiar, regardless of theadjustment procedure complexity.

(Reiner et al., 2003, Bioinformatics)

(295 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Adjusted p-values: FDR

For an FDR controlling procedure, the adjustedp-value of an individual hypothesis is the lowestlevel of FDR for which the hypothesis is firstincluded in the set of rejected hypotheses. Thusthe adjusted p-value of P(j) using the BHprocedure, is PBH

(j) = minj≤i{P(i)mi }.

(Reiner et al., 2003, Bioinformatics)

(296 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplos FDR-adjusted p-values

0.2, 0.08, 0.08, 0.080.2, 0.1067, 0.1067, 0.10670.08 * 4/3 = 0.1067; 0.08 * 4/2 = 0.16; . . .> p.adjust(c(0.2, 0.08, 0.08,+ 0.08), method = "BH")

0.2, 0.08, 0.07, 0.070.2, 0.1067, 0.1067, 0.10670.08 * 4/3 = 0.1067; 0.07 * 4/2 = 0.14;> p.adjust(c(0.2, 0.08, 0.07,+ 0.07), method = "BH")

(297 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

0.2, 0.08, 0.05, 0.0150.2, 0.1067, 0.1, 0.060.05 * 4/2 = 0.1; 0.015 * 4/1 = 0.06> p.adjust(c(0.2, 0.08, 0.05,+ 0.015), method = "BH")

(298 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

pFDR, q-values, PEP

Trabajo de Storey, Efron, colaboradores

FDR = E[

VR |R > 0

]Pr(R > 0)

Sólo estamos interesados en el FDR si hayresultados positivos: pFDR = E

[VR |R > 0

]pFDR: “posterior Bayesian Type I error”.

(299 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

q-value: proporción esperada de falsos positivoscuando a un gen (“feature”, en gral) lo consideramossignificativo.q-value: el menor pFDR para el que una featuredeterminada aparecerá en la lista de output.“p-value Bayesiano”?, “pFDR adjusted p-value”?Hay formas de estimar pFDR y q-values.Como el FDR: propiedad de conjuntos, de listas.

(300 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

PEP, “posterior error probability” o “local FDR”: laprobabilidad de que una feature dada sea incorrecta.Por ej., “la probabilidad de que el gen XYZ, NO estérealmente diferencialmente expresado”.Es una propiedad de la feature. La probabilidad deerror en un gen determinado.

(301 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

PEP vs. q-value

(Kall et al., 2008. J. Proteome Research, 7: 40–44)

(302 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Qué test usar?

Incluso en el caso más sencillo de comparar dosclases, muchas formas de analizar. ¿Cuál?Estadística no-paramétrica y curvas ROCEstadística paramétricaEmpirical Bayes methods (SAM, Limma). G. Smyth.

(303 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Central limit theorem, efficiency, robustez, mínimop-valor alcanzable (FDR, etc), usar información deotros genes para estimarReviews y comparaciones (Kerr, Smyth, etc) hanmostrado que EBayes procedures resultan enmejoras en potencia y decrementos en errores de tipoI.

(304 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

La lógica de un test de permutación

Definimos el estadístico (ej., diferencias entremedias).Obtenemos su distribución bajo la hipótesis nula (H0).Vemos como de probable es que nuestro estadísticoobservado aparezca bajo la hipótesis nula.

(305 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Programemos test de permutación en R

Una funcion para el estadisticoReordenar los datos bajo la nulaCalcular el estadistico bajo la nulaComparar (¿valor absoluto?)(Vamos verificando a medida que programamos)

(306 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

(¿Dónde están los datos?)

Todo esto viene de Contrastes de hipótesis: t, permutación

> cancer <- rep(c(2, 2.1, 2.2, 2.3, 2.4), 3)> sanas <- rep(c(3.2, 3.3, 3.4, 3.4, 3.5, 3.6), 3)> cancer.ii <- c(0.7, 4.5, 3.7, 4.0, 8.9,+ 3.2, 0.0, 1.8, 3.5, 2.7,+ 0.5, 3.4,-1.4, 2.9,-5.4)> sanas.ii <- c(8.4, 6.1, 1.3, 4.1, 2.9,+ 5.2, 2.4,-2.0, 4.4, 3.5,+ -2.7, 3.2, 3.2,-0.6, 3.3,+ 2.6, 9.1, 6.8)>

(307 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> mean.d <- function(x1, x2)+ mean(x1) - mean(x2)> sample.and.stat1 <- function(x1, x2) {+ tmp <- sample(c(x1, x2))+ g1 <- tmp[seq(x1)]+ g2 <- tmp[seq(from = length(x1) + 1,+ to = length(tmp))]+ return(mean.d(g1, g2))+ }> mean.d(cancer, sanas)> sample.and.stat1(cancer, sanas)>

(308 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> sample.and.stat2 <- function(x1, x2) {+ indices <- seq(from = 1,+ to = length(x1) + length(x2))+ indices1 <- sample(indices, length(x1))+ indices2 <- setdiff(indices, indices1)+ alldata <- c(x1, x2)+ return(mean.d(alldata[indices1],+ alldata[indices2]))+ }> sample.and.stat2(cancer, sanas)> set.seed(1); sample.and.stat1(cancer, sanas)> set.seed(1); sample.and.stat2(cancer, sanas)

(309 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> permut.test1 <- function(data1, data2,+ num.permut = 100) {+ obs.stat <- mean.d(data1, data2)++ permut.stat <- sapply(1:num.permut,+ function(x)+ sample.and.stat1(data1,+ data2))+ pv <- (sum(abs(permut.stat) >+ abs(obs.stat)) + 1)/(num.permut + 1)++ cat("\n p-value is ", pv, "\n")+ return(list(obs.stat = obs.stat,+ permut.stat = permut.stat,+ pv = pv))+ }> permut.test1(cancer, sanas)> permut.test1(sanas, cancer)> permut.test1(cancer.ii, sanas.ii)

(Nota: hay un error arriba en el cálculo del p-valor;¿dónde?)

(310 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> permut.test2 <- function(data1, data2,+ num.permut = 100) {+ obs.stat <- mean.d(data1, data2)++ permut.stat <- replicate(num.permut,+ sample.and.stat2(data1,+ data2))+ pv <- (sum(abs(permut.stat) >+ abs(obs.stat)) + 1)/(num.permut + 1)++ cat("\n p-value is ", pv, "\n")+ return(list(obs.stat = obs.stat,+ permut.stat = permut.stat,+ pv = pv))+ }> permut.test2(cancer, sanas)> permut.test2(cancer.ii, sanas.ii)>

(311 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> set.seed(34); permut.test2(cancer, sanas)> set.seed(3); permut.test1(cancer, sanas)> set.seed(34); permut.test2(cancer.ii, sanas.ii)> set.seed(34); permut.test1(cancer.ii, sanas.ii)> set.seed(5); sample.and.stat1(cancer, sanas)> runif(1)> set.seed(5); sample.and.stat2(cancer, sanas)> runif(1)>> ## Notese: en sample.and.stat2 saco solo> ## tanto random numbers como elementos en> ## group 1, pero en el otro es el sample entero.> ## Por eso, el primer> ## "permut.stat" es igual, pero el segundo no.>

(312 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> permut.test <- function(data1, data2,+ fsample = sample.and.stat1,+ num.permut = 100) {+ obs.stat <- mean.d(data1, data2)++ permut.stat <- replicate(num.permut,+ fsample(data1, data2))+ pv <- (sum(abs(permut.stat) > abs(obs.stat)) ++ 1) / (num.permut + 1)++ cat("\n p-value is ", pv, "\n")++ hist(permut.stat, xlim = c(min(obs.stat,+ min(permut.stat)),+ max(obs.stat,+ max(permut.stat))))+ abline(v = obs.stat, col = "red")+ return(list(obs.stat = obs.stat,+ permut.stat = permut.stat,+ pv = pv))++ }> permut.test(sanas, cancer)> permut.test(cancer.ii, sanas.ii,+ fsample = sample.and.stat2)>

(313 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

No son las funciones más eficientes.Equivalent test statistics (p. ej., media(g1) -media(total) ?).¿Y qué estadístico queremos en realidad?

(314 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Diferencias entre permutación y test de la t?

Diferencias fundamentales?Con el test de la t: si se cumplen ciertas condiciones,hay un (o unos) estadístico(s) de distribuciónconocida. A partir de ahí, p-valor es inmediato.Test de permutación: definimos un test estadístico.No nos preocupamos de derivar analíticamente sudistribución. La obtenemos numéricamente, segundicta H0.(Lo de “la obtenemos según dicta H0” no siempre tanfácil. Los tests de permutación no son panaceas.Además, ¿y si queremos estimar?)

(315 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Comparando (numéricamente) ambosprocedimientos

> t.test(sanas, cancer, var.equal = TRUE)> cc <- permut.test(sanas, cancer,+ num.permut = 1000,+ fsample = sample.and.stat2)> t.test(sanas.ii, cancer.ii, var.equal = TRUE)> cc.ii <- permut.test(sanas.ii, cancer.ii,+ num.permut = 1000,+ fsample = sample.and.stat2)>>

(316 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Qué tienen en común las siguientespreguntas?

Tiempo hasta que tenga que cambiar la bombilla dela habitación.Tiempo desde diagnosis de cáncer de pulmón hastael fallecimiento.Diferencia en tiempo hasta que se estropee el motorsi pongo, o no, aceite.Efecto de fumar en tiempo hasta fallecimiento.

(317 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Introducción a modelos supervivencia

Tiempo hasta “fallo” (muerte, recaida, cambio deestadío, etc)Censurados en ocasiones (por la derecha, peroquizás por la izquierda)Distribuciones como exponencial, weibull, etcNO debemos ni discretizar ni usar regresiónEl resto, detalles que podéis mirar en casa. Saltamosa “Modelo de Cox” .

(318 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Observamos min(T , c) donde T es la duración de lavida, el tiempo hasta la muerte, y c el “censoringtime”. F (t): función distr. cumulativa de X.

F (t) = P(T ≤ t) =∫ t

0 f (x)dxFunción de supervivencia, “survival function”, S(t):probabilidad de estar vivo en tiempo t .S(t) = 1− F (t) =

∫∞t f (x)dx .

(319 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

“hazard function”, h(t): tasa instantánea de muerte

h(t) = lim∆t→0+P(t≤T<t+∆t |T≥t)

∆t

h(t)∆t = probabilidad de morir en un breve en elintervalo [t , t + ∆t ], dado que el sujeto está vivo en t

f (t) = lim∆t→0+P(t≤T<t+∆t)

∆t = dF (t)dt = −dS(t)

dt

h(t) = f (t)S(t)

(320 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Cumulative hazard: H(t) =∫ t

0 h(u)du = − log(S(t))

S(t) = 1− F (t) = P(T ≥ t) = exp(−H(t)) =

exp(−∫ t

0 h(u)du)

Median survival time:I tiempo más allá del cual el 50% de los sujetos de la

cohorte se espera que sobrevivan.I El primer t en el que S(t) ≤ 0.5

Mean survival time: natural es∫∞

0 tf (t)dt . Pero datoscensurados causan problemas. Varias estrategias,e.g., “Efron’s tail correction”.

(321 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Kaplan-Meier estimator

ni : número de casos con riesgo justo antes deltiempo ti (i.e., aquellos que están en el estudio ytodavía no muertos ni censurados en ti ).di : los que mueren en intervalo i .Estimador Kaplan-Meier: S(t) = Πni−di

ni

(322 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

T = 9, 13, 13+, 18, 23, 28+, 31, 34, 45+

time n.risk n.event survival9 9 1 0.88913 8 1 0.77818 6 1 0.64823 5 1 0.51931 3 1 0.34634 2 1 0.173

S(0) = 1S(9) = S(0) ∗ (9− 1)/9 = 0.889S(13) = S(9) ∗ (8− 1)/8 = 0.778 (Notese que hay enriesgo 8, y muere el que tiene supervivencia 13).S(13+) = S(13+) ∗ (7− 0)/7 = 0.778 (Notese queno hay evento de muerte aquí).

(323 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Log-rank testUna (de las varias) formas de comparar dos o máscurvas de supervivenciaRelacionado con análisis de datos categóricos conestratos: como un test de Mantel-Haenszel dondecada estrato es cada uno de los periodos.La H0: las supervivencias son iguales.Calcular un “pooled sample estimator” de número deeventos (muertos) y número en riesgo (di y ni deantes).Calcular diferencias entre observado y esperado (ej.,(di1/ni1)− (di/ni).Calcular la variance de esos valores esperados.Sumar sobre todos los periodos, ponderando por i(log-rank: weight = 1).Comparar con distribución apropiada (Z, Chi si esMH2).

(324 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Modelo de Cox

h(t) = h0(t) exp(β1x1 + β2x2 + . . .+ βqxq)

h0(t) : baseline hazard function. Comúnindependientemente de los x .βi : el efecto de la covariable dada (ej., gene xi ) sobreh(t).

Hazard ratio es constante: h(t |x1)h(t |x2) = exp(βT x1)

exp(βT x2)=

exp(Σβi x1i )exp(Σβi x2i )

= exp(Σβi(x1i − x2i))

(325 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

La estimación de los β es lo que importa. Se ignora elh0. (“Partial likelihood”).La likelihood depende sólo del ranking de los tiemposde fallecimiento (“no-paramétrico”).Para obtener predicciones de tiempo de fallecimientose estima (con otro procedimiento) el h0.

“Linear scores” (“prognostic index”): βT Xlog(h(t)) = log(h0(t)) + β1x1 + β2x2 + . . .+ βqxq

(326 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Otros modelos

General: modelar tiempo hasta falleciemiento (o unafunción de él, como log(tiempo)) en función decovariables (y esa función puede ser, e.g., unaexponencial).Modelos de regresión de Weibull, exponencial,accelerated life.Menos usados (elección parámetros escala).No tienen proportional hazards assumption, y a vecesmás flexibles.Practicamente no usados con gene expression data.(Pero ver Schmid y Hothorn, 2008, BMCBioinformatics, 9: 269).

(327 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Se puede hacer en R?

> library(survival)> summary(survfit(Surv(time,+ status) ~ 1, data = aml))> survdiff(Surv(time, status) ~+ x, data = aml)> coxph(Surv(time, status) ~+ x, data = aml)> survreg(Surv(time, status) ~+ x, dist = "weibull",+ data = aml)

(328 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Tamaño de muestra

Tamaño de muestraTest apropiado para el problema.Test y análisis apropiado al tipo de diseño.

(329 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Tamaño de muestra

Selecciono al azar 2 varones y 3 mujeres de estaclase. Dinero medio en el bolsillo: 3 euros losvarones, 15 euros las mujeres.No hace falta un p-valor: el tamaño de muestra esridículamente pequeño para lo que queremos.

(330 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Tamaño de muestra

Resultados significativos (o incluso “reales”) vs.resultados repetibles.Cada estudio mal hecho es una oportunidad malaprovechada.El argumento del dinero y la analogía del SSC.50 muestras por grupo.Ver Dobbin and Simon, 2005 and 2007, Biostatistics.

(331 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Test apropiado

Incluso para comparar dos muestras independienteshay una variedad de tests.¿Y si hay más grupos?¿Y si hay información sobre variables clínicas?¿Y si los sujetos parcialmente relacionados—parentesco, comunidad autónoma, etc?Diseño experimental (a continuación)¿Y si datos de supervivencia?

(332 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Diseño experimental

Esto no se puede cubrir en una ni dos ni seis clasesSólo nociones básicas, para que esteis alerta

(333 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Asignación aleatoria de tratamientos a sujetos vs.estudios observacionalesUsar cuidadosamente las covariables adicionales:sexo, edad.Por ejemplo, cáncer de mama. ¿Cuál es el control?Controles: situación cualitativamente distinta entreestudios observacionales y experimentales. (Principiode randomización)Los fundamentos de la inferencia con datosobservacionales son mucho más débiles.Interpretación compleja.

(334 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Más covariables

Incluso si no hay confounding, tener en cuentacovariables puede aumentar potencia estadística.¿Por qué?(Nótese que explicación es ayudada si usamos unmodelo)

(335 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Paired-designs, medidas repetidas

Cohortes: un hermano con cáncer, y uno sin.Mismo sujeto: tejido tumoral, tejido sano.Potencia estadística

(336 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> x1 <- rnorm(10, mean = 12, sd = 2)> x2 <- x1 + 0.7 ++ rnorm(10, mean = 0, sd = 0.05)> t.test(x1, x2)> stripchart(list(x1, x2),+ vertical = TRUE, pch = 19)> for(i in 1:10)+ segments(x0 = 1, x1 = 2,+ y0 = x1[i], y1 = x2[i],+ col = "red")> t.test(x1, x2, paired = TRUE)

(Nótese como he creado los datos: dos fuentes devariación).

(337 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Mismo sujeto, varios medidas a lo largo del tiempo

Y si tenemos muchos sujetos, pero proceden decomunidades autónomas distintas?Efectos aleatorios: modelos mixtos

(338 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Mismo sujeto, varios medidas a lo largo del tiempoY si tenemos muchos sujetos, pero proceden decomunidades autónomas distintas?Efectos aleatorios: modelos mixtos

(338 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Replicas y pseudoreplicación

20 arrays, 10 de un tipo y 10 de otroEscenarios

I 20 sujetos en totalI 5 sujetos en cada grupo, cada uno “medido” 2 vecesI 2 sujetos en cada grupo, cada uno “medido” 5 vecesI 5 familias en cada grupo, algunas con 1

representante, otras con 2, otras con 3

(339 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Cuál es la unidad experimental?

20 ratones10 asignados al grupo de droga A, 10 asignados algrupo de droga BA cada ratón, en una pata radioterapia, en la otra noLa radio: “nested” (anidada, encajada) dentro de ratón¿Cuál es la unidad experimental?

(340 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Dos tipos de unidad experimental: ratón, pata dentrode ratón.Comparar drogas: usando ratonesComparar radio: usando pata dentro de ratónInteracción: posible estudiarla

split-plot designs, mixed-effects models

(341 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Dos tipos de unidad experimental: ratón, pata dentrode ratón.Comparar drogas: usando ratonesComparar radio: usando pata dentro de ratónInteracción: posible estudiarlasplit-plot designs, mixed-effects models

(341 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Blocking

Los ratones son “bloques”: la comparación del efectode radio es intra-ratón. Mantenemos constantesefectos de sujeto, cada uno es su propio control.“Block what you can, randomize what you can’t”La randomización es una herramienta que ponefuentes sistemáticas de variación en el término deerror

(342 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Diseño experimental?

¿Y los datos observacionales?Seguro que hay covariables con efectos importantes.

(343 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Un ejemplo con strings: Ajustando muchosmodelos En casa

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 las demás+ x.O sea . . .y ~ x + Ay ~ x + B

...

(344 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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")

(345 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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

(346 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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]))))

(347 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> 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]))))

(348 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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’ (...)"

(349 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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))

(350 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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])))))+ }

(351 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿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; elnombre será distinto):summary(modelo.variable.lo.que.sea)

(352 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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]])

(353 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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)"))))+ }

(354 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)Control de multipletesting

q-values, PEP

Programando un test depermutación con R

Análisis desupervivencia

Diseño experimental yotros

Tamaño de muestra

Diseño experimental

parsing strings

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

“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.

(355 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Programación en R (II)¿Qué contiene un paquete para R?Creación de paquetes para uso propioAmbito: lexical scope

(356 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿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

(357 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Creación de paquetes para uso propio

Si tenemos unos ficheros con funciones, etc, ¿cómolo usamos repetidas veces?Podemos usar “source”.Llena el espacio global de funciones, etc.Alternativa: usar un paquete.

(358 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Detalles sobre como escribir un paquete: en manual“Writing R extenssions”.Si sólo queremos “paquete de andar por casa” bastacon: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. (Para Windows:herramientas adicionales necesarias; ver http://www.murdoch-sutherland.com/Rtools/.Ver función package.skeleton.

(359 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Dónde buscamos las cosas?

Aquí explicamos dónde buscamos funcionesY dónde buscamos objetosEnmascaramiento y acceso a funciones “no visibles”Lexical scope

(360 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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!).

(361 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> library(car)> ls(pos = 2)> rm(xless, pos = 2)> apropos("locked")>

(362 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> library(rpart)> post.rpart)> rpart:::post.rpart> rpart::post.rpart)> ls(pos = 2)>

Ver el fichero “NAMESPACE” en rpart.

(363 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Lexical scope: introducción

> f1 <- 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 scope inR 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 sus implicacionesgenerales en statistical computing.

(364 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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ón enR mucho más potente y sencilla.

(365 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Definiciones

Bound 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 primero tieneel valor 2, y luego el 5, pero no ambos). En distintosframes, una variable puede tener distintos bindings(veremos ejemplos en un momento).Free variable: una variable que, en un frame dado, noestá “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 tiene elvalor 5).global frame, global environment: all arrancar R, sihacemos x <- 13, hemos asignado 13 a x en el“global frame” o “global envornment”.

(366 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Scoping rules: determinan como el intérprete (de R, ode cualquier lenguaje) busca el valor de las freevariables.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, en elprimero caso x en el frame 1 “shadows” (enmascara)el valor de x en el frame 2.

I closure: función + environment.

(367 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 . . . globalenvironment.> f1 <- function(x) x + a> a <- 15> x <- 7> f1(x = 1)> f1(3)

¿Por qué no funciona?> f1()

(368 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> 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)

(369 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> 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 volveremos aver luego.

(370 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 2 esbound a la variable local “power”, y la asignación a“square” devuelve una “closure” (función +environment).

(371 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II¿Qué contiene unpaquete para R?

Creación de paquetespara uso propio

Ambito: lexical scope

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

environments

Verifiquemos qué es lo que “hay dentro de” square ycuberoot:> 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.

(372 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Programación en R (III): errores, debugging, profilingtrytraceback, browser y debugrecoverwherec, loopstracewarningsdebug de M. BravingtonProfilingLlamando a funciones en C/C++

(373 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

try

try y tryCatch se comportan como otros exceptionhandlers de otros lenguajes. tryCatch es algo mássofisticado pero, para muchos casos, try essuficiente.withCallingHandlers ofrece un mecanismo aunmás general para capturar otras condiciones.stopifnot muy útil para “regression testing”.

(374 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

try (cont.)

> 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)

(375 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

traceback

Cuando se produce un error, traceback() nosinforma de la secuencia de llamadas antes del crashde nuestra función. Util cuando se produce mensajesde error incomprensibles.

(376 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

traceback (cont.)

> lm("a" ~ 99)> traceback()

¿Dónde está el problema?

(Ojo: no si se hace con try o tryCatch)

(377 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

browser y debug

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. “c” para ir al final delcontexto (bucles y llamadas a funciones)debug es como poner un "broswer" al principio de lafunción, y se ejecuta la función paso a paso. Se salecon "Q".> debug(my.buggy.function)

> ...> undebug(my.buggy.function)

(378 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Browser commands(De Gentleman, “R programming for bioinformatics”, p. 275).

(379 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

browser y debug (cont.)> 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)

Dentro del entorno de debugging podemos cambiarvariables, crear variables, etc.Probémoslo.Podemos (re)definir funciones (y si existen fuera?)Y si tenemos un debug y hacemos un reload de esecódigo?

(380 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

browser condicional

Insertar un browser y correr de nuevo(Nótese también cambio en número que sigue aBrowse[...]).En qué difieren browser y debug? Inicialmente,browser sólo interrumpe.Y si queremos un browser condicional? Ej., sólo sialgún y3 > 10? Cómo lo haríais?

> my.f2 <- function(x, y) {+ z <- rnorm(10)+ y2 <- z * y+ y3 <- z * y * x+ if (any(y3 > 10))+ browser()+ return(y3 + 25)+ }> my.f2(8, 9)> my.f2(0, 8)

(Otra opción, breakpoints condicionales, luego).

(381 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

“on.exit(browser())”

> my.f2 <- function(x, y) {+ on.exit(browser())+ z <- rnorm(10)+ y2 <- z * y+ y3 <- z * y * x+ return(y3 + 25)+ }> my.f2(8, 9)> my.f2("a", 34)

(382 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

debug en funciones de paquetes

Cargamos un paquete de ejemplo y vemos qué haydentro> library(myRpack)> ls(pos = 2)> g1> myRpack:::g2> myRpack:::g3

Podemos hacer debugging de código dentro> debug(g3)> debug(myRpack:::g3)> g1()

> undebug(myRpack:::g3)

ls(), etc.Si debugging f1, debug(g3) funciona (dentro deg1). Probad!Y ahora quitad el debugging code de g3.

(383 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Limitaciones browser y debug

browser: peligroso dejarlo en nuestras funcionesCómo poneis un browser en lm?

browser: no podemos introducirlo en código depaquetes.Y debug, aunque se puede usar con cualquierfunción, nos fuerza a ejecutar desde el principio.Necesitaremos algo más flexible.Y si sólo queremos entrar si se producen errores?

(384 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Limitaciones browser y debug

browser: peligroso dejarlo en nuestras funcionesCómo poneis un browser en lm?browser: no podemos introducirlo en código depaquetes.Y debug, aunque se puede usar con cualquierfunción, nos fuerza a ejecutar desde el principio.Necesitaremos algo más flexible.Y si sólo queremos entrar si se producen errores?

(384 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

recover

Podemos hacer que R, en uso interactivo, nos lleve ala función donde se genera el error de formaautomática:> opt <- options(error = recover)> lm("a" ~ 99)

Seleccionamos el “frame number”, y podemos ver losvalores de variables locales, ejecutar código, etc.Para volver al comportamiento de siempre hacemos(por eso asignamos antes opt).> options(opt)

Pero sólo los objetos visibles desde la llamadaparticular (la que genera el error) son accesibles.¿Qué objetos vemos desde los distintos frames?

(385 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

recover (cont.)

Para el siguiente ejemplo:¿Dónde se produce el error?Usar traceback primeroEntremos en f1

En f2: qué hay?¿Dónde estamos?

(386 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

recover (cont.)

> opt <- options(error = recover)> f1 <- function(x) {+ u1 <- 99+ log(x)+ }> f2 <- function(z) {+ u2 <- 89+ ret <- 4 + f1(z)+ cat("\n algo que nos distrae\n")+ t2 <- rnorm(2)+ ret+ }> f3 <- function(y) {+ u3 <- 5+ cat("\n el valor de u3 es ",+ u3, "\n")+ tmp <- f2(y) * 9+ t3 <- 95+ return(tmp)+ }> f3("a")

(387 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

recover (cont.)

(Más de lo mismo, en un caso más sencillo)> f4 <- function(x) {+ u4 <- 4+ if (x < 9)+ stop("ooo")+ x+ }> f5 <- function(v) {+ u5 <- 5+ f4(v)+ }> f5(12)> f5(3)> options(opt)

(Ojo: recover desde función en ejecución es muyconfuso).

(388 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

where

where para ver el call stack(No mireis). . .¿Dónde estoy? (Entrad hasta f1, via “n”, y luego idsaliendo de nuevo).where sirve para “orientarse”

> debug(f3)> debug(f2)> debug(f1)> f3(19)

> undebug(f1)> undebug(f2)> undebug(f3)

(389 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

c, loops, etc

> f7 <- function(x) {+ fi <- function(z, s) {+ uu <- z + 3+ vv <- uu + 9+ vv * s+ }+ if (x > 5) {+ cat("\n inside x > 5\n")+ mm <- x * 3+ mm2 <- sqrt(mm)+ }+ for (i in 1:5) {+ print(fi(x, i))+ }+ print("\n al final del loop")+ x+ }> debug(f7)> f7(8)

> undebug(f7)

(390 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

c, loops, etc (cont.)

Desde mitad de código, llegad al final (ej., justocuando hace inside x).. Usad c en f7, no dentroloopUsad c para saltar el loop (sólo una vez iniciado elfor)Entrad, poned debug(fi), usad c para saltarevaluaciones de fi

(Pero si debugging fi, el c salta evaluación de fi, nodel loop)

(391 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

trace

trace tiene múltiples usos, algunos complicadosInsertar llamadas a browser. Una de las mejoresformas en código de paquetes, etcSi queremos ir paso a paso, teclear “n” en cuantoaparezca Browse.> trace(lm, tracer = browser)> lm(5 ~ 6)> untrace(lm)

Y podemos “pillar” funciones que son llamadas porotras.(Probad y usad where, modificad valores, etc).> trace(f1, tracer = browser)> f3(13)> untrace(f1)

(392 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

trace en líneas concretas

Podemos incluir la líneaY cómo identificamos la línea que nos interesa?> as.list(body(f3))> trace(f3, tracer = browser,+ at = 5)> f3> body(f3)> f3(16)> untrace(f3)

ls(), teclead n, etc.

(393 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

trace condicionales

. . . y podemos hacerlo condicional> as.list(body(f3))> trace(f3, tracer = quote(if (y >+ 20) {+ browser()+ }), at = 5)> f3> body(f3)> f3(16)> f3(24)> untrace(f3)

En vez de browser podríamos poner recover. Uotras cosas.

(394 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

trace y edit

Y si queremos insertar código arbitrario?Podemos modificar funciones de paquetes!!Incluidas no exportadas> trace(lm, edit = TRUE)> untrace(lm)> trace(g3, edit = TRUE)> trace(myRpack:::g3, edit = TRUE)

Insertad algo en g3

> body(myRpack:::g3)> g1()> untrace(myRpack:::g3)> body(myRpack:::g3)

(395 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

trace y edit (cont.)

Podemos repetir cuantas veces queramosSi estamos editando una función de un paquete, loscambios se pierden al salir de R y, por eso, esfundamental guardar el código de la función queestamos editando. Si es una función definida en el“global environment”, los cambios se preservan sisalvamos el global environment (por ej., con unsave.image).

(396 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

warnings, debugging

Una opción: warnings a errores> opt <- options(error = recover)> options(warn = 2)> f3(-9)> options(opt)> options(warn = 0)

(Cambio opciones: “si de verdad”: opt <-options(error = recover, warn = 2)).Ojo con ir dejándonos browsers, tracing, opts, etc.Puede ser confuso.

(397 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

warnings, debugging

Otra opción: usar trace con recover o browser(limitado: no funciona si warning desde código en C). Nolo encuentro muy util.> trace(warning, recover)> f33 <- function(x) {+ if( x < 3)+ warning("un warning")+ }> f33(2)> f3(-9)> untrace(warning)> ## Y esto qué hace? Teclead "n"> trace(warning, browser)> f33(2)> untrace(warning)

(398 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Paquete debug

Alternativa a trace y browserPoder seguir corriendo a pesar erroresPosibilidad mover punto ejecución (saltar a sitios)No funciona del todo bien con ESS (una chapucilla: cambiar a

shell-mode, y luego volver a inferior-ess-mode).

(399 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Paquete debug (cont.)

mtrace: que se haga debuggingqqq(): salirmtrace(function, tracing = FALSE);mtrace.off(): quitar debugging a todasbp(line): breakpoint en esa lineskip(line): saltar a esa línea; skip(1) re-iniciargo(): continuar hasta siguiente breakpointConfuso? funciones en namespaces, pero no visibles

(400 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Paquete debug (cont.)

Probemos con errores, y los comandos de arriba: go,skip, bp> library(debug)> mtrace(g3)> g3> myRpack:::g3> g1()> mtrace.off()> mtrace(g1)> g1> g1()> mtrace(g2)> g1()> mtrace(g1)> g1()> g1(-1)

(401 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Paquete debug (cont.)

(Un ejercicio)Usad función f7

breakpoint en línea 6id allí directamente: ¿qué pasa?

(402 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Paquete debug (cont.)

breakpoints condicionales una vez iniciado eldebuggingincluso antes de empezar mtrace, si tercer argumento

> mtrace(g1)> bp(3, min(x) < 0, "g1")> g1() ## dentro: haced go()> g1(-5) ## dentro: haced go()

(No se ve el breakpoint conditional code.)(Cambiad x antes de llegar al breakpoint: realmentees condicional)

(403 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Profiling: system.time y RprofNuestro 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 es llamadacada función y cuanto tiempo se usa en esa función.Ver la ayuda.Garbage collection: desde R 1.2.0 hay garbagecollection. Se puede ver el status con gc(), que sirvetambién para despejar las cosas depues deoperaciones con manejo de grandes objetos.

(404 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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()

(405 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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 funcionalidad deseada.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, "Building fromsource".

I R for Windows FAQ, Ch. 8, "Building from source".

Se puede hacer, pero no es para uso casual. No locubriremos aquí.

(406 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debuggtry

traceback, browser ydebug

recover

where

c, loops

trace

warnings

debug de M. Bravington

Profiling

Llamando a funciones enC/C++

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

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.

(407 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Programación en R (IV): paralelización y ffDebugging código paralelizadoDebugging y paralelizacion: una prácticaError handling y snowfallff y large objectsff y paralelización

(408 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

s

(409 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Paralelización: intro

¿Por qué?Embarazosamente paralelizableLógica: un master, varios slavesMPI, PVM, sockets, NWSRmpi, rpvm, nwssnow, snowfall

(409 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

NotasPVM: poco uso. Entre MPI y PVM la elección paraprimer uso creo está claraMPI: ¿qué MPI?Rmpi y papply: bonita combinación. Bajo nivel siquiero, alto cuando quiero. Fácil debugging (porpapply). papply: no longer maintainedsnow: demasiado farragoso para mi. Muchas “capasintermedias”, y error-handling no me gustaMPI: configuración. Sockets funcionan en (casi) todaspartessnowfall: lo hace todo (a veces demasiado) sencilloNWS: tentadora la intercomunicación de lenguajes yel modelo. ¿Overhead del setup?Ganancia: en buenos casos, casi lineal con númerode CPUs.Otros paquetes para R, como foreach y similares.

(410 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Consideraciones

Número de nodos esclavosAlmacenamiento común y accesoRelación entre cálculo, envío de datos, I/OTolerancia a fallosLoad-balancingSólo ejemplos con snowfall aquí

(411 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplos con snowfall

Primero ejemplos, y números aleatorios (más sobrenúmero aleatorios:https://stat.ethz.ch/pipermail/r-sig-hpc/2010-December/000858.html).> sfInit(parallel = TRUE, cpus = 4, type = "SOCK")> ## No usar lo que dicen en tutorial, p. 10>> sfClusterSetupRNG()> sfClusterApply(1:4, rnorm)> sfClusterApply(1:4, function(x) rnorm(1))> sfClusterApply(1:4, function(x) rnorm(x, sd = 10))> sfClusterApply(1:4, rnorm, sd = 10)> sfClusterApply(1:4, function(x) rnorm(1))> sfClusterApply(1:4, function(x) rnorm(1, sd = 10))> sfClusterApply(1:4, rnorm(1, sd = 10))> sfClusterSetupRNG(seed = rep(12, 6)> sfSapply(1:8, function(x) rnorm(1))> sfClusterApply(1:8, function(x) rnorm(1))

(412 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplos con snowfall (cont.)

> sfClusterSetupRNG(seed = rep(12, 6)> sfClusterApplyLB(1:8, function(x) rnorm(1))> sfClusterSetupRNG(seed = rep(12, 6))> unlist(sfClusterApplyLB(1:8, function(x) rnorm(1)))> sfInit(parallel = TRUE, cpus = 8, type = "SOCK")> sfClusterSetupRNG(seed = rep(12, 6))> sfSapply(1:8, function(x) rnorm(1))> sfClusterSetupRNG(seed = rep(12, 6))> unlist(sfClusterApplyLB(1:8, function(x) rnorm(1)))

(413 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplos con snowfall (cont.)Exportar objetos o pasar en argumentos> sfClusterEval(rnorm(3))> sfClusterCall(rnorm, 3)> sfClusterCall(function() rnorm(3))> sfClusterEval(ls())> sfClusterCall(function() ls())> x1 <- 1:10> x2 <- 11:20> sfExport("x1", "x2")> ## sfExportAll???>> sfClusterEval(ls())> sfClusterEval(x1)> sfClusterApplyLB(100:110, sum, x1)> sfClusterApplyLB(1:10, function(i) {x1[i] * x2[i]})> ## Y si cambio x2?> x2 <- 1000:1010> sfClusterApplyLB(1:10, function(i) {x1[i] * x2[i]})> ## x3 pasado como argumento> x3master <- 11:20> sfClusterApplyLB(1:10,+ function(i, x3) {x1[i] * x3[i]},+ x3 = x3master)

(414 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplos con snowfall (cont.)

(Del tutorial de Knaus y Porzelius)> sfInit(parallel = TRUE, cpus = 4, type = "SOCK")> sfLibrary(randomForest)> data(iris)> boot.n <- 5 ## for real, much larger!!> boot.index <-+ t(sapply(1:boot.n,+ function(b){ sample(1:nrow(iris),+ replace=TRUE)}))> not.in.sample <- list()> for (i in 1:boot.n){+ not.in.sample[[i]] <-+ (1:nrow(iris))[-unique(boot.index[i, ])]+ }

(415 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplos con snowfall (cont.)

(Del tutorial de Knaus y Porzelius, cont.)> boot.fun <- function(actual.sample){+ sample.fit <-+ randomForest(Species ~ .,+ data =+ iris[boot.index[actual.sample, ], ])+ prediction <-+ predict(sample.fit,+ newdata =+ iris[not.in.sample[[actual.sample]],+ 1:4])+ sum(prediction !=+ iris[not.in.sample[[actual.sample]], 5])/+ length(prediction)+ }> sfExport("iris", "boot.index", "not.in.sample")> sfClusterEval(ls())> (res <- sfClusterApplyLB(1:boot.n, boot.fun))> (error <- mean(unlist(res)))> ## Resultados son listas.> ## Casi siempre procesado adicional necesario

(416 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Debugging código paralelizado

Mismas ideas generalesNo acceso directo a nodos esclavos

I Que devuelvan errores al master. Rara vez inteligiblecon snow/snowfall. Crear nuestra clase try.

I Replicar en master lo que pasa en el esclavo

(417 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Un error habitual: ¿dónde está la función?

> fs1 <- function(x) {+ 3 * x+ }> sfClusterApplyLB(1:5, fs1)> sfClusterApplyLB(1:5,+ function(x) fs1(9))> sfExport("fs1")> sfClusterApplyLB(1:5, function(x) fs1(9))

(418 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Debugging código paralelizado (cont.)

> h1 <- function(x, y) {+ tmp <- log(y)+ x <- 2 * x+ rnorm(x, sd = tmp)+ }> sfInit(parallel = TRUE, cpus = 4, type = "SOCK")> sfClusterEval(ls()) ## no hay nada> ## Este mensaje ayuda poco> xn <- c(1, 2, 3, 2, -3, 2)> sfClusterApplyLB(xn,+ h1,+ y = 3)> ## Y si en serie con snowfall?> sfInit(parallel = FALSE)> ## Algo mejor, pero no mucho> sfClusterApplyLB(xn,+ h1,+ y = 3)

(419 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Debugging código paralelizado (cont.)

> ## Forzar ejecución uno a uno en master. Sencillo!!> for(i in xn) {+ cat("\n Haciendo xn ", i, "\n")+ h1(i, 3)+ }

> ## Aha! es el xn = -3. Ver qué pasa ahí> h1(-3, 3)> ##> ## Si sospecho algunos, restringir "i" a esos> for(i in xn[4:6]) {+ cat("\n Haciendo xn ", i, "\n")+ h1(i, 3)+ }

(Todo lo anterior puede también hacerse dentro de unentorno de debugging).

(420 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Debugging y paralelizacion: una práctica

Usad tanto funciones habituales como mtrace (enpaquete debug)> sfInit(parallel = TRUE, cpus = 4, type = "SOCK")> library(myRpack)> g1(-1, snowfall = TRUE)

(g2p llama a g3 en maestro. Y si hicierasfClusterApplyLB(x, function(z) g3(z))?Recordad sfLibrary? Por qué sí o por qué no aquí?).(MUCHO OJO con lo que pasa dentro de g1, g3, etc!!.Una pista: podría estar enviandose a los nodos todo elenvironment?).

(421 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Según la documentación . . .

P. 6 en viñeta snowfall: stopOnError (que no se usaen clusterApplyLB, sfSapply, sfLapply)Usando options(error = ...)

Lo primero no parece funcionar donde queremosLo segundo?> opt <- options(error = recover)> sfClusterApplyLB(xn,+ h1, y = 3)> options(opt)

En lo que sigue: ilustro una forma quizás heterodoxa

(422 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Qué hace snowfall si hay errores?

Qué hace snowfall con los errores?> clusterApply> clusterApplyLB> staticClusterApply> dynamicClusterApply> checkForRemoteErrors

snowfall: Wrapps las llamadas en try y mira la claseIntentemos evitar que snowfall detecte el error antesque nosotros. Nosotros hacemos el error handling.

(423 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Modificando clase try-error

> h2 <- function(x, y) {+ tmpf <- try(h1(x, y))+ if(inherits(tmpf, "try-error")) {+ class(tmpf) <- "my-try-error"+ ## otras cosas?+ }+ return(tmpf)+ }> ## Podríamos tb. definir h1 inside h2 y evitar:> sfExport("h1")> ## Be explicit where things live> rm(h1)> sfClusterApplyLB(xn, h2,+ y = 3)> outsf <- sfClusterApplyLB(xn, h2,+ y = 3)> any(unlist(lapply(outsf,+ function(x)+ inherits(x, "my-try-error"))))

(424 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

¿Es necesario?

Para un uso de pocas veces, o por nosotros mismos,probablemente no.Si un paquete: necesitamos algo robusto, y lo anteriorpuede servir.Permite afrontar tipos de errores que podemosanticipar.

(425 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

ff y “very large data”

Tema muy largoIntro en p. 136 documento de Dirk EddelbuettelMás información en ayuda de paquete ff y“ff-examples-concepts.pdf”ff: en R (y en RAM) sólo un puntero de objetosarbitrariamente grandes que se guardan en disco(bigmemory usa RAM, aunque fuera de R).

(426 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Paquete ff

Creación de objetos similares a vectores, matrices,data framesFunciones tipo “apply” optimizadas para no agotarmemoria (?ffapply)Muchas opciones; paquete complejoOjo con qué y dónde se guarda (ffsave, opciónpattern en ff, as.ffdf, etc)Procesar por “cachos”, cada uno de los cuales cabeen R

(427 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplo en docs. ff

Muchas posibles opcionesVer experimentos en paquete experimental R.ff(http://r-forge.r-project.org/R/?group_id=483). Instalar comoinstall.packages("R.ff",repos="http://R-Forge.R-project.org").Este ejemplo (modificado) de“ff-examples-concepts.pdf”

(428 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplo en docs. (cont.)

> tmp <- vector("numeric", length = 1e7)> object.size(tmp)> rm(tmp)> gc()> library(ff)> fd <- ff(vmode="double", length=1e7)> object.size(fd)> filename(fd)> fd> library(snowfall)> sfInit(parallel = TRUE, cpus = 4, type = "SOCK")> finalizer(fd)> # let slaves not delete fd on shutdown> finalizer(fd) <- "close" ## necesario?> sfLibrary(ff)> # do not export the same ff multiple times> sfExport("fd")> # explicitely opening avoids a gc problem> sfClusterEval(open(fd))

(429 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplo en docs. (cont.)

> chunk(fd)> ## ojo lo que hace: modifica el objeto!> system.time(+ sfLapply( chunk(fd), function(i){+ fd[i] <- runif(sum(i))+ invisible()+ })+ )> ## qué hace?> sum(chunk(fd)[[1]])> sum(chunk(fd)[[3]])> system.time(+ s <- sfLapply( chunk(fd),+ function(i) quantile(fd[i], c(0.05, 0.95)) )+ )> # for completeness> sfClusterEval(close(fd))> csummary(s)

(430 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

ff y paralelización: ADaCGH2

Una solución más compleja (para problema máscomplejo)Argumento:

I si ff guarda el objeto en discoI si puedo acceder a (distintas partes de) ese objeto

(lectura sólo!) desde varios procesosI puedo procesar distintas partes de ese objeto a la vezI cada nodo puede escribir cosas distintas en objetosff distintos

Precauciones y similaresI Lentitud de I/O (ej., NFS) y lookingI Lectura sólo!

Usado con éxito en nuevo paquete ADaCGH, la basede nuestra aplicación WaviCGH(http://wavi.bioinfo.cnio.es).

(431 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

ff y paralelización: ADaCGH2 (cont.)

Leer datos y crear objetos ff:inputDataToADaCGHData

(Uso de multicore)Funciones para acceder a objeto ff en los nodos:getffObj. Sólo hace el objeto disponibleFunciones para acceder a una parte de los datos:getCGHvalue, etc. Accede a una partedeterminada del ff.df, que se pasa como índice.Cierra objeto ff antes de devolver datos.Llamada a snowfall: clusterApplyLB(indice,funcion, otros). indice: la parte de datos(ff.df) que lee funcion.

(432 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.Debugging códigoparalelizado

Debugging yparalelizacion: unapráctica

Error handling y snowfall

ff y large objects

ff y paralelización

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

ff y paralelización: ADaCGH2 (cont.)

En cada run en cada proceso se llama a getffObj,y después a getCGHvalue

Cada run en un proceso esclavo SOLO carga elcacho de “indice”Cada nodo escribe un objeto ff (ej., ffListOut).Son objetos distintos en cada run*nodo.En nodo maestro, se compone un objeto ffdf apartir de los ff individuales (outToffdf).Ejemplos: pSegmentHaarSeg, pSegmentGLAD

(433 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Miscell.scan vs. read.tabletapply para bootstrapcov, cor, outerFechasmergeR y bases de datosExpresiones regulares con ROrganización de análisis y programaciónDocumentación

(434 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

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".

(435 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

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)

(436 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Mirar la documentación de ambas con detalle cuandomuchos datos, o situaciones complejas (ej., noconvertir factor); múltiples argumentos que puedenser de utilidad o hacer más rápida la lectura.Si fichero no cabe en memoria de un golpe, hacerlo atrozos (o usar conexión a DB).

(437 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

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)

(438 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

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+ }

(439 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

> bootsample> nobootsample

(440 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

cov, cor, outerDos 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 (apply no).Ver FAQ, 7.19 para más detalles.

(441 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Fechas

Posibilidad de manejo sofisticado de fechas en Rincluyendo zonas horarias.Muy importante en algunos entornos y en ocasionesen 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")

(442 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

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")

(443 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

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)

(444 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

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)

(445 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

R y bases de datos

Posible acceder a bases de datos relacionales desdeR.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 revisar sintaxisSQL).

(446 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Expresiones regulares con RSi se trabaja mucho con caracteres, uso deexpresiones regulares simplifica tareas repetitivas: nobuscamos una cadena concreta, sino “una expresión”(por ejemplo, “sardina”, pero sólo si es con minúscula,no está al inicio de la frase, y no forma 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 con expresionesregulares.Ver “handouts”.Ver páginahttp://www.zytrax.com/tech/web/regex.htm.Ver Google.

(447 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

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), disponibles tantoen Linux/Unix, como Unix. (Por ejemplo, RCS esestándard en Emacs).Incorporar comentarios y código en el estilo “LiterateProgramming”...

(448 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

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.

(449 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Sweave y otros

Sweave sólo necesita una instalación funcional deLATEX.Estándard en Linux. En Windows, muy recomendableMikTeX.Si sólo queremos HTML, podemos usar paquetes“R2HTML” o “prettyR”.

(450 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Documentación sobre R (I)

Los "manuales" de R, incluidos en todas las instalaciones.Son:

An introduction to R. De lectura requerida.Writing R extensions. Creación de paquetes, interfazcon C.R data import/export.The R language definition.R installation and administration.

Y la FAQ.

(451 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.scan vs. read.table

tapply para bootstrap

cov, cor, outer

Fechas

merge

R y bases de datos

Expresiones regularescon R

Sweave et al.

Docs.

Estadística conR (IV): Modeloslineales con R

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

(452 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Estadística con R (IV): Modelos lineales con RRegresión lineal y regresión múltipleAnova y otros modelosDiagnósticosSelección de variablesModelos lineales generalizados

Modelos lineales generalizados: introducciónDatos dicotómicos. Regresión logísticaModelos de Poisson

(453 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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)

(454 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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).

(455 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

y = β0 + β1x1 + . . .+ βpxp + e

Modelos de regresión no paramética. Generalizan laforma de la x . La relación no tiene por qué ser lineal.Por ej., GAMs.Regresión robusta: mínimos cuadrados funciona malcon errores con distribuciones con colas muypesadas. Efectos outliers, distribuciones extremas,etc. Ver rlm en paquete MASS.

(456 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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.Empecemos por lm, aov, lme, nlme, lmer. (Lasúltimas tres en librerías nlme, lme4).Muy útiles las funciones existentes en la librería carde J. Fox.Para otros problemas con modelos lineales, algunosmodelos lineales generalizados y análisis desupervivencia, muy interesantes también las libreríasHmisc y Design, de F. Harrell.

(457 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Nuestra exposición seguirá muy de cerca la de J. Fox,2002, “An R and S-Plus companion to appliedregression” (Sage) y J.J. Faraway (2006) “Extendingthe linear model with R”.Nuestra exposición es MUY rápida. Es sólo para abrirel apetito y ver el amplísimo rango de herramientas anuestra disposición.No recomiendo los libros de Crawley.

(458 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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)

(459 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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.

(460 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> data(Prestige)> `?`(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))

(461 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> anova(mod.prestige)> Anova(mod.prestige)> help(Anova)

(La función Anova es parte de car, no del sistema base.)

(462 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

"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

(463 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Otros tipos de contrastes disponibles (sum, helmert,poly).Fundamental para entender e interpretar coeficientes(y sumas, diferencias, etc, de coeficientes).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’)), dondeel primero se refiere a factores sin ordenar y elsegundo a factores ordenados.

(464 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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)> drop1(mod.prestige4)

(465 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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???

(466 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Interacciones: caso más fácil

Construir predicciones para todos los niveles de lasvariables implicadas (al nivel mediano de la continua). (DeFaraway, 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)

(467 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> 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)

(468 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Interludio: ¿y el warning?

> mg1> summary(mg1)> xtabs(~econ + equip, data = gavote)

(469 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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 no cambiansi alteramos máximo grado polinomio.splines son alternativa; ojo con predicciones (MASS,p. 229).

(470 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> (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

(471 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Anova y otros modelos

Hemos visto el uso de " ", "+", ":", "*", "-1", paraespecificar modelos.Rango completo de modelos es más amplio; "/" paramodelos 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 contexto de losmodelos lineales mixtos. Ver esquema en diapo

“Modelos lineales y derivados” .No entramos aquí en más detalles.

(472 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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.

(473 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> help(influence.measures)> help(influence)> hatvalues(mod.prestige)> round(dfbeta(mod.prestige),+ 3)> round(dfbetas(mod.prestige),+ 3)> plot(cooks.distance(mod.prestige))> identify(1:length(cooks.distance(mod.prestige)),+ cooks.distance(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).

(474 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Diagnósticos: car

La librería car ofrece ciertas adaptaciones y adicionesde plots diagnósticos que son muy cómodas.halfnorm es de Faraway (library(faraway)).> qqPlot(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)])

(475 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Added variable plots y ceres plots

Added variable plots : Muy útiles para detectarleverage e influencia, minimizando elenmascaramiento. Para cada variable Xi , representarlos residuos de y en una regresión con todos menosXi frente a residuos de la regresión de Xi contra todoslos demás X .Ceres or “component + residual” or “partial residual”plots: detección de relaciones no lineales. También lafunción en sistema base termplot. Muestranxi βi + ε = y −

∑j 6=i xj βj (Recordemos que:

y =∑

j xj βj + ε =∑

j 6=i xj βj + xi βi + ε).(En “car”, ver tanto “ceresPlots” como “crPlots”).

(476 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> avPlots(mod.prestige,+ labels = row.names(Prestige))> ceresPlots(mod.prestige,+ ask = TRUE)> par(mfrow = c(1, 2))> ceresPlots(mod.prestige,+ variable = "education")> termplot(mod.prestige,+ partial = TRUE, terms = 1,+ smooth = panel.smooth)> dev.off()

(477 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

VIF: variance inflation factors

Y la multicolinealidad?> vif(mod.prestige)> vif(mod.prestige2)

La√

(vifj) indica cuanto se ensancha el intervalo deconfianza para βj en comparación con una situaciónen la que no hubiera predictores correlacionados.Si VIF > 10: preocupante. Algunos autores sugierencuidado si VIF > 5.

(478 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Otros

Casi todos los métodos mencionados sirven paramodelos lineales generalizados.No se puede enfatizar bastante la necesidad de mirarcon mimo y cuidado los plots de diagnóstico!!

(479 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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, losp-valores no son de fiar (subestimados) y sesubestima también la variabilidad en la obtención desoluciones.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, enlo que sigue, que haremos selección por "motivosheurísticos".

(480 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Comparar algunos modelos concretos> #detach(Prestige)> 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)

(481 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

A veces popular el uso de métodos "stepwise" usandop-valores. En general, aun más desaconsejables.Usemos stepAIC.> library(MASS)> stepAIC(mp3)> stepAIC(mp2)

Cierta tendencia a seleccionar modelos “demasiadograndes”.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 (verregsubsets en librería leaps y función subsets en car).

(482 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Polinomios: el factor con polinomio entra o saleentero. No posibilidad con poly de seleccionar gradode polinomio. (Podemos usar, en vez de poly,codificación a “mano”: x , x2, x3 pero: no ortogonales,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)

(483 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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 a vecesllamada "mean function").

(484 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Datos normales: "identity link"; datos binomiales:"logit link"; Poisson: "log link".Los anteriores son los links comunes. Hay otros paraesas 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) “Extending thelinear model with R”, Everitt y Hotorn (2006) “Ahandbook of statistical analysis using R” y notas deKuhnert y Venables.

(485 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Regresión logística

µ = eη

1+eη , η = log µ1−µ

Usando R: distinguir entre datos binarios (0, 1) ydatos binomiales.

(486 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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)

(487 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> 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")

(488 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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!).(ceresPlots a veces no funcionan bien con GLMs.Usaremos termplot).

(489 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> plot(mroz.mod3)> avPlots(mroz.mod3, 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)

(490 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

“Bubble plots”

La visualización de regresiones logísticas siemprecomplicada.Los bubble plots pueden ayudar (modificado, en datosy 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)

(491 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Podríamos poner un eje “dummy” si usamos unavariable que no esté en el modelo (el caso delejemplo en libro Everitt y Hothorn).

(492 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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

(493 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> bud.mod1 <- glm(SF ~ sex/ldose,+ family = "binomial",+ data = Budworms, trace = TRUE)> summary(bud.mod1)> bud.mod2 <- glm(SF ~ sex *+ ldose, family = "binomial",+ data = Budworms, trace = TRUE)> summary(bud.mod2)> 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")

(494 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

Diagnósticos

Usando “plot” algo más información (pero en estecaso pocos puntos).Nótese “Deviance”: pequeña para los df.

(495 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> 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"))> avPlots(bud.mod3)> ceresPlots(bud.mod3)> termplot(bud.mod3, partial = TRUE,+ smooth = panel.smooth)> halfnorm(cooks.distance(bud.mod3))> plot(dfbetas(bud.mod3)[,+ 3])

(496 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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 esmás rara; fenómenos de repulsión). Usar“quasi-likelihood”. No es trivial.

(497 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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")

(498 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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).

(499 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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)

(500 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

> par(mfrow = c(1, 2))> plot(residuals(orns.mod1,+ type = "deviance") ~+ predict(orns.mod1))> plot(orns.mod1, which = 1)> crPlots(orns.mod1, variable = "assets")> orns.mod2 <- glm(interlocks ~+ log(assets) + nation ++ sector, family = "poisson",+ data = Ornstein)> crPlots(orns.mod2, variable = "log(assets)")> dev.off()

Otros diagnósticos aprox. como antes (outliers, varianzas,etc).

(501 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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)

(502 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con RRegresión lineal yregresión múltiple

Anova y otros modelos

Diagnósticos

Selección de variables

GLMs

Modelos linealesgeneralizados:introducción

Datos dicotómicos.Regresión logística

Modelos de Poisson

ESS, Emacs

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ónpolr 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.

(503 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

R, ESS, Emacs (the usual way)

¿Por qué podríamos querer usar Emacs + ESS?Usar Emacs directamente, sin iconos ni toolbarsadicionales.Si los shortcuts son “raros”: usar cua-mode.

(504 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

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.gz

(505 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

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 (X)Emacs.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 (X)Emacs está editando. Dosimportantes:

I Inferior R process: el buffer cuyo buffer name es"*R*".

I "*scratch buffer*": donde introduciremos comandosy código para R. Lo renombraremos lo-que-sea.R.

Podemos tener muchos otros buffers (ej., podemoseditar código HTML, o C++, o Python, o Perl, o LATEX).

(506 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Uso básico de ESS + (X)Emacs (II)

Mode line: información sobre el buffer que está justoencima. Información sobre buffer name, majormode, font, column and row. (Ojo: la numeraciónde la columna empieza por 0 por defecto).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 (X)Emacs haga copiasperiódicas (útil en caso de crash.)

(507 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Uso básico de ESS + (X)Emacs (III)

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) unfichero con extensión Py, cpp, tex, html?Iniciamos (X)Emacs en el directorio de nuestrointerés.Abrimos o creamos un fichero con código en R.Escribimos algo de código en R...

(508 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

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.Enviar y pasar a la siguiente línea.Trabajar directamente en *R*, editando comandos,completando comandos, etc.menu-bar-mode y tool-bar-mode en Emacs.

(509 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Shortcuts útiles en ESS y (X)Emacs

"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 antiguos por defecto).

(510 : 511)

Objetivos

Introducción

R: lenguaje

Import/Export

Gráficos en R

Progr. I

Estadística conR (I)

Estadística conR (II): Intro amodelos lineales

Estadística conR (III)

Prog. II

Progr. III:Debugg

Parall.

Miscell.

Estadística conR (IV): Modeloslineales con R

ESS, Emacs

Ejemplos de la reference sheet

Pues eso.Fijaos en call-tips.

(511 : 511)