Notas sobre R - ub.edu · plot() y compan~ a I La instruccion b asica para crear un gr a co es...
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)
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))
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.