Vous êtes sur la page 1sur 35

Notas sobre R

Francesc Carmona, Jordi Oca


na i Alex Sanchez
Department dEstadstica
Universitat de Barcelona

23 de gener de 2008

Outline
Introducion
Instrucciones de alto nivel
Ajuste de parametros
Mas ejemplos
Identificacion de puntos en la regi
on grafica
Graficos Trellis

Graficos

Introduccion

R tiene grandes posibilidades para hacer graficos.


demo(graphics)
http://addictedtor.free.fr/graphiques

Idea: la visualizaci
on es parte integral del analisis y la
comunicacion de los resultados
Los graficos deben ser en primer lugar estadsticos.
Tambien pueden ser esteticos.

Tipos de funciones graficas en R

Funciones de alto nivel


Permiten crear los graficos basicos
plot, hist, boxplot, pairs,...

Funciones de bajo nivel


Permiten modificar los graficos creados
points, lines, text, axis,...

Graficos Trellis: Permiten describir situaciones complejas, a


menudo multivariantes, con un s
olo grafico organizado en
paneles.

Los dispositivos graficos

Cuando creamos un grafico 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 utilizacion de los distintos drivers aumenta la flexibilidad y


potencia de R
Podemos crear graficos de gran calidad, de manera autom`atica.
Podemos crear grandes cantidades de graficos mediante scripts
para tratamientos masivos de datos.

Los pasos para crear un grafico

Una forma tpica de crear graficos puede ser:


Llamar el driver hacia el que se dirigira la salida
Establecer los parametros por defecto (Ajustes previos al
grafico)
Crear el grafico utilizando funciones de alto nivel (Ajustes al
crear el grafico)
Modificar el grafico con funciones de bajo nivel (Ajustes
prosteriores al grafico)
Restablecer los parametros
Cerrar el dispositivo de salida.

Outline
Introducion
Instrucciones de alto nivel
Ajuste de parametros
Mas ejemplos
Identificacion de puntos en la regi
on grafica
Graficos Trellis

Graficos

plot() y compana

La instruccion basica para crear un grafico es plot()

Se trata de una funci


on generica: Al ser R un lenguaje
orientado a objetos el resultado de la funcion sera 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), yl
+
100))
> title(main = "Death Rates in Virginia", font.main = 3
> par(opt)

Ejemplo

100

Death Rates in Virginia

20

40

60

80

5054
5559
6064
6569
7074

Rural Male

Rural Female

Urban Male

Urban Female

Outline
Introducion
Instrucciones de alto nivel
Ajuste de parametros
Mas ejemplos
Identificacion de puntos en la regi
on grafica
Graficos Trellis

Graficos

Ajustes previos al grafico: par()


La instruccion par() permie establecer un grandsimo n
umero
de opciones graficas (? par)
A diferencia de otros programas, muchos aspectos de
configuracion deben establecerse antes de crear el grafico.

Las opciones deben restaurarse despues de su utilizacion


> library(DAAG)
> attach(elasticband)
> oldpar <- par(cex.main = 1.5, mex = 1.5, bg = "lightb
> plot(distance ~ stretch)
> par(oldpar)
> detach(elasticband)
> detach(package:DAAG)

180

50

52

140

120

distance

160

42

44

46

48

stretch

54

Ajustes al crear el grafico

La mayoria de instrucciones admiten un numero mnimo de


parametros para definir cosas como el ttulo (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 elastici
+
ylab = "Distancia", sub = "Tomado de Using R..."
+
60), ylim = c(100, 200))
> par(oldpar)
> detach(elasticband)
> detach(package:DAAG)

180

200

Analisis de elasticidad

160

140

120

100

Distancia

40

45

50

Estiramiento
Tomado de 'Using R...'

55

60

Ajustes despues del grafico: funciones de bajo nivel

Una vez dibujado el grafico 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 elastici
+
ylab = "Distancia")
> abline(lm(distance ~ stretch))
> text(stretch, distance, rownames(elasticband), pos =
+
col = "red")
> par(oldpar)
> detach(elasticband)
> detach(package:DAAG)

Analisis de elasticidad
2

160

4 7

120

Distancia

42 44 46 48 50 52 54

Estiramiento

Smbolos, colores y tamanos para los graficos

>
>
>
>
>
>
>

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, co
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

4 56

14

15

16

10

11

17

18

12

13

19

20

5
1

Graficos m
ultiples

Scatterplots matriciales con pairs()

Si los datos estan en una matriz numerica cuyas columnas


representan variables relacionadas podemos representarlas
simultaneamente con la instrucci
on pairs()
> library(MASS)
> data(hills)
> pairs(hills)
> detach(package:MASS)

1000

3000

5000

7000

10

200

150

time

10

climb

50

100

7000

5000
3000

15

15

dist

1000

20

25

20

25

50

100

150

200

Scatterplots matriciales panelados pairs()

Si utilizamos un panel simetrico puede contener informaciones


distintas.
Para ello debemos crear una funci
on y utilizarla mediante la
funcion 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)


1000

3000

5000

7000

20

25

10

15

dist

5000

7000

3000

0.65

climb

150

200

1000

0.81

100

time

50

0.92
5

10

15

20

25

50

100

150

200

Varios graficos por pantalla


Probablemente las opciones mas utilizadas sean mfrow() y
mfcol()
Permiten representar mas de un grafico por pantalla
organizandolos 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

60

20000

40

sqrt(brain)

20

4000
2000
0

brain

60000

50 100

body

log(brain)

1.0

300

2.0

1.5
1.0

(brain)^0.1

200

sqrt(body)

1.5

2.0

(body)^0.1

2.5

3.0

5
log(body)

10

Outline
Introducion
Instrucciones de alto nivel
Ajuste de parametros
Mas ejemplos
Identificacion de puntos en la regi
on grafica
Graficos Trellis

Graficos

Mas ejemplos

La mejor forma de aprender a utilizar los parametros es


probando que efecto producen sobre los graficos.
Una buena fuente de ejemplos esta en la pagina 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/
examples-stdplots.R realiza los graficos de la pagina
siguiente.

2
0

12

16

Histogram of Y
0.5
0.4
Density

6
Bird 131

Responses per Second

Responses per Travel

0.3
0.2
0.1
0.0
3

Travel Time (s)

200

30

100

54.6

50

30.9

37

35.1

20.3
11.7
8.7

24.3
15.4

19.3
13.6
8.4

54.3
41
26.9
18.1
11.7
Rural
Male

Rural
Female

Urban
Male

tooth length

66

35
71.1

150

50

25

20
15
10
Ascorbic acid
Orange juice

5
0

Urban
Female

0.5

0.5

Vitamin C dose (mg)


Cherry

Blueberry

z
Apple

Vanilla

Other
Boston Cream

Outline
Introducion
Instrucciones de alto nivel
Ajuste de parametros
Mas ejemplos
Identificacion de puntos en la regi
on grafica
Graficos Trellis

Graficos

R permite una cierta interacci


on con interactuar con los
graficos 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 boton
izquierdo.

La interaccion 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
Introducion
Instrucciones de alto nivel
Ajuste de parametros
Mas ejemplos
Identificacion de puntos en la regi
on grafica
Graficos Trellis

Graficos

La libreria lattice

El paquete lattice es muy u


til para describir graficamente
datos multivariantes.
La idea consiste en que el grafico esta 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 formula del
modelo.
En los graficos univariantes como los histogramas, la variable
respuesta, a la izquierda, se deja vaca.

Un grafico Trellis basico


20

Percent of Total

15

10

30

40

20

20

30

40

50

CW

50

Representacion de una variable condicionada por los


valores de otra
O

20

30

40

CW

50

Notacion de formula en graficos Trellis


O

20

30

40

CW

50

La u
ltima instruccion es
muy interesante porque nos permite estudiar comparativamente el
sexo separado por especies.