Notas sobre R Francesc Carmona, Jordi Oca˜ na na i Alex Ale x S´anch anchez ez Departme Dep artment nt d’Esta d’E stad d´ıstica ıst ica Universitat de Barcelona
23 de gener de 2008
Outline Introduci´on on Instrucciones de alto nivel Ajus Aj uste te de par´amet ametro ross M´as as ej ejeemp mpllos Identificaci´ on de puntos en la regi´ on on gr´afica Graficos Trellis
Graficos
Outline Introduci´on on Instrucciones de alto nivel Ajus Aj uste te de par´amet ametro ross M´as as ej ejeemp mpllos Identificaci´ on de puntos en la regi´ on on gr´afica Graficos Trellis
Graficos
Introducci´ on
R tiene grandes posibilidades para hacer gr´ aficos. aficos.
demo(graphics) http://addictedtor.free.fr/graphiques
Idea: la visualizaci´ on on es parte integral del an´ alisis alisis y la comunicaci´ on on de los resultados
Los Lo s gr´aficos aficos deben deb en ser en primer lugar est estad´ısti st icos .
Tambi´ Tamb i´en en pued pueden en ser ser es e st´eticos .
Tipos de funciones gr´ aficas en R
Funciones de alto nivel
Permiten crear los gr´aficos b´asicos
plot, hist, boxplot, pairs,...
Funciones de bajo nivel
Permiten modificar los gr´aficos creados
points, lines, text, axis,...
Gr´aficos Trellis: Permiten describir situaciones complejas, a menudo multivariantes, con un s´ olo gr´afico organizado en paneles.
Los dispositivos gr´ aficos
Cuando creamos un gr´afico en R dirigimos la salida hacia un dispositivo o “driver”.
Por defecto es la pantalla. Hay muchos formatos disponibles: ’postscript’,’pdf’,’png’,’jpeg’,’bmp’,...
La utilizaci´ on de los distintos drivers aumenta la flexibilidad y potencia de R
Podemos crear gr´aficos de gran calidad, de manera autom`atica. Podemos crear grandes cantidades de gr´aficos mediante scripts para tratamientos masivos de datos.
Los pasos para crear un gr´ afico
Una forma t´ıpica de crear gr´aficos puede ser:
Llamar el driver hacia el que se dirigir´ a la salida Establecer los par´ ametros por defecto (Ajustes previos al gr´afico) Crear el gr´afico utilizando funciones de alto nivel (Ajustes al crear el gr´afico) Modificar el gr´afico con funciones de bajo nivel (Ajustes prosteriores al gr´afico) Restablecer los par´ametros Cerrar el dispositivo de salida.
Outline Introduci´on Instrucciones de alto nivel Ajuste de par´ametros M´as ejemplos Identificaci´ on de puntos en la regi´ on gr´afica Graficos Trellis
Graficos
n´ıa plot() y compa˜
La instrucci´ on b´asica para crear un gr´afico es plot()
Se trata de una funci´ on gen´erica: Al ser R un lenguaje orientado a objetos el resultado de la funcion ser´a diferente segun sobre que tipo de datos se aplique. > > + + > >
opt <- par(bg = "lightyellow", mfrow = c(1, 1)) barplot(VADeaths, beside = T, col = c("blue", "pink" "yellow", "red"), legend = rownames(VADeaths), y 100)) title(main = "Death Rates in Virginia", font.main = par(opt)
Ejemplo
Death Rates in Virginia 0 0 1
50−54 55−59 60−64
0 8
65−69 70−74
0 6
0 4
0 2
0
Rural Male
Rural Female
Urban Male
Urban Female
Outline Introduci´on Instrucciones de alto nivel Ajuste de par´ametros M´as ejemplos Identificaci´ on de puntos en la regi´ on gr´afica Graficos Trellis
Graficos
Ajustes previos al gr´ afico: par()
La instrucci´ on par() permie establecer un grand´ısimo n´ umero de opciones gr´aficas (? par)
A diferencia de otros programas, muchos aspectos de configuraci´ on deben establecerse antes de crear el gr´afico.
Las opciones deben restaurarse despues de su utilizaci´ on > > > > > > >
library(DAAG) attach(elasticband) oldpar <- par(cex.main = 1.5, mex = 1.5, bg = "light plot(distance ~ stretch) par(oldpar) detach(elasticband) detach(package:DAAG)
0 8 1
0 6 1 e c n a t s i d
0 4 1
0 2 1
42
44
46
48
stretch
50
52
54
Ajustes al crear el gr´ afico
La mayoria de instrucciones admiten un numero m´ınimo de par´ametros para definir cosas como el t´ıtulo ( main) o las etiquetas (xlab, ylab) > > > > + + > > >
library(DAAG) attach(elasticband) oldpar <- par(cex.main = 1.5, mex = 1.5) plot(distance ~ stretch, main = "Analisis de elastic ylab = "Distancia", sub = "Tomado de Using R... 60), ylim = c(100, 200)) par(oldpar) detach(elasticband) detach(package:DAAG)
Analisis de elasticidad
0 0 2 0 8 1
a i c n a t s i D
0 6 1 0 4 1 0 2 1 0 0 1
40
45
50
Estiramiento Tomado de 'Using R...'
55
60
Ajustes despues del gr´ afico: funciones de bajo nivel
Una vez dibujado el gr´afico podemos a˜ nadirle lineas o texto facilmente. ylab) > > > > + > > + > > >
library(DAAG) attach(elasticband) oldpar <- par(cex = 1.5, mex = 1.5) plot(distance ~ stretch, main = "Analisis de elastic ylab = "Distancia") abline(lm(distance ~ stretch)) text(stretch, distance, rownames(elasticband), pos = col = "red") par(oldpar) detach(elasticband) detach(package:DAAG)
Analisis de elasticidad
3
a i c n a t s i D
4
0 6 1
7
1
0 2 1
5
42
44
46
48
50
Estiramiento
52
54
S´ımbolos, colores y tama˜ nos para los gr´aficos
> > > > > > >
plot(1, 1, xlim = c(1, 7.5), ylim = c(0, 5), type = "n") points(1:7, rep(4.5, 7), cex = 1:7, col = 1:7, pch = 0:6 text(1:7, rep(3.5, 7), labels = paste(0:6), cex = 1:7, c points(1:7, rep(2, 7), pch = (0:6) + 7) text((1:7) + 0.25, rep(2, 7), paste((0:6) + 7)) points(1:7, rep(1, 7), pch = (0:6) + 14) text((1:7) + 0.25, rep(1, 7), paste((0:6) + 14))
5
4
2
1
0
3
3
4 56
1
2
7
8
9
10
11
12
13
1
14
15
16
17
18
19
20
0
1
2
3
4
5 1
6
7
Gr´aficos m´ ultiples
Scatterplots matriciales con pairs()
Si los datos estan en una matriz num´ erica cuyas columnas representan variables relacionadas podemos representarlas simult´aneamente con la instrucci´ on pairs() > > > >
library(MASS) data(hills) pairs(hills) detach(package:MASS)
1 00 0
3 00 0
5 00 0
7 00 0
5 2 0 2
dist
5 1 0 1
5
0 0 0 7 0 0 0 5
climb
0 0 0 3 0 0 0 1
0 0 2
0 5 1
time
0 0 1
0 5
5
10
15
20
25
50
100
150
200
Scatterplots matriciales panelados pairs() Si utilizamos un panel sim´ etrico puede contener informaciones distintas. Para ello debemos crear una funci´ on y utilizarla mediante la funci´ on panel()
> panel.cor <- function(x, y, digits = 2, prefix = "", + usr <- par("usr") + on.exit(par(usr)) + par(usr = c(0, 1, 0, 1)) + r <- cor(x, y, use = "complete.obs") + txt <- format(c(r, 0.123456789), digits = digits + txt <- paste(prefix, txt, sep = "") + if (missing(cex.cor)) + cex <- 0.8/strwidth(txt) + text(0.5, 0.5, txt, cex = cex * 0.5) + } > pairs(hills, main = "Correlation between genes (alls + lower panel = panel cor)
Correlation between genes (alls spots) 1 00 0
3 00 0
5 00 0
7 00 0
5 2 0 2
dist
5 1 0 1
5
0 0 0 7 0 0 0 5
0.65
0 0 0 3
climb
0 0 0 1
0 0 2
0 5 1
0.92
0.81
time
0 0 1
0 5
5
10
15
20
25
50
100
150
200
Varios gr´ aficos por pantalla
Probablemente las opciones m´ as utilizadas sean mfrow() y mfcol()
Permiten representar m´as de un gr´afico por pantalla organiz´andolos por filas o columnas. > > > > > > > > > + > >
library(MASS) attach(Animals) par(mfrow = c(2, 2), pch = 16) plot(body, brain) plot(sqrt(body), sqrt(brain)) plot((body)^0.1, (brain)^0.1) plot(log(body), log(brain)) par(mfrow = c(1, 1), pch = 1) mtext("Varias formas de representar la relacion peso line = 2) detach(Animals) detach(package:MASS)
Varias formas de representar la relacion peso altura
n i a r b
0 0 0 4
) n i a r b ( t r q s
0 0 0 2
0
0 6
0 4
0 2
0
0
20000
60000
0
50 100
body
200
300
sqrt(body)
8
1 . 0 ^ ) n i a r b (
0 . 2
) n i a r b ( g o l
5 . 1
0 . 1
6
4 2
0
1.0
1.5
2.0
(body)^0.1
2.5
3.0
0
5 log(body)
10
Outline Introduci´on Instrucciones de alto nivel Ajuste de par´ametros M´as ejemplos Identificaci´ on de puntos en la regi´ on gr´afica Graficos Trellis
Graficos
M´as ejemplos
La mejor forma de aprender a utilizar los par´ ametros es probando que efecto producen sobre los gr´aficos. Una buena fuente de ejemplos esta en la p´agina web del libro “R graphics”de Paul Murrell http://www.stat.auckland. ac.nz/~paul/RGraphics/rgraphics.html
El codigo contenido en este script: http://www.stat.auckland.ac.nz/~paul/RGraphics/ agina examples-stdplots.R realiza los gr´aficos de la p´
siguiente.
l e v 6 a r T r e 4 p s e s 2 n o p s e 0 R
d
Histogram of Y
6 n o
c e S 4 r y e t p i s n s e 2 e s D n o p s 0 e R
Bird 131
0
4
8
12
Travel Time (s)
0.5 0.4 0.3 0.2 0.1 0.0 −3
16
−2
−1
0
1
2
3
Y
200
35 30
71.1 150 66 100
54.3
54.6
50
30.9
37
35.1
20.3 11.7 8.7
24.3 15.4
19.3 13.6 8.4
41 50
26.9 18.1 11.7
0
Rural Male
Rural Female
Urban Male
h t g n e l h t o o t
25 20 15 10 Ascorbic acid Orange juice
5 0
Urban Female
0.5
0.5
1
1
2
Vitamin C dose (mg) Cherry
Blueberry z
Apple
Vanilla
y x
Other Boston Cream
2
Outline Introduci´on Instrucciones de alto nivel Ajuste de par´ametros M´as ejemplos Identificaci´ on de puntos en la regi´ on gr´afica Graficos Trellis
Graficos
on con interactuar con los R permite una cierta interacci´ gr´aficos en pantalla.
identify() Permite etiquetar puntos, colocando el cursor
sobre ellos y haciendo un clic con el bot´on izquierdo. locate() Permite obtener las coordenadas del punto, colocando el cursor sobre ellos y haciendo un clic con el bot´on izquierdo.
La interacci´ on finaliza si se alcanza el total de puntos solicitados o se pulsa el bot´ on derecho. library(UsingR);attach(florida) plot(BUSH, BUCHANAN, xlab="Bush", ylab="Buchanan") identify(BUSH, BUCHANAN, County) locator() detach(florida);detach(package:UsingR)
Outline Introduci´on Instrucciones de alto nivel Ajuste de par´ametros M´as ejemplos Identificaci´ on de puntos en la regi´ on gr´afica Graficos Trellis
Graficos
La libreria lattice
El paquete lattice es muy u ´til para describir gr´aficamente datos multivariantes. La idea consiste en que el gr´afico est´a formado por un cierto n´ umero de paneles.
Normalmente cada uno de ellos corresponde a alguno de los valores de una variable que condiciona.
Las funciones se escriben con la notaci´ on de la f´ ormula del modelo.
En los gr´aficos univariantes como los histogramas, la variable respuesta, a la izquierda, se deja vac´ıa.
Un grafico Trellis b´ asico
20
B
l 15 a t o T f o t n e c 10 r e P
5
0
30
40
O
20
20
30
40
50
CW
50
Representaci´ on de una variable condicionada por los valores de otra O
B
20
30
40
CW
50