Notas sobre R - ub.edu · plot() y compan~ a I La instruccion b asica para crear un gr a co es...

35
Notas sobre R Francesc Carmona, Jordi Oca˜ na i Alex S´ anchez Department d’Estad´ ıstica Universitat de Barcelona 23 de gener de 2008

Transcript of Notas sobre R - ub.edu · plot() y compan~ a I La instruccion b asica para crear un gr a co es...

Notas sobre R

Francesc Carmona, Jordi Ocana i Alex Sanchez

Department d’EstadısticaUniversitat de Barcelona

23 de gener de 2008

Outline

IntroducionInstrucciones de alto nivelAjuste de parametrosMas ejemplosIdentificacion de puntos en la region graficaGraficos Trellis

Graficos

Introduccion

I R tiene grandes posibilidades para hacer graficos.I demo(graphics)I http://addictedtor.free.fr/graphiques

I Idea: la visualizacion es parte integral del analisis y lacomunicacion de los resultados

I Los graficos deben ser en primer lugar estadısticos.

I Tambien pueden ser esteticos.

Tipos de funciones graficas en R

I Funciones de alto nivelI Permiten crear los graficos basicosI plot, hist, boxplot, pairs,...

I Funciones de bajo nivelI Permiten modificar los graficos creadosI points, lines, text, axis,...

I Graficos Trellis: Permiten describir situaciones complejas, amenudo multivariantes, con un solo grafico organizado enpaneles.

Los dispositivos graficos

I Cuando creamos un grafico en R dirigimos la salida hacia undispositivo o “driver”.

I Por defecto es la pantalla.I Hay muchos formatos disponibles:

’postscript’,’pdf’,’png’,’jpeg’,’bmp’,...

I La utilizacion de los distintos drivers aumenta la flexibilidad ypotencia de R

I Podemos crear graficos de gran calidad, de manera automatica.I Podemos crear grandes cantidades de graficos mediante scripts

para tratamientos masivos de datos.

Los pasos para crear un grafico

I Una forma tıpica de crear graficos puede ser:I Llamar el driver hacia el que se dirigira la salidaI Establecer los parametros por defecto (Ajustes previos al

grafico)I Crear el grafico utilizando funciones de alto nivel (Ajustes al

crear el grafico)I Modificar el grafico con funciones de bajo nivel (Ajustes

prosteriores al grafico)I Restablecer los parametrosI Cerrar el dispositivo de salida.

Outline

IntroducionInstrucciones de alto nivelAjuste de parametrosMas ejemplosIdentificacion de puntos en la region graficaGraficos Trellis

Graficos

plot() y companıa

I La instruccion basica para crear un grafico es plot()

I Se trata de una funcion generica: Al ser R un lenguajeorientado a objetos el resultado de la funcion sera diferentesegun sobre que tipo de datos se aplique.

> opt <- par(bg = "lightyellow", mfrow = c(1, 1))

> barplot(VADeaths, beside = T, col = c("blue", "pink", "cyan",

+ "yellow", "red"), legend = rownames(VADeaths), ylim = c(0,

+ 100))

> title(main = "Death Rates in Virginia", font.main = 3)

> par(opt)

Ejemplo

Rural Male Rural Female Urban Male Urban Female

50−5455−5960−6465−6970−74

020

4060

8010

0

Death Rates in Virginia

Outline

IntroducionInstrucciones de alto nivelAjuste de parametrosMas ejemplosIdentificacion de puntos en la region graficaGraficos Trellis

Graficos

Ajustes previos al grafico: par()

I La instruccion par() permie establecer un grandısimo numerode opciones graficas (? par)

I A diferencia de otros programas, muchos aspectos deconfiguracion deben establecerse antes de crear el grafico.

I Las opciones deben restaurarse despues de su utilizacion

> library(DAAG)

> attach(elasticband)

> oldpar <- par(cex.main = 1.5, mex = 1.5, bg = "lightblue")

> plot(distance ~ stretch)

> par(oldpar)

> detach(elasticband)

> detach(package:DAAG)

42 44 46 48 50 52 54

120

140

160

180

stretch

dist

ance

Ajustes al crear el grafico

I La mayoria de instrucciones admiten un numero mınimo deparametros para definir cosas como el tıtulo (main) o lasetiquetas (xlab, ylab)

> library(DAAG)

> attach(elasticband)

> oldpar <- par(cex.main = 1.5, mex = 1.5)

> plot(distance ~ stretch, main = "Analisis de elasticidad", xlab = "Estiramiento",

+ ylab = "Distancia", sub = "Tomado de 'Using R...'", xlim = c(40,

+ 60), ylim = c(100, 200))

> par(oldpar)

> detach(elasticband)

> detach(package:DAAG)

40 45 50 55 60

100

120

140

160

180

200

Analisis de elasticidad

Tomado de 'Using R...'

Estiramiento

Dis

tanc

ia

Ajustes despues del grafico: funciones de bajo nivel

I Una vez dibujado el grafico podemos anadirle lineas o textofacilmente. ylab)

> library(DAAG)

> attach(elasticband)

> oldpar <- par(cex = 1.5, mex = 1.5)

> plot(distance ~ stretch, main = "Analisis de elasticidad", xlab = "Estiramiento",

+ ylab = "Distancia")

> abline(lm(distance ~ stretch))

> text(stretch, distance, rownames(elasticband), pos = 2, cex = 0.8,

+ col = "red")

> par(oldpar)

> detach(elasticband)

> detach(package:DAAG)

●●

42 44 46 48 50 52 54

120

160

Analisis de elasticidad

Estiramiento

Dis

tanc

ia

1

23

4

5

6

7

Sımbolos, 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, col = 1:7)

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

1 2 3 4 5 6 7

01

23

45

1

1

0 1 2 3 4 56● ●7 8 9 10 11 12 13

● ● ●14 15 16 17 18 19 20

Graficos multiples

Scatterplots matriciales con pairs()

I Si los datos estan en una matriz numerica cuyas columnasrepresentan variables relacionadas podemos representarlassimultaneamente con la instruccion pairs()

> library(MASS)

> data(hills)

> pairs(hills)

> detach(package:MASS)

dist

1000 3000 5000 7000

●●● ●●

●●

●●

●●

● ●

●●

●●

●●

510

1520

25

●●● ● ●

●●

●●

●●

● ●

●●

●●

●●

1000

3000

5000

7000

● ●

●●

●●●

●●●

●●

●●

●●

climb

● ●

●●

●● ●

●●●

●●

●●

●●

5 10 15 20 25

●●

●●

●●●

●●

●●

●●

●●●

●●

50 100 150 200

5010

015

020

0

time

Scatterplots matriciales panelados pairs()

I Si utilizamos un panel simetrico puede contener informacionesdistintas.

I Para ello debemos crear una funcion y utilizarla mediante lafuncion panel()

> panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor) {

+ 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)[1]

+ 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 spots)",

+ lower.panel = panel.cor)

dist

1000 3000 5000 7000

●●● ●●

●●

●●

●●

● ●

●●

●●

●●

510

1520

25

●●● ● ●

●●

●●

●●

● ●

●●

●●

●●

1000

3000

5000

7000

0.65 climb

● ●

●●

●● ●

●●●

●●

●●

●●

5 10 15 20 25

0.92 0.81

50 100 150 200

5010

015

020

0

time

Correlation between genes (alls spots)

Varios graficos por pantalla

I Probablemente las opciones mas utilizadas sean mfrow() ymfcol()

I Permiten representar mas de un grafico por pantallaorganizandolos 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 altura",

+ line = 2)

> detach(Animals)

> detach(package:MASS)

●●●●● ●

●●

●●

●●

●●●●●●●●●

● ●●●

0 20000 60000

020

0040

00

body

brai

n

●●

●●

●●

●●

●●

●●●

●●

0 50 100 200 300

020

4060

sqrt(body)sq

rt(b

rain

)

●●

●●

●●

●●

●●

1.0 1.5 2.0 2.5 3.0

1.0

1.5

2.0

(body)^0.1

(bra

in)^

0.1

●●

●●

●●

●●

0 5 10

02

46

8

log(body)

log(

brai

n)

Varias formas de representar la relacion peso altura

Outline

IntroducionInstrucciones de alto nivelAjuste de parametrosMas ejemplosIdentificacion de puntos en la region graficaGraficos Trellis

Graficos

Mas ejemplos

I La mejor forma de aprender a utilizar los parametros esprobando que efecto producen sobre los graficos.

I 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

I El codigo contenido en este script:http://www.stat.auckland.ac.nz/~paul/RGraphics/examples-stdplots.R realiza los graficos de la paginasiguiente.

● ●●

●●

●●

● ● ● ● ●

0 4 8 12 16

0

2

4

6

0

2

4

6

Travel Time (s)

Res

pons

es p

er T

rave

l

Res

pons

es p

er S

econ

d

Bird 131

Histogram of Y

Y

Den

sity

−3 −2 −1 0 1 2 3

0.0

0.1

0.2

0.3

0.4

0.5

0

50

100

150

200

RuralMale

RuralFemale

UrbanMale

UrbanFemale

11.718.1

26.9

41

66

8.711.720.3

30.9

54.3

15.424.3

37

54.6

71.1

8.413.619.3

35.1

50

0.5 1 2

0

5

10

15

20

25

30

35

toot

h le

ngth

Vitamin C dose (mg)0.5 1 2

0

5

10

15

20

25

30

35

Ascorbic acidOrange juice

x

y

z

Blueberry

Cherry

Apple

Boston Cream

Other

Vanilla

Outline

IntroducionInstrucciones de alto nivelAjuste de parametrosMas ejemplosIdentificacion de puntos en la region graficaGraficos Trellis

Graficos

I R permite una cierta interaccion con interactuar con losgraficos en pantalla.

I identify() Permite etiquetar puntos, colocando el cursorsobre ellos y haciendo un clic con el boton izquierdo.

I locate() Permite obtener las coordenadas del punto,colocando el cursor sobre ellos y haciendo un clic con el botonizquierdo.

I La interaccion finaliza si se alcanza el total de puntossolicitados o se pulsa el boton derecho.

library(UsingR);attach(florida)plot(BUSH, BUCHANAN, xlab="Bush", ylab="Buchanan")identify(BUSH, BUCHANAN, County)locator()detach(florida);detach(package:UsingR)

Outline

IntroducionInstrucciones de alto nivelAjuste de parametrosMas ejemplosIdentificacion de puntos en la region graficaGraficos Trellis

Graficos

La libreria lattice

I El paquete lattice es muy util para describir graficamentedatos multivariantes.

I La idea consiste en que el grafico esta formado por un ciertonumero de paneles.

I Normalmente cada uno de ellos corresponde a alguno de losvalores de una variable que condiciona.

I Las funciones se escriben con la notacion de la formula delmodelo.

I En los graficos univariantes como los histogramas, la variablerespuesta, a la izquierda, se deja vacıa.

Un grafico Trellis basico

CW

Per

cent

of T

otal

0

5

10

15

20

20 30 40 50

B

20 30 40 50

O

Representacion de una variable condicionada por losvalores de otra

CW

20 30 40 50

B

O

Notacion de formula en graficos Trellis

CW

F

M

20 30 40 50

B

F

M

O

La ultima instruccion esmuy interesante porque nos permite estudiar comparativamente elsexo separado por especies.