37
Borrador Cap´ ıtulo 2 An´ alisis exploratorio y representaci´ongr´ afica de datos Despu´ es de haber dise˜ nado un estudio o experimento y haber recolectado los datos, una de las primeras acciones, antes de emprender contrastes de hip´ otesis o an´ alisis concienzudos, es la representaci´ on gr´ afica de los datos. La representaci´ on gr´ afica tiene dos aplicaciones principales en el contexto del an´ alisis de datos (Ellison 1993). Por un lado, los gr´ aficos son una herramienta que permite explorar la existencia de patrones en los mismos como paso previo a un an´ alisis m´ as formal, lo que se conoce como an´ alisis exploratorio de datos (AED, Tukey 1977). Por otro lado, y de acuerdo con el aforismo de que ”una imagen vale m´ as que mil palabras”, una representaci´ on gr´ afica adecuada es capaz de comunicar gran cantidad de informaci´ on de manera concisa y eficiente. Mientras que el AED gr´ afico suele basarse en gr´ aficos simples y sencillos, que bastan para detectar patrones y, en algunos casos, sugerir an´ alisis estad´ ısticos no anticipados, la producci´ on de gr´ aficos para publicaciones y presentaciones cient´ ıficas debe enfocarse a la obtenci´ on de representaciones de gran calidad, que dejen una impresi´ on duradera en los lectores o en la audiencia, o que maximicen la probabilidad de que nuestro art´ ıculo sea enviado a revisi´ on por parte del editor de una revista. Tanto el AED gr´ afico como la producci´ on de gr´ aficos de calidad representan fases esenciales del an´ alisis de datos ecol´ ogicos. Este cap´ ıtulo proporciona una introducci´ on al AED gr´ afico y a la producci´ on de gr´ aficos de calidad con R. Descripciones m´ as pormenorizadas del an´ alisis exploratorio de datos y de la representaci´ on gr´ afica pueden verse, por ejemplo, en Cleveland (1989), Chang (2013), Murrell (2012) o Wickham (2016). En este cap´ ıtulo se muestran algunas de estas t´ ecnicas para ejemplos de datos univariados, bivariados, continuos y discretos, todos ellos representativos de estudios ecol´ ogicos. En general, tanto para un AED como para la producci´ on de gr´ aficos de calidad, se recomienda seguir los siguientes principios generales (Ellison 1993): 1

d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Capıtulo 2

Analisis exploratorio yrepresentacion grafica dedatos

Despues de haber disenado un estudio o experimento y haber recolectado losdatos, una de las primeras acciones, antes de emprender contrastes de hipotesiso analisis concienzudos, es la representacion grafica de los datos. Larepresentacion grafica tiene dos aplicaciones principales en el contexto delanalisis de datos (Ellison 1993). Por un lado, los graficos son una herramientaque permite explorar la existencia de patrones en los mismos como paso previoa un analisis mas formal, lo que se conoce como analisis exploratorio de datos(AED, Tukey 1977). Por otro lado, y de acuerdo con el aforismo de que ”unaimagen vale mas que mil palabras”, una representacion grafica adecuada escapaz de comunicar gran cantidad de informacion de manera concisa yeficiente. Mientras que el AED grafico suele basarse en graficos simples ysencillos, que bastan para detectar patrones y, en algunos casos, sugeriranalisis estadısticos no anticipados, la produccion de graficos parapublicaciones y presentaciones cientıficas debe enfocarse a la obtencion derepresentaciones de gran calidad, que dejen una impresion duradera en loslectores o en la audiencia, o que maximicen la probabilidad de que nuestroartıculo sea enviado a revision por parte del editor de una revista.

Tanto el AED grafico como la produccion de graficos de calidad representanfases esenciales del analisis de datos ecologicos. Este capıtulo proporciona unaintroduccion al AED grafico y a la produccion de graficos de calidad con R.Descripciones mas pormenorizadas del analisis exploratorio de datos y de larepresentacion grafica pueden verse, por ejemplo, en Cleveland (1989), Chang(2013), Murrell (2012) o Wickham (2016). En este capıtulo se muestranalgunas de estas tecnicas para ejemplos de datos univariados, bivariados,continuos y discretos, todos ellos representativos de estudios ecologicos.

En general, tanto para un AED como para la produccion de graficos decalidad, se recomienda seguir los siguientes principios generales (Ellison 1993):

1

Page 2: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

1. Se debe resaltar los patrones de interes, sin comprometer la integridad delos datos.

2. La estructura de los datos deberıa mantenerse, de forma que los lectorespuedan reconstruir los datos a partir de la grafica.

3. Las figuras deberıan tener una alta proporcion informacion/tinta ycarecer de excesiva parafernalia, entre la que se incluirıan sombreados,rejillas, efectos especiales y ”tridimensionalidad” innecesaria.

4. Las figuras no deberıan distorsionar, exagerar o censurar los datos

A lo que podrıamos anadir la conveniencia de representar la maximainformacion posible sin comprometer la legibilidad e interpretacion de lamisma.

La eleccion del tipo de representacion grafica para ilustrar o explorar unconjunto de datos deberıa seguir las preguntas o hipotesis perseguidas en eldiseno experimental o muestral que ha conducido a obtenerlos. En todo caso,cuando trabajemos en R, siendo este un lenguaje orientado a objetos, el propiotipo de datos que queramos representar llevara asociado por defecto el metodode representacion mas adecuado (o al menos el mas frecuentemente empleado).

2.1. Una introduccion a los graficos con R

R ofrece una increıble variedad de graficos. Estos pueden ser usados paradiversos fines como el analisis exploratorio de nuestros datos o larepresentacion grafica de los resultados de un analisis. Cada funcion grafica enR tiene un enorme numero de opciones, permitiendo una gran flexibilidad enla produccion de graficos. Al contrario que lo que ocurre al usar funcionesestadısticas, el resultado de una funcion grafica no se asigna a un objeto(aunque las propiedades de algunos graficos sı pueden salvarse como objetos),sino que es enviado a un dispositivo grafico. El dispositivo grafico puede seruna ventana grafica o un archivo.

Existen dos tipos fundamentales de funciones graficas: las funciones graficasde alto nivel, que crean una nueva grafica y las funciones graficas de bajonivel, que agregan elementos a una grafica ya existente. Las graficas seproducen con base en parametros graficos que vienen definidos por defecto enR pero que pueden ser modificados con la funcion par().

2.1.1. La organizacion de los graficos en R

El sistema de graficos de R (Figura 2.1) esta constituido por: (1) paquetesgraficos; (2) sistemas graficos; (3) el motor de graficos, que incluye losdispositivos graficos; y (4) paquetes de dispositivos graficos (Figura 2.1). Elnucleo funcional de los graficos de R lo componen el motor de graficos y losdos sistemas graficos: los graficos tradicionales (graphics) y los graficos demalla o de rejilla (grid). El motor de graficos esta constituido por funciones del

2

Page 3: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

paquete grDevices que dan soporte para el manejo de colores, fuentes, etc., ydispositivos graficos que producen la salida de los graficos en diferentesformatos.

Paquetes gráficos

Sistemas gráficos

Motor de gráficos y

dispositivos

Paquetes de dispositivos

gráficos

graphics maps ... grid lattice ...

graphics grid

grDevices

gtkDevice ...

Figura 2.1: Esquema conceptual de como esta estructurado el sistema de graficosen R.

El sistema de graficos tradicionales lo componen diferentes funcionescontenidas en el paquete graphics. El sistema de graficos de rejilla lo componendiferentes funciones contenidas en el paquete grid. Aparte, hay otras muchasfunciones graficas contenidas en otros paquetes accesorios de R, pero todas seconstruyen sobre alguno de los dos sistemas graficos de R.

La existencia de dos tipos de sistemas graficos en R (tradicionales y de rejilla)puede plantear la pregunta de cuando se debe de utilizar uno y cuando otro.En principio, el tipo de sistema de graficos que utilicemos es bastanteirrelevante si no tenemos necesidad de anadir ningun elemento extra al grafico.Si se requiere anadir algun elemento extra utilizando funciones graficas de bajonivel, es necesario que estas esten en el mismo sistema grafico que la funcionde alto nivel con la que se genero el grafico.

Con bastante frecuencia, es posible producir el mismo tipo de grafico confunciones construidas bajo los dos tipos de sistemas graficos. Por ejemplo, pararepresentar un histograma podemos utilizar la funcion hist() del paquetegraphics y la funcion histogram() del paquete lattice (Sarkar 2008), que se basaen el sistema de graficos de rejilla.

> x <- rnorm(100)

> hist(x)

> library(lattice)

> histogram(x)

3

Page 4: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

2.1.2. Formato de graficos

El siguiente codigo muestra un ejemplo de como producir un grafico con Rutilizando los datos de un estudio de alometrıa del ciervo volante (Lucanuscervus Linnaeus). En este trabajo se tomaron medidas de anchura de cabeza(KB) y longitud de elitros (EL) en machos y hembras de ciervo volante de tresprocedencias.

> library(ADER)

> data(Lucanus)

> str(Lucanus, width=65, strict.width="cut")

'data.frame': 265 obs. of 4 variables:

$ KB : num 10.8 9.1 8 8.55 17.4 9.75 19.5 12.8 7.25 7.6..

$ EL : num 19.6 20 18.1 18.5 24.4 ...

$ SEXO : Factor w/ 2 levels "hembra","macho": 2 1 1 1 2 1 ..

$ PROVINCIA: Factor w/ 3 levels "Asturias","Cantabria",..: 1 1..

Como se ve, se trata de una tabla de datos en la que se registran las medidasde anchura de cabeza (KB) y longitud de elitros (EL) en machos y hembras(SEXO) de ciervo volante de tres procedencias (PROVINCIA).

La funcion plot() produce un grafico de dispersion de la anchura de cabezafrente a la longitud de elitros, incluyendo ejes, rotulos y un rectangulo quedelimita el grafico (Figura 2.2). Con los argumentos xlab e ylab definimos lasetiquetas de los ejes. La llamada a la funcion grafica de bajo nivel text() anadeun rotulo al grafico y lo posiciona dentro del texto.

4

Page 5: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dorAnalisis exploratorio y representacion grafica de datos

> plot(KB~EL, data=Lucanus, xlab="Longitud de elitros (mm)",

+ ylab="Anchura de cabeza (mm)")

> text(20, 22, "Relaciones alometricas en ciervo volante")

●●

●●

● ●●

●●

● ●●

●●●●

●●

● ●

● ●

● ●

●●

●●●

● ●

●●

●●

●●

●●

●●

● ●

●●

● ●

●●

● ●

●●

●●

● ●●

● ●●●●

●●

●●●

●●

●●

●●

●●

● ●●

16 18 20 22 24 26 28

1015

20

Longitud de élitros (mm)

Anc

hura

de

cabe

za (

mm

)

Relaciones alométricas en ciervo volante

Figura 2.2: Grafico de dispersion de la anchura de cabeza (mm) frente a lalongitud de elitros (mm) en Lucanus cervus.

El unico argumento estrictamente necesario en las funciones graficas de altonivel son los datos que se van a dibujar. Este argumento se puede describir devarias formas. Las mas comunes se describen a continuacion:

> plot(KB~EL, data=Lucanus)

> plot(Lucanus$KB~Lucanus$EL)

> plot(Lucanus$EL,Lucanus$KB)

> plot(Lucanus[, 1:2])

> with(Lucanus, plot(EL, KB))

> with(Lucanus, plot(KB~EL))

En el primer y segundo caso, las variables que se quieren dibujar se especificanmediante una formula, en donde y es funcion de x. El sımbolo ∼ significa “esfuncion de”, y se obtiene con las teclas AltGr + 4 + Espacio. El sımbolo $ seutiliza para especificar columnas de datos que estan dentro de una tabla dedatos (Seccion 1.3.2). En el tercer caso, se especifican las variables que sequieren dibujar en el eje x e y. En el cuarto caso, todos los datos a dibujar

5

Page 6: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

estan especificados como columnas de la tabla de datos. La primera columnade la tabla de datos se dibujara en el eje x y la segunda columna en el eje y.Esta es la forma menos recomendable, ya que siempre vamos a tener menoscontrol sobre lo que estamos dibujando. Los dos ultimos ejemplos soncombinaciones de los anteriores con la funcion with(). Como ya se vio en laSeccion 1.3.2, esta funcion permite evaluar una expresion de R (en el ejemplola representacion grafica) en un entorno construido a partir de los datossuministrados como argumento principal (la tabla de datos Lucanus en esteejemplo). En definitiva, permite acceder a las variables de una tabla de datos ode una lista sin tener que emplear el sımbolo $ o los corchetes.

R no hace distincion entre, por ejemplo, un grafico de dispersion que dibujasolo los sımbolos de los datos en cada coordenada (x, y) y un grafico dedispersion que dibuja una lınea que conecta todos los puntos en (x, y). Estosson variaciones de la misma funcion controladas por el argumento type (tipo degrafico). Ası, por ejemplo, el siguiente codigo produce cuatro tipos diferentesde graficos que varıan solamente en el argumento type (Figura 2.3).

> y <- rnorm(20)

> par(mfrow=c(2,2))

> plot(y, type="p")

> plot(y, type="l")

> plot(y, type="b")

> plot(y, type="h")

6

Page 7: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dor Analisis exploratorio y representacion grafica de datos

● ●

●●

●● ●

5 10 15 20

−2.

0−

1.0

0.0

1.0

Index

y

5 10 15 20

−2.

0−

1.0

0.0

1.0

Index

y

● ●

●●

●● ●

5 10 15 20

−2.

0−

1.0

0.0

1.0

Index

y

5 10 15 20

−2.

0−

1.0

0.0

1.0

Index

y

Figura 2.3: Diferentes tipos de diagramas de graficos de dispersion en R, obte-nidos con los mismos datos, variando el argumento type en la funcion plot().

Cuando se utiliza una funcion de alto nivel, el resultado por defecto es ungrafico en pantalla (dispositivo de ventana). Sin embargo, existe tambien laposibilidad de producir un archivo que contenga el grafico (dispositivo defichero), por ejemplo, un archivo jpeg. Se pueden producir graficos en unagran cantidad de formatos.

En la terminologıa de R, la salida grafica se dirige a un determinado tipo dedispositivo grafico y esto determina el formato de salida del archivo. Parapoder recibir salidas graficas se debe crear previamente un dispositivo defichero y, despues de realizado el grafico, debe tambien cerrarse para que elarchivo pueda visualizarse correctamente. Por ejemplo, para producir unarchivo jpeg, existe la funcion jpeg() que abre un archivo jpeg que recibe lasalida grafica que nosotros ordenemos. La funcion dev.off() cierra estedispositivo.

> jpeg(file="grafico1.jpeg")

> plot(KB~EL, data=Lucanus)

> dev.off()

Para producir la misma salida grafica en formato pdf, el codigo serıa:

> pdf(file="grafico1.pdf")

> plot(KB~EL, data=Lucanus)

> dev.off()

7

Page 8: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

La Tabla 2.1 proporciona una lista de las funciones que abren dispositivosgraficos y los formatos de salida grafica con los que se corresponden.

Tabla 2.1: Lista de funciones que generan dispositivos graficos de ventana y dearchivo en R.

Funcion Formato graficoDispositivos de ventanax11(), X11(), windows() , dev.new() VentanaDispositivos de archivopostscript() Archivo de Adobe postscriptpdf() Archivo de Adobe pdfpictex() Archivo LATEX pictexxfig() Archivo XFIGbitmap() Archivo de mapa de bitspng() Archivo de mapa de bits PNGjpeg() Archivo de mapa de bits JPEGwin.metafile() Archivo de Windows Metafilebmp() Archivo de Windows BMP

Todas estas funciones ofrecen una serie de argumentos que permiten al usuarioespecificar aspectos como el tamano fısico de la ventana o del documentocreado. La documentacion para cada una de ellas debe ser consultada para verla descripcion especıfica de cada uno de sus argumentos. Por ejemplo, siqueremos cambiar el color de fondo y el tamano del archivo pdf que vamos acrear, primero consultamos la documentacion de la funcion pdf( ).

> help(pdf)

Y luego especificamos los argumentos que nos interesan para cambiar estosparametros:

> jpeg(file="grafico1.jpg", bg="yellow", width=300, height=500)

> plot(KB~EL, data=Lucanus)

> dev.off()

Es posible tener mas de un dispositivo grafico abierto al mismo tiempo,aunque solo uno puede estar activo y recibira la salida grafica. Si hay variosdispositivos graficos abiertos al mismo tiempo, hay algunas funciones que nosvan a permitir controlar cual dispositivo esta activo, como por ejemplo lasfunciones dev.set(), dev.cur() o dev.list().

Algunos dispositivos de archivo permiten multiples paginas y otros no. Porejemplo, las funciones pdf() y postscript() permiten especificar multiplespaginas en el archivo de salida, pero jpeg() y png() no. A veces es posibleespecificar que cada pagina de la salida grafica produzca un archivo diferente,lo cual es especialmente util para dispositivos de archivo que no permitenmultiples paginas. Esto se consigue especificando un patron para el nombre del

8

Page 9: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dorAnalisis exploratorio y representacion grafica de datos

archivo, del tipo file=”grafico %03d” de manera que %03d es sustituido por unnumero de tres dıgitos indicando el numero de pagina para cada archivocreado. Como ejemplo, vamos a crear veinte graficos distintos que difieran enel tipo de sımbolo utilizado (argumento pch).

> jpeg(file="grafico%03d.jpeg")

> for(i in 1:20){

+ plot(KB~EL, data=Lucanus, pch=i, main=paste("pch =", i))

+ }

> dev.off()

En los archivos que sı permiten multiples paginas habra que especificarademas el argumento onefile=FALSE cuando se abre el dispositivo.

> pdf(file="grafico%03d.pdf", onefile=FALSE)

> for(i in 1:20){

+ plot(KB~EL, data=Lucanus, pch=i, main=paste("pch =", i))

+ }

> dev.off()

En caso de no especificar este argumento, todas las salidas graficas sealmacenaran en el mismo fichero. Los ficheros creados con funciones dedispositivo de fichero se almacenaran en el directorio de trabajo.

Por ultimo, es necesario saber que los graficos enviados a dispositivos deventana pueden ser posteriormente enviados a dispositivos de archivoutilizando la barra de menus de la interfaz de la ventana grafica de RGui(Archivo -> Guardar como), aunque no estan todos los formatos disponibles yno hay opcion de cambiar las especificaciones del archivo (tamano, tipo deletra, color de fondo, etc.). En cualquier caso, es conveniente que mejoremosy/o ajustemos la resolucion de las imagenes si se quiere utilizar la figuragenerada para alguna publicacion (Cuadro 2.1).

9

Page 10: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dor Analisis exploratorio y representacion grafica de datos

'

&

$

%

CUADRO 2.1. Tamano y resolucion de imagenes

Muchas publicaciones exigen que las imagenes definitivas se suministren como archivosgraficos con un formato (jpeg, tiff, png, bmp, pdf o eps), una resolucion y un tamanoespecıficos. Existen argumentos que permiten especificar tanto el tamano como laresolucion de las imagenes. La unica complicacion a la hora poder transformar loque vemos en la consola de R en un archivo grafico independiente que mantenga elmismo aspecto, es especificar un tamano de punto (pointsize) adecuado al tamano dela imagen. El tamano de punto es la unidad que emplea R para dibujar sımbolos ytexto en el grafico. Por defecto, las ventanas graficas en R se abren con un tamanode 7 x 7 pulgadas y un tamano de punto de 12 y eso influye en la forma en la que semuestran los graficos en pantalla. Por ejemplo, el grafico obtenido por defecto es muydistinto al que obtendrıamos en una ventana con diferentes dimensiones y tamano depunto.

> plot(KB~EL, Lucanus, pch=19)

> windows(height=6, width=6, pointsize=16)

> plot(KB~EL, Lucanus, pch=19)

La mayorıa de los usuarios trabajan y disenan sus graficos en la ventana por defectode R, por lo que al exportarlos a un fichero grafico hay que tener eso en cuenta. Porejemplo, si queremos convertir un grafico de pantalla en un archivo jpg de 15 x 15 pul-gadas, usaremos la funcion jpeg(), indicando entre sus argumentos la anchura y alturadeseada (argumentos width y height), la resolucion y calidad requeridas (mediante losargumentos res y quality, respectivamente), y el tamano de punto (con el argumentopointsize). Dado que la ventana por defecto tiene un tamano de punto de 12 para untamano de 7 x 7 pulgadas, el tamano de punto en el nuevo grafico deberıa ser 12 x15/7:

> jpeg(file="Lucanus_15in.jpeg", width=15, height=15, units="in",

+ res=300, quality=100, pointsize=12*15/7)

> plot(KB~EL, Lucanus, pch=19)

> dev.off()

Si queremos especificar el tamano en centımetros, deberıamos tener ademas en cuentala conversion de pulgadas a cm (2,54 cm/pulgada) y el grafico lo obtendrıamos ası:

> jpeg(file="Lucanus_15cm.jpeg", width=15, height=15, units="cm",

+ res=300, quality=100, pointsize=12*(15/2.54)/7)

> plot(KB~EL, Lucanus, pch=19)

> dev.off()

Muchas de las funciones graficas basicas son funciones genericas. Esto significaque el comportamiento de la funcion depende de la clase a la que pertenezca elprimer argumento de la funcion. Para una funcion generica, suele haber unaserie de metodos diferentes, en donde cada metodo es una funcion que secorresponde con la accion que se debe emprender para cada clase deargumento. Esto es especialmente relevante para la funcion plot(), en dondeobtendremos un tipo de grafico u otro, dependiendo del tipo de objeto queintroduzcamos como argumento principal. Ası, si la variable x es un factor, lafuncion plot() producira un grafico de cajas (equivalente a la funcionboxplot()). Si el primer argumento es, por el contrario, un objeto de clase lm(el ajuste de un modelo lineal), entonces la funcion plot() se puede usar paradibujar los graficos de los residuos de dicho modelo (equivalente a la funcion

10

Page 11: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

plot.lm(), Figura 2.4).

> lm1 <- lm(KB~EL, data=Lucanus)

> par(mfrow=c(2,2))

> plot(lm1)

5 10 15 20

−6

−2

24

6

Fitted values

Res

idua

ls

●●●

●●

●●

●●

●●●

●●●

● ●●●

●●

● ●●

● ●

●●

●●

●●●

●●

●●

●●

●●

●●

●●● ●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

● ●● ●

● ●

●●

●●●

●●

●●

● ●●●

●●

●●●

●●

●●

● ●●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●●

● ●● ●

●●

● ●

●●

●●

Residuals vs Fitted

5288

163

●●

●●

●●

●●●

●●●

●●

●●

●●

●●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●●●

●●

●●

●● ●

●●

●●

●●●●

●●

●●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●●

●●

●●●

●●

●●

●●

−3 −2 −1 0 1 2 3−

3−

11

23

Theoretical Quantiles

Sta

ndar

dize

d re

sidu

als

Normal Q−Q

5288

163

5 10 15 20

0.0

0.5

1.0

1.5

Fitted values

Sta

ndar

dize

d re

sidu

als

●●

●●

●●

●●●

●●●

●●

●●

● ●

●●

● ●

●●

●●

●●

●●

●●

●●

●●

● ●

●●

●●

●●

●●

● ●●

●●

●●● ●

●●

●●

●●

●●

●●

● ●

●●

● ●

●●

●●

●●

●●

●●●●

●●

● ●

●●

●●

●●

●●

●●

●●

Scale−Location5288163

0.00 0.01 0.02 0.03

−3

−1

12

3

Leverage

Sta

ndar

dize

d re

sidu

als

●●●

●●

●●

●●

●●●

●●●●

●●●●

●●

● ●●

● ●

●●

●●

●●●

●●●

●●

●●

●●

●●●●●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●● ●●

● ●

●●

●●●

●●

● ●

● ●●●

●●

●●●

●●

●●

● ●● ●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●●

● ●● ●●●

●●

●●

●●

Cook's distance

Residuals vs Leverage

146163

88

Figura 2.4: Graficos de residuos de un modelo lineal (ver Seccion 4.2.5).

2.1.3. Representacion de graficos multiples

Como se ha visto en el ejemplo anterior (Figura 2.4), se pueden representarvarios graficos en la misma ventana. Esto es posible configurando previamenteel numero de paneles en los que se quiere dividir la ventana usando la funcionpar(). En el ejemplo anterior, mediante el argumento mfrow se indica que laventana debe partirse en cuatro paneles (es decir, en dos filas y dos columnas).Una particion en 9 paneles se obtendrıa con el argumento par(mfrow=c(3,3)).Todos los paneles tendran la misma altura y anchura y se iran rellenando configuras a medida que se vayan ejecutando funciones graficas de alto nivel, deizquierda a derecha y de arriba a abajo.

La funcion layout() proporciona una manera mas flexible de dividir la ventana,pudiendo especificar diferentes tamanos para cada panel y un orden arbitrario

11

Page 12: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

para su uso. El argumento principal de layout() es mat, una matriz querepresenta la ventana grafica y cuyas celdas representan una teselacion de lamisma y llevan la numeracion del panel al que pertenece cada una. Se puedenespecificar ademas los argumentos widths y heights, que son vectores queindican, respectivamente y de manera correlativa, la anchura y la altura de lasteselas. Si no se especifican estos ultimos argumentos, layout() divide por igualla ventana grafica entre las teselas, de modo parecido a lo que harıa la funcionpar(). Sin embargo, modificando dichos argumentos podemos obtener cualquierconfiguracion. El esquema resultante lo podemos visualizar con layout.show().Por ejemplo, una ventana con tres paneles de tamano diferente se podrıaobtener ası (Figura 2.5a):

> m1 <- matrix(c(1,2,3,3), nrow=2, ncol=2)

> layout(m1, heights=c(1, 2), widths=c(1, 1))

> layout.show(3)

Es posible indicar zonas en las que no se va a representar ningun elementografico, colocando un cero en las celdas de la matriz que indican la zona sinrepresentacion. Por ejemplo (Figura 2.5b)

> m2 <- matrix(c(1,3,0,2), nrow=2, ncol=2)

> layout(m2, heights=c(1, 3), widths=c(3, 1))

> layout.show(3)

0

1

2

0 30

0 1

0 20 3

0

a)

0

0 b)

Figura 2.5: Particion de la ventana grafica con layout() en: a) tres zonas detamano diferente; y b) tres zonas de tamano diferente y una cuarta sin repre-sentacion.

Los numeros que muestra layout.show() en cada panel indican el orden en elque se anadiran los diferentes graficos. Por ejemplo, se podrıa representarconjuntamente un diagrama de dispersion con la anchura y longitud de lossepalos de tres especies de lirio (datos que se suministran con R en la tabla dedatos iris) y unos diagramas de cajas de ambas medidas (Figura 2.6), de lasiguiente forma:

12

Page 13: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dorAnalisis exploratorio y representacion grafica de datos

> data(iris)

> m2 <- matrix(c(1,3,0,2), nrow=2, ncol=2)

> layout(m2,heights=c(1, 3), widths=c(3, 1))

> par(mar=c(1,4.1,2.1,0))

> boxplot(Sepal.Width~Species, data=iris, horizontal=TRUE,

+ axes=F, xlab="", ylab="", col=1:3)

> par(mar=c(4.1,1,1,2.1))

> boxplot(Sepal.Length~Species, data=iris, horizontal=FALSE,

+ axes=F, xlab="",ylab="",col=1:3)

> par(mar=c(4.1,4.1,1,0))

> plot(Sepal.Length~Sepal.Width, data=iris, col=as.numeric(iris$Species),

+ pch=19, xlab="Anchura (mm)", ylab="Longitud (mm)")

●●

●●

●●

● ●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●● ●

●●●

●●

●●

●●

●●

●●

●●

●●

●●●

2.0 2.5 3.0 3.5 4.0

4.5

5.5

6.5

7.5

Anchura (mm)

Long

itud

(mm

)

Figura 2.6: Grafico combinado del tamano de los sepalos en tres especies delirios. Con la funcion layout() se ha dividido el dispositivo grafico de salida encuatro paneles de tamano diferente. En uno de ellos se representa el diagrama dedispersion de la anchura frente a la longitud de los sepalos, con diferente colorpara cada una de las tres especies. En los paneles superior y lateral se representande manera individual ambas variables con diagramas de cajas, separando losvalores de cada especie. El panel de la esquina superior derecha se ha dejadovacıo.

Primero hacemos la particion con layout() (es la misma que en la Figura 2.5b)y a continuacion representamos por este orden los diagramas de cajas de laanchura, de la longitud y el diagrama de dispersion modificando entre grafica y

13

Page 14: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

grafica los parametros relativos a los margenes (argumento mar de la funcionpar()), para tener una representacion mas compacta.

2.1.4. Funciones graficas de bajo nivel

R posee un conjunto de funciones graficas que permiten anadir nuevos puntos,lıneas, segmentos, polıgonos, texto o incluso la curva ajustada de algun modelosencillo a alguna grafica pre-existente (Tabla 2.2). A estas funciones se lasconoce como funciones graficas de bajo nivel.

14

Page 15: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

Tabla 2.2: Principales funciones graficas de bajo nivel en R construidas bajo elsistema de graficos tradicionales.

Funcion Utilidad

points(x, y) Agrega puntos (se puede usar el argumentotype para modificar la representacion de lospuntos).

lines(x, y) Agrega lıneas.text(x, y, labels, ...) Agrega el texto dado por el argumento labels

en las coordenadas (x, y).mtext(text, side=3, line=0, ...) Agrega el texto dado por el argumento text

en el margen especificado por el argumentoside; line especifica la lınea del grafico dondeva a aparecer el texto.

segments(x0, y0, x1, y1) Dibuja una lınea desde el punto (x0, y0)hasta el punto (x1, y1).

arrows(x0, y0, x1, y1, angle= 30,code=2)

Igual que el anterior pero con flechas; sicode=1, la flecha se dibuja en (x0, y0), sicode=2, la flecha se dibuja en (x1, y1); y sicode=3, la flecha se dibuja en ambosextremos; angle indica el angulo de la flecha.

abline(a, b) Dibuja una lınea con pendiente ‘b’ eintercepto ‘a’.

abline(lm.obj) Dibuja una lınea de regresion dada porlm.obj (el ajuste de una recta de regresion).

abline(h=y) Dibuja una lınea horizontal en la ordenada y.abline(v=x) Dibuja una lınea vertical en la abscisa x.rect(x1, y1, x2, y2) Dibuja un rectangulo donde las esquinas

izquierda, derecha, inferior y superior estandadas por x1, x2, y1e y2, respectivamente.

polygon(x, y) Dibuja un polıgono uniendo los puntos dadospor x e y.

legend(x, y, legend) Agrega la leyenda en el punto (x, y) con eltexto de la leyenda dado por el argumentolegend.

title() Agrega un tıtulo y, opcionalmente, unsubtıtulo.

locator(n, type=”n”) Devuelve las coordenadas (x, y) despues deque el usuario haya hecho click n veces en elgrafico con el raton.

identify(x,y, labels =seq along(x))

Tras hacer click con el raton sobre unsımbolo en un grafico, anade una etiquetacon el numero de orden de la coordenadacorrespondiente en el vector x (o el valor quetiene el mismo numero de orden en el vectorlabels).

En los graficos tradicionales, existen algunas posibilidades de interaccionar con

15

Page 16: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

las salidas graficas, por medio de funciones de bajo nivel. Una de ellas es lafuncion locator() (Tabla 2.2), que permite al usuario hacer un click dentro deun grafico y obtener las coordenadas del punto seleccionado con el raton. Lafuncion identify() puede ser utilizada para anadir etiquetas a los sımbolos deun grafico (Tabla 2.2).

> plot(Lucanus$EL, Lucanus$KB)

> locator()

> identify(Lucanus$EL, Lucanus$KB)

2.2. Ejemplos de analisis exploratorio

2.2.1. Datos continuos univariados: Distribuciones defrecuencias

En este primer ejemplo nos vamos a fijar en la anchura de la cabeza de losdatos de ciervo volante que hemos usado anteriormente. Con datos univariadoscomo estos, una de las principales cuestiones de interes es ¿como estandistribuidos los datos (por ejemplo, que tendencia central y dispersion tienen)?

Con frecuencia este tipo de preguntas se intentan responder mediante unhistograma. Un histograma representa, mediante barras de diferente tamano,la frecuencia de los valores comprendidos en cada una de las clases definidaspor unos ciertos lımites (los lımites inferior y superior de cada barra). A vecesse confunden los histogramas con los graficos de barras (Seccion 2.2.4) peroestos ultimos se suelen usar para representar algun resumen estadıstico (media,mediana o varianza) de diferentes poblaciones o tratamientos experimentales.La funcion hist() permite representar facilmente histogramas en R (Figura 2.7).

> hist(Lucanus$KB, xlab="Frecuencia",

+ ylab="Anchura de la cabeza (mm)", main="")

Frecuencia

Anc

hura

de

la c

abez

a (m

m)

10 15 20 25

020

60

Figura 2.7: Histograma de la anchura de la cabeza (mm) en Lucanus cervus. Elnumero y el rango de las clases de anchura es el que proporciona por defecto R.

Un histograma, sin embargo, no es la mejor manera de responder a las dospreguntas anteriores. En primer lugar, los datos brutos estan ocultos. En el

16

Page 17: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dorAnalisis exploratorio y representacion grafica de datos

ejemplo, las 265 observaciones se han repartido en 10 clases. Es imposiblesaber si los valores de la segunda clase estan uniformemente repartidos entrelos 6 y 12 mm que la delimitan o se encuentran mas concentrados hacia los 6 ohacia los 12 mm. En segundo lugar, la division en 10 clases es relativamentearbitraria ya que en R, por defecto, el numero de clase se calcula siguiendo laregla de Sturges (explicada, por ejemplo, en Legendre y Legendre 2012: 796).Podrıamos haberlo representado, por ejemplo, con 5 (Figura 2.8a) o 20 clases(Figura 2.8b), lo que cambiarıa la forma de la distribucion. Para ellotendrıamos que haber definido una secuencia arbitraria de puntos de corte enla distribucion de valores y haberla incluido, mediante el argumento breaks, enhist().

> ylab <-"Anchura de la cabeza (mm)"

> xlab <-"Frecuencia"

> corte5 <- seq(min(Lucanus$KB), max(Lucanus$KB), le=5+1)

> hist(Lucanus$KB, breaks=corte5, xlab=xlab, ylab=ylab, main="")

> corte20 <- seq(min(Lucanus$KB), max(Lucanus$KB), le=20+1)

> hist(Lucanus$KB, breaks=corte20, xlab=xlab, ylab=ylab, main="")

Frecuencia

Anc

hura

de

la c

abez

a (m

m)

10 15 20

040

8012

0

a)

Frecuencia

Anc

hura

de

la c

abez

a (m

m)

10 15 20

010

2030

40

b)

Figura 2.8: Histogramas de la anchura de la cabeza (mm) en Lucanus cervuscon los datos repartidos en: a) 5 y; b) 20 clases, respectivamente.

Finalmente, es practicamente imposible hacerse una idea de los parametrosbasicos de la distribucion (media, mediana o varianza) a partir de larepresentacion grafica con un histograma, por lo que no es el mejor graficopara un analisis exploratorio. Existen varias alternativas mas informativas queel histograma, como el diagrama de puntos (dotplot en ingles), que representalos datos ıntegros sin agrupamientos arbitrarios. Este tipo de representacionpermite una rapida vision de los patrones de densidad y son faciles deinterpretar (Figura 2.9). En el paquete graphics, la funcion que lo dibuja esstripchart().

> par(mar=c(4,2,1,0.5))

> stripchart(Lucanus$KB, method='stack', pch=19, cex=.8,

+ xlab="Anchura de la cabeza (mm)")

17

Page 18: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

10 15 20

Anchura de la cabeza (mm)

●●●●●●●●●●●

●●●●●●●●

●●●●●●●

●●●●

●●●●●

●●●●●●

●●●●●

●●●●●●●●●●●

●●●

●●●●●

●●●●●●

●●●●●●

●●●●●●●

●●●●●●●●●

●●●●●●●●

●●●●●●●●

●●●

●●●●●●●

●●●●

●●●

●●

●●

●●●

●●●●

●●●●●●●●●●●

●●●●●

●●●●●●●●

●●●

●●●●●●●●●

●●●●

●●●●●●

●●●●●●●●●●●

●●●

●●●

●●●●●

●●●●

●●●●●

●●●●●●●●

●●

●●●●●●●●●●●

●●●

●●●●●●●●●●●

●●●

●● ●●● ●●

● ●●●● ●

Figura 2.9: Diagrama de puntos (dotplot) de la anchura de la cabeza (mm) enLucanus cervus.

Otra representacion que proporciona gran concentracion de informacion es eldiagrama de cajas (obtenido con boxplot()), ya que representa en el mismografico algunos estadısticos importantes como la mediana, el segundo y tercercuartil (es decir, el 25 % y 75 % de los valores de la distribucion) y losextremos de la misma. Permite visualizar rapidamente si la distribucion essimetrica, si esta sesgada hacia alguno de los extremos o si se presentan datosatıpicos. A boxplot() se le puede suministrar una formula, pidiendole querepresente la distribucion de una variable (p.ej. la longitud de los sepalos)entre los diferentes grupos que representan los niveles de uno o varios factores(p.ej. tres especies de lirio) (Figura 2.10).

> par(mar = c(4, 5, 0.1, 0.3), las = 1)

> boxplot(Sepal.Length ~ Species, data = iris, horizontal = TRUE,

+ xlab = "Longitud de sepalos (mm)")

setosa

versicolor

virginica

4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0

Longitud de sépalos (mm)

Figura 2.10: Diagramas de cajas de la longitud de sepalos (mm) en tres especiesde lirios (Iris virginica, Iris versicolor, Iris setosa).

Igualmente, podrıamos usar como argumento principal una tabla de datos conlas diferentes variables cuya distribucion queremos comparar. Por ejemplo, enel caso de querer comparar la distribucion de tamanos de elitros y de anchurade la cabeza en Lucanus (Figura 2.11), escribirıamos esta otra sintaxis:

18

Page 19: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

> par(mar=c(4,4,1,1))

> boxplot(Lucanus[,c("KB","EL")], las=1, horizontal=TRUE,

+ names=c("Elitros", "Cabeza"), xlab="Tama~no (mm)")

Élitros

Cabeza

10 15 20 25

Tamaño (mm)

Figura 2.11: Diagramas de cajas para el tamano de los elitros y la anchura dela cabeza en Lucanus cervus.

A pesar de las ventajas del los diagramas de cajas, estos no permitenconfirmar si la distribucion de los datos es bimodal (lo que sı permitenhistogramas, diagramas de puntos), por lo que en un analisis exploratoriohabra que combinar varios de estos graficos, por ejemplo dibujando primero eldiagrama de cajas y superponiendole un diagrama de puntos (Figura 2.12).

> par(mar=c(4,4,1,1))

> library(scales)

> nombres <- c("Elitros", "Cabeza")

> boxplot(Lucanus[,c("KB","EL")], las=1, horizontal=TRUE,

+ names=nombres, xlab="Tama~no (mm)")

> stripchart(Lucanus[,c("KB","EL")], method='stack', pch=19,

+ cex=0.6, col=alpha("grey", .4), add=T)

Élitros

Cabeza

10 15 20 25

Tamaño (mm)

Figura 2.12: Combinacion de diagramas de cajas y de puntos para el tamanode los elitros y la anchura de la cabeza en Lucanus cervus. La funcion alpha()del paquete scales permite modificar el grado de transparencia del color deldiagrama de puntos que se superpone sobre el diagrama de cajas.

19

Page 20: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

2.2.2. Datos continuos bivariados: Examinandorelaciones entre variables

Con frecuencia los estudios y experimentos ecologicos tiene como fin contrastarlas relaciones existentes entre dos o mas variables. En la fase de analisisexploratorio grafico se intenta conocer cual es el patron general de la relacion ysi existen datos que se desvıen de ese patron general y que pudiesen afectar alos resultados de los consiguientes analisis estadısticos. En estas situaciones,los diagramas de dispersion y el ajuste de lıneas de regresion local (”suavizado”o smoothers en ingles), permiten explorar dicha relacion. Los datos bivariadospueden clasificarse en dos tipos: aquellos en los que a priori existe elconocimiento de que una de las variables debe considerarse independiente de laotra (y que serıan analizados con tecnicas de regresion), y aquellos en dondedicho conocimiento es inexistente y por lo tanto conducen a analizarcoeficientes de correlacion y otro tipo de analisis posteriores. En cualquiera delos casos, los diagramas de dispersion son la manera mas eficaz de representarlas relaciones entre dos variables.

Pero el diagrama de dispersion no siempre revela la existencia de una relacionentre dos variables continuas (Figura 2.13a), y en este caso puede ser de granutilidad el suavizado de datos. El suavizado consiste generalmente en laconstruccion de una regresion polinomica local (lowess, de robust local weightedregression) usando subconjuntos de datos ”locales” o vecinos de cada punto alo largo del eje y (ver Capıtulo 8). El proceso se repite para todos los puntosdel eje y, de tal manera que los valores ajustados forman la curva suavizadaque mejor describe la tendencia de los datos. Otras opciones son realizar elsuavizado mediante splines (Fox y Weisberg 2010; Capıtulo 8). En el ejemploque se presenta en la figura 2.13, se representa la relacion entre la riqueza dearboles en parcelas de 0,1 hectareas en bosques tropicales secos del sur deMexico (la Depresion Central de Chiapas) y la productividad media, estimadaesta ultima a partir del ındice normalizado de vegetacion NDVI (NormalizedDifference Vegetation Index ), obtenido a partir de la informacion contenida enimagenes satelitales MODIS (a una resolucion de 250 x 250 m) para el periodo2001-2007 (con una periodicidad de 16 dıas). El valor del NDVI oscila entre 0y 1, con valores mas altos indicando mayor productividad. Cuando sesuministran datos bivariados continuos a la funcion plot() del paquete graphicsde R, esta automaticamente genera un diagrama de dispersion. En este caso, eldiagrama de dispersion (Figura 2.13a) no ofrece muchas pistas sobre laexistencia de una relacion clara entre la riqueza de especies y la productividadmedia. La adicion del ajuste mediante splines (Figura 2.13b) revela unavariacion aparentemente en forma de U, con mayor riqueza de especies envalores bajos y altos de productividad, lo que sugiere la necesidad deconsiderar un efecto cuadratico de la productividad en los analisis estadısticosque pudieramos realizar.

> library(ADER)

> data(dry)

> par(mfrow=c(1,2))

> xlab <-"Productividad media (NDVI)"

> ylab <- "Riqueza de arboles"

20

Page 21: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dorAnalisis exploratorio y representacion grafica de datos

> with(dry, plot(mean2001_2007, richness, xlab=xlab, ylab=ylab,

+ pch=16, col="grey"))

> with(dry, plot(mean2001_2007, richness, xlab=xlab, ylab=ylab,

+ pch=16, col="grey"))

> lines(smooth.spline(dry$richness~dry$mean2001_2007, df=3), lwd=2)

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●●●●

●●

●●

●●

0.50 0.60 0.70 0.80

510

1520

25

Productividad media (NDVI)

Riq

ueza

de

árbo

les

a)

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●●●●

●●

●●

●●

0.50 0.60 0.70 0.805

1015

2025

Productividad media (NDVI)

Riq

ueza

de

árbo

les

b)

Figura 2.13: a) Diagrama de dispersion entre la riqueza de arboles y la produc-tividad; y b) mismo diagrama de dispersion donde se ha superpuesto una curvade suavizado.

2.2.3. Extension de tecnicas bivariadas a datosmultivariados

Cuando se dispone de numerosas variables continuas en un conjunto de datos,una forma rapida de examinar las relaciones entre pares de ellas es la matrizde diagramas de dispersion. Por ejemplo, en la tabla plantulas0 se recogendatos de un seguimiento de plantulas de Helianthemum squamatum (L.) Dum.Cours. Las variables registradas son fecha de emergencia (Censo), estado trasla sequıa estival (MSET), numero de hojas en el censo de junio (Hjun), tamano(cm) en el censo de junio (”Tjun”) y numero de plantulas vecinas en un radiode 5 y 10 centımetros (”NN05” y ”NN10”, respectivamente).

> library(ADER)

> data(plantulas0)

> str(plantulas0)

'data.frame': 691 obs. of 6 variables:

$ Censo: Factor w/ 4 levels "abril","junio",..: 3 3 3 3 3 3 3 ..

$ MSET : Factor w/ 3 levels "herbivorıa","sequıa",..: 2 2 2 2 ..

$ Hjun : int 8 6 18 8 18 4 4 20 10 10 ...

$ Tjun : num 0 0.9 1.5 3 2 4 1 0.5 2 1.8 ...

$ NN05 : int 2 2 0 0 1 1 1 2 2 0 ...

$ NN10 : int 9 3 2 2 2 1 1 8 6 2 ...

Para explorar rapidamente las relaciones entre las variables cuantitativas de latabla podemos emplear la funcion pairs(). Por ejemplo, si quisieramos ver las

21

Page 22: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

correlaciones entre las mediciones registradas para las plantulas del censo demarzo (Figura 2.14), escribirıamos el siguiente codigo:

> pairs(plantulas0[plantulas0$Censo=="marzo", 3:6])

Hjun

0 1 2 3 4 5

●●

●●

●●

● ●

●●

● ●

●●●

●●

●●●● ●●

●●

●●

●●

●●

●●●

●●

●●

●●●

●●

●●

● ●

●●

●●

●●

●●

●●

●●● ●

●●●●

●●

●●●

● ●

●● ●●

●●

● ●

● ●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●●

●●

● ●●●●

● ●●

● ● ●●

●●●

● ●

●●

●●

● ●● ●

●●●●

●●

●●

●●●

●●

●●

● ●

●●

●●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

● ●●●

●●●

● ●

●●●●

●●●

● ●●

●● ●

● ● ●

●●

●●

●●

● ●● ●

●●●

● ●

●●

●●

●●

●●

●●

●●

● ●

●● ●

●●

●●●

●●●

●●

●●

●●

●●

●● ●

●●

●●

●●●

●●

●●

● ●

● ●

●●

●●

●●

●●

●●●●●

● ●●●

●●

●●

●●

●●

●●●●

●●

●●

●●

●●

●●

● ●

●●●

●●

●●

●● ●

●●

●●

● ●

●●

●●

●●

●●

●●●●●

●●●

●●●●

●●●

●●

●●

●●

●●●●

●● ●●

●●

●●

●●●

● ●

●●

●●

●●

●●●

●●●

●●

●●

●●

●●

●●●

●●

●●●

●●

●● ●●

●●●●

●●

●●●

●●●

●● ●

●●●

●● ●

●●

●●

●●

●●● ●

●●●

●●

●●

0 5 10 15

510

1520

●●

●●

●●

●●

●●

●●

●● ●

●●

●●●

●●●

●●

●●

●●

●●

●●●

●●

●●

●●●

●●

●●

● ●

● ●

●●

●●

● ●

●●

●●●●●

● ●●●

●●

●●

●●

●●

●●●●

●●

●●

●●

●●

●●

● ●

●●

●●

●●

●● ●

●●

●●

● ●

●●

●●

●●

●●

●● ●●●

●●●

●●●●

●●●

●●

● ●

●●

●●●●

●● ●●

●●

●●

● ●●

● ●

●●

● ●

●●

●●●

●●●

●●

●●

●●

●●

●●

●●

●●●

●●

●● ●●

●●●

●●

●●●

●●●

●● ●

●●●

●●●

●●

●●

●●

●●● ●

●●●

●●

●●

01

23

45

●●

●●

●●

●●

● ●●●

●●

●●

●● ●

●●

●●

● ● ●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●● ●

●●●●

● ●●

● ●

●●●● ●

● ●

●●

●●

● ●●●

● ●●

● ●●

●●

●●

●●

●●

● ●

● ●

●●

●●

● ●

● ●

●●●

●●

●●

●● ●

●● ●

● ●

●●

●●

●●

● ● ●

●●

● ●●●

●●

●●

●●

● ●

●●

●● ●

● ●

●●

●●

● ●● ●

●●

● ●

● ●

●●

●●

●●

●●●

● ●

●●

●●

●●●

●●

●●

●●●●

●●●

●●

●●●

●●

●●

●●●●

●●●●

●●

●●

●●

●● ●

●●●

●●

●●●

●●

●●

●●

●●

●●

● ●● ●

Tjun

●●

●●

●●

● ●

●●● ●

● ●

● ●

●●●

●●

●●

●● ●

● ●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●● ●

●● ●●

● ●●

●●

● ●●● ●

●●

●●

●●

● ●●●

●●●

●●●

●●

●●

●●

●●

● ●

●●

●●

●●

●●

●●

●●●

●●

●●

●●●

●● ●

● ●

●●

●●

●●

●●●

●●

●● ●●

●●

● ●

●●

● ●

●●

●●●

●●

●●

●●

●●● ●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●

● ●●

●●

●●

●●● ●

●●●●

●●

●●●

●●

●●●●●

●●●●

●●

●●

●●

●● ●

●●●

●●●

●●

●●●

●●

●●

●●●●

●● ●●

●●

●●

●●

● ●

●●● ●

● ●

●●

●●●

●●

●●

●●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●● ●

● ● ●●

●●●

●●

● ●●● ●

●●

●●

●●

● ●●●

●●●

●●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

● ●●

●● ●

●●

●●

●●

●●

●●●

●●

●● ●●

●●

● ●

●●

● ●

●●

●●●

●●

●●

●●

●●● ●

●●

● ●

●●

●●

●●

●●

●●●

●●

●●

●●

●●●

●●

●●

●●

● ●

●●●

●●

●●

●●●

●●●●●

●●

●●

●●

●●

●●

●●

●●●

●●●

●●

●●

●●●

●●

●●

●●● ●

● ●● ●

●●

●●

●●●

●●

● ●●● ●●

●●● ●

●●

●● ●● ●

●●

● ●

●●●

●●●

●● ●

● ●

● ●

●●● ●

● ●

●●

● ●

●● ● ●

● ●

● ●

●● ●

●●

●●

● ●●

●●

●●

●●●● ●●

●●

● ● ●

●●

●● ●

● ●●

●●● ●●●●●

● ●●

●● ●●

●●

●●

●●

● ●●

●●

● ●

●●

● ●

●●

● ●

●●

●●

●●

● ● ●

●●●● ●

● ●●●

● ●● ●●

● ●

●●

● ●●

●●●●●

● ●●

●●

●● ● ●

● ●● ●●●●

●●

●●● ●

● ●

●●

● ●●● ●

●●●●

●●

●●

●●

● ●●

●●

● ●

● ●●

● ●

●●●

●●● ●

●●

●●● ● ●● ●●

●●

●●

●●

● ●●● ●

● ●●

●●

●●

●●●

●●

●●

●●

● ●

●●●

● ●●

●●

●● ●●

●●● ●● ●●

●●●

●●

●● ●

●●

●● ●●● ●●●

●●

●●

●● ● ●● ●●●● ●●● ●

●●● ●

● ●

● ●

● ●●

● ●

● ●●● ● ●

●●●●

● ●

●● ● ●●

●●

●●

● ●●

● ●●

●● ●

●●

●●

● ●● ●

●●

●●

●●

● ●● ●

● ●

●●

● ●●

●●

●●

●● ●

● ●

● ●

● ● ●●● ●

●●

●●●

●●

● ●●

● ●●

● ●●●● ●● ●

●● ●

● ●● ●

● ●

●●

● ●

●● ●

● ●

●●

● ●

●●

● ●

●●

● ●

● ●

●●

●● ●

● ●●● ●

●●●●

● ●●● ●

●●

●●

●● ●

● ●●●●

●●●

● ●

●●●●

●● ● ● ● ●●

● ●

● ●●●

●●

●●

● ●●● ●

● ● ●●

● ●

●●

● ●

●● ●

●●

●●

●● ●

●●

● ●●

● ●●●

●●

● ●●●● ●● ●

●●

●●

● ●

● ● ●● ●

●● ●

●●

●●

●●●

●●

●●

● ●

● ●

●●●

● ●●

●●

●●● ●

● ●●● ●● ●

●● ●

● ●

●● ●

● ●

●●● ●●● ●●

●●

●●

●● ●●●● ●●●●●●●

● ●●●

NN05

02

46

8

●●

●●

●●●

●●

●●●●●●

●●●●

●●

●●●● ●

●●

● ●

●●●

●●●

● ● ●

●●

● ●

●●● ●

●●

●●

●●

●●●●

●●

●●

●●●

●●

● ●

●● ●

● ●

●●

●●●●●●

●●

●●●

●●

●●●

●●●

●●●●●●● ●

● ●●

●●●●

●●

●●

●●

●● ●

●●

●●

●●

●●

● ●

●●

●●

●●

●●

●●●

●●●●●

●●●●

●●●● ●

●●

●●

●●●

●● ●●●

●●●

●●

● ●●●

●● ●●●●●

●●

●● ●●

●●

● ●

●●●● ●

●●●●

● ●

●●

●●

●●●

●●

●●

●●●

●●

●● ●

● ●● ●

●●

●●●●●●●●

●●

●●

●●

●●●●●

●●●

●●

●●

●●●

● ●

●●

●●

●●

●● ●

●●●

●●

●●●●

●●●● ●●●

●●●

●●

●●●

●●

●●●●●●●●

●●

●●

●●●● ●●●●●● ●● ●

●●●●

5 10 15 20

05

1015

●●● ●

●●

●●● ●●

● ●

●● ●

●●●

●●●

●●

●●

●●

●●

●●●●

●●

●●

● ●

●●

● ●●

●●●

● ●●●

●●

●●●

● ●

●●

●●

●● ● ●

●●

● ●●

●●●

●●

●●●

● ●

●●

●●●

●●●

● ●●

●●

●●

●●

●●

●●

●●

●●

●●●●●●●

●●

●● ●●

● ●●

●●●

●●

●●

●●

●●●●

●●

●●

● ●

●●

●●●●

●● ●

●●●

● ●

●●

● ●● ●

●●

●●

●●

●●

● ●● ●

●●●

●●●

●●

●● ●

●●

● ●

●●●●

●●●

●●

● ●

●●●

●●●

●●

●●●●●

●●

●●

●●

●●

●●

●● ●

●● ●●

● ●

●●

●●

●●● ●

●●● ●

●● ●●

●●●●●

●●● ●

●●

●●

●●

● ●●

●●

●●●

● ●●

● ●●

●●●●

●● ●

●●

●●

●●●●

●●●

●●

●●●

●●

●● ●●

●● ●●

●●●●

●●●●●

●●

●●●●

● ●

●●

●●●

●● ●●

●●

●●● ●●

● ●

●●●

● ●●

●● ●

●●

●●

●●

●●

● ●●●

●●

●●

●●

●●

●●●

● ●●

●●●

●●

●●●

●●

●●

●●

● ●● ●

●●

● ●●

● ●●

●●

●●●

●●

●●●

●● ●

● ●●

●● ●

●●

● ●

●●●

●●

●●

●●●

●●

● ●●●

● ●●

●●

● ●●●

● ●●

●● ●

●●

●●

●●

● ●●●●

●●

●●

● ●

● ●●●

●● ●

● ●●

● ●

●●●

● ●●●

●●

●●

●●

● ●

●●●●

●●

●●●

● ●

●●●

●●

●●

● ●●●

●● ●

●●

●●

●●●

●●

●●

●●

●●●

● ●

●●

● ●

●●●

●●●

●●

●●●

● ●● ●

● ●

●●

●●

●● ●●

●●

● ●●

●● ●

● ●●●●

●●● ●

●●

●●

●●

● ●●●

●●

●●

● ●●

●●●

●●● ●

● ●●

●●●

● ● ●●

●●●

●●

●●

●●

● ●●●●

●●● ●

●●

●●

● ●●●●

●●

●● ●●

●●

●●

●●●

0 2 4 6 8

●●● ●

●●

●●●●●

●●

●●●

●●●

●●●

●●

●●

●●

●●

●●●●

●●

●●

●●

●●

● ●●

●●●

●●●

●●

●●●

● ●

●●

●●

●●●●

●●

●●●

●●●

●●

●●●

●●

●●

●●●

●●●●●●

●●

● ●

●●●

●●

●●

●●●

●●

●●●●●●●

●●

●●●●

● ●●

●●●

●●●

●●

●●

●● ●●

●●

●●

●●

●●

●●●●

●●●

●●●●●

●●●

●●●●

●●

●●

●●

● ●

●●● ●

●●●

●●●

●●

●●●

●●

●●

●●●●

●●●

●●

●●

●●●●

●●●●

●●

●● ●

●●

●●

●●

●●

●●

●●

●●●●●●●

●●

●●

●●

●●●●

●●●●

●●●●

●●● ●●●

●●● ●

●●

●●

●●

●●●●

●●

●●

●●●

● ●●

●●●●

● ● ●

●●●●

●● ●●

●●●

●●

●●●

●●

●● ●●

●●●●●●●●

●●●●●

●●●

●●●●●●

●●

●●●

NN10

Figura 2.14: Matriz de diagramas de dispersion para las variables cuantitativasasociadas a los datos de seguimiento de plantulas de Helianthemum squamatum.Hjun = numero de hojas en el censo de junio; Tjun = tamano en el censo dejunio (cm); NN05 = numero de plantulas vecinas en un radio de 5 centımetros;NN10 = numero de plantulas vecinas en un radio de 10 centımetros.

Esta funcion produce, por defecto, una matriz simetrica en la que serepresentan todas las posibles combinaciones de pares de variables (Figura2.14). Los diagramas sobre la diagonal son la transposicion de los diagramasque aparecen por debajo de la diagonal, lo que en cierta forma evitapresuponer que variables son dependientes o independientes. En el caso de quesimplemente se explore la asociacion (correlacion) entre las variables, lospaneles de la semimatriz superior o inferior podrıan sustituirse por algun otrotipo de informacion, por ejemplo por el valor del ındice de correlacion. Estorequiere un pequeno esfuerzo de programacion pero es una aproximacionbastante flexible. Primero definimos una funcion (panel.cor()) para calcular yescribir en los paneles el coeficiente de correlacion.

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

+ usr <- par("usr")

22

Page 23: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

+ on.exit(par(usr))

+ par(usr=c(0, 1, 0, 1))

+ r <- abs(cor(x, y))

+ txt <- format(c(r, .123456789), digits=digits)[1]

+ txt <- paste0(prefix, txt)

+ if(missing(cex.cor))

+ cex.cor <- .8/strwidth(txt)

+ text(.5, .5, txt, cex=cex.cor*r)

+ }

A continuacion llamamos a la funcion pairs() indicandole en que semimatrizqueremos presentar los resultados de dicha funcion:

> pairs(plantulas0[plantulas0$Censo=="marzo", 3:6],

+ upper.panel=panel.cor)

De la misma manera serıa posible anadir un histograma o un diagrama decajas en la diagonal, mostrando la distribucion univariada de cada variable, asıcomo incluir un suavizado sobre los diagramas de dispersion individuales(Figura 2.15). Para ello, definimos la funcion panel.hist() (la funcionpanel.smooth() ya viene definida en el paquete graphics) y, a continuacion,empleamos ambas funciones como argumentos dentro de la funcion pairs().

> panel.hist <- function(x, ...) {

+ usr <- par("usr")

+ on.exit(par(usr))

+ par(usr = c(usr[1:2],0,1.5))

+ h <- hist(x, plot=FALSE)

+ breaks <- h$breaks

+ nB <- length(breaks)

+ y <- h$counts

+ y <- y/max(y)

+ rect(breaks[-nB], 0, breaks[-1], y, col="grey", ...)

+ }

> pairs(plantulas0[plantulas0$Censo=="marzo", 3:6],

+ upper.panel=panel.cor,

+ diag.panel=panel.hist,

+ lower.panel=panel.smooth)

>

23

Page 24: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

Hjun

0 1 2 3 4 5

0.16 0.22

0 5 10 15

510

1520

0.240

12

34

5

●●

●●

●●

●●

● ●●●

●●

●●

●● ●

●●

●●

● ● ●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●● ●

●●●●

● ●●

● ●

●●●● ●

● ●

●●

●●

● ●●●

● ●●

● ●●

●●

●●

●●

●●

● ●

● ●

●●

●●

● ●

● ●

●●●

●●

●●

●● ●

●● ●

● ●

●●

●●

●●

● ● ●

●●

● ●●●

●●

●●

●●

● ●

●●

●● ●

● ●

●●

●●

● ●● ●

●●

● ●

● ●

●●

●●

●●

●●●

● ●

●●

●●

●●●

●●

●●

●●●●

●●●

●●

●●●

●●

●●

●●●●

●●●●

●●

●●

●●

●● ●

●●●

●●

●●●

●●

●●

●●

●●

●●

● ●● ●

Tjun

0.082 0.084

●●

●●

●●●

●●

● ●●● ●●

●●● ●

●●

●● ●● ●

●●

● ●

●●●

●●●

●● ●

● ●

● ●

●●● ●

● ●

●●

● ●

●● ● ●

● ●

● ●

●● ●

●●

●●

● ●●

●●

●●

●●●● ●●

●●

● ● ●

●●

●● ●

● ●●

●●● ●●●●●

● ●●

●● ●●

●●

●●

●●

● ●●

●●

● ●

●●

● ●

●●

● ●

●●

●●

●●

● ● ●

●●●● ●

● ●●●

● ●● ●●

● ●

●●

● ●●

●●●●●

● ●●

●●

●● ● ●

● ●● ●●●●

●●

●●● ●

● ●

●●

● ●●● ●

●●●●

●●

●●

●●

● ●●

●●

● ●

● ●●

● ●

●●●

●●● ●

●●

●●● ● ●● ●●

●●

●●

●●

● ●●● ●

● ●●

●●

●●

●●●

●●

●●

●●

● ●

●●●

● ●●

●●

●● ●●

●●● ●● ●●

●●●

●●

●● ●

●●

●● ●●● ●●●

●●

●●

●● ● ●● ●●●● ●●● ●

●●● ●

● ●

● ●

● ●●

● ●

● ●●● ● ●

●●●●

● ●

●● ● ●●

●●

●●

● ●●

● ●●

●● ●

●●

●●

● ●● ●

●●

●●

●●

● ●● ●

● ●

●●

● ●●

●●

●●

●● ●

● ●

● ●

● ● ●●● ●

●●

●●●

●●

● ●●

● ●●

● ●●●● ●● ●

●● ●

● ●● ●

● ●

●●

● ●

●● ●

● ●

●●

● ●

●●

● ●

●●

● ●

● ●

●●

●● ●

● ●●● ●

●●●●

● ●●● ●

●●

●●

●● ●

● ●●●●

●●●

● ●

●●●●

●● ● ● ● ●●

● ●

● ●●●

●●

●●

● ●●● ●

● ● ●●

● ●

●●

● ●

●● ●

●●

●●

●● ●

●●

● ●●

● ●●●

●●

● ●●●● ●● ●

●●

●●

● ●

● ● ●● ●

●● ●

●●

●●

●●●

●●

●●

● ●

● ●

●●●

● ●●

●●

●●● ●

● ●●● ●● ●

●● ●

● ●

●● ●

● ●

●●● ●●● ●●

●●

●●

●● ●●●● ●●●●●●●

● ●●●

NN05

02

46

8

0.77

5 10 15 20

05

1015

●●● ●

●●

●●● ●●

● ●

●● ●

●●●

●●●

●●

●●

●●

●●

●●●●

●●

●●

● ●

●●

● ●●

●●●

● ●●●

●●

●●●

● ●

●●

●●

●● ● ●

●●

● ●●

●●●

●●

●●●

● ●

●●

●●●

●●●

● ●●

●●

●●

●●

●●

●●

●●

●●

●●●●●●●

●●

●● ●●

● ●●

●●●

●●

●●

●●

●●●●

●●

●●

● ●

●●

●●●●

●● ●

●●●

● ●

●●

● ●● ●

●●

●●

●●

●●

● ●● ●

●●●

●●●

●●

●● ●

●●

● ●

●●●●

●●●

●●

● ●

●●●

●●●

●●

●●●●●

●●

●●

●●

●●

●●

●● ●

●● ●●

● ●

●●

●●

●●● ●

●●● ●

●● ●●

●●●●●

●●● ●

●●

●●

●●

● ●●

●●

●●●

● ●●

● ●●

●●●●

●● ●

●●

●●

●●●●

●●●

●●

●●●

●●

●● ●●

●● ●●

●●●●

●●●●●

●●

●●●●

● ●

●●

●●●

●● ●●

●●

●●● ●●

● ●

●●●

● ●●

●● ●

●●

●●

●●

●●

● ●●●

●●

●●

●●

●●

●●●

● ●●

●●●

●●

●●●

●●

●●

●●

● ●● ●

●●

● ●●

● ●●

●●

●●●

●●

●●●

●● ●

● ●●

●● ●

●●

● ●

●●●

●●

●●

●●●

●●

● ●●●

● ●●

●●

● ●●●

● ●●

●● ●

●●

●●

●●

● ●●●●

●●

●●

● ●

● ●●●

●● ●

● ●●

● ●

●●●

● ●●●

●●

●●

●●

● ●

●●●●

●●

●●●

● ●

●●●

●●

●●

● ●●●

●● ●

●●

●●

●●●

●●

●●

●●

●●●

● ●

●●

● ●

●●●

●●●

●●

●●●

● ●● ●

● ●

●●

●●

●● ●●

●●

● ●●

●● ●

● ●●●●

●●● ●

●●

●●

●●

● ●●●

●●

●●

● ●●

●●●

●●● ●

● ●●

●●●

● ● ●●

●●●

●●

●●

●●

● ●●●●

●●● ●

●●

●●

● ●●●●

●●

●● ●●

●●

●●

●●●

0 2 4 6 8

●●● ●

●●

●●●●●

●●

●●●

●●●

●●●

●●

●●

●●

●●

●●●●

●●

●●

●●

●●

● ●●

●●●

●●●

●●

●●●

● ●

●●

●●

●●●●

●●

●●●

●●●

●●

●●●

●●

●●

●●●

●●●●●●

●●

● ●

●●●

●●

●●

●●●

●●

●●●●●●●

●●

●●●●

● ●●

●●●

●●●

●●

●●

●● ●●

●●

●●

●●

●●

●●●●

●●●

●●●●●

●●●

●●●●

●●

●●

●●

● ●

●●● ●

●●●

●●●

●●

●●●

●●

●●

●●●●

●●●

●●

●●

●●●●

●●●●

●●

●● ●

●●

●●

●●

●●

●●

●●

●●●●●●●

●●

●●

●●

●●●●

●●●●

●●●●

●●● ●●●

●●● ●

●●

●●

●●

●●●●

●●

●●

●●●

● ●●

●●●●

● ● ●

●●●●

●● ●●

●●●

●●

●●●

●●

●● ●●

●●●●●●●●

●●●●●

●●●

●●●●●●

●●

●●●

NN10

Figura 2.15: Matriz de diagramas de dispersion con histograma y suavizado paralas variables cuantitativas asociadas a los datos de seguimiento de plantulas deHelianthemum squamatum. Hjun = numero de hojas en el censo de junio; Tjun= tamano en el censo de junio (cm); NN05 = numero de plantulas vecinas enun radio de 5 centımetros; NN10 = numero de plantulas vecinas en un radio de10 centımetros.

Una herramienta similar es el denominado ”corrgram” (no confundir con elcorrelograma) que, aunque disenado para visualizar matrices de correlacion yde covarianza en un contexto multivariante (Friendly, 2002), tambien podrıaemplearse en este caso (Figura 2.16). En R, este tipo de graficos puedeimplementarse con la funcion corrgram() del paquete del mismo nombre(Wright 2016).

> library(corrgram)

> corrgram(plantulas0[plantulas0$Censo=="marzo", 3:6],

+ lower.panel=panel.pts,

+ upper.panel=panel.conf,

+ diag.panel=panel.density)

24

Page 25: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dorAnalisis exploratorio y representacion grafica de datos

Hjun 0.16(0.08,0.25)

−0.22(−0.30,−0.13)

−0.24(−0.33,−0.16)

●●

●●

●●

●●

● ●●●

●●

●●

●● ●

●●

●●

● ● ●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●● ●

●●●●

● ●●

● ●

●●●● ●

● ●

●●

●●

● ●●●

● ●●

● ●●

●●

●●

●●

●●

● ●

● ●

●●

●●

● ●

● ●

●●●

●●

●●

●● ●

●● ●

● ●

●●

●●

●●

● ● ●

●●

● ●●●

●●

●●

●●

● ●

●●

●● ●

● ●

●●

●●

● ●● ●

●●

● ●

● ●

●●

●●

●●

●●●

● ●

●●

●●

●●●

●●

●●

●●●●

●●●

●●

●●●

●●

●●

●●●●

●●●●

●●

●●

●●

●● ●

●●●

●●

●●●

●●

●●

●●

●●

●●

● ●● ●

Tjun −0.08(−0.17,0.01)

−0.08(−0.17,0.01)

●●

●●

●●●

●●

● ●●● ●●

●●● ●

●●

●● ●● ●

●●

● ●

●●●

●●●

●● ●

● ●

● ●

●●● ●

● ●

●●

● ●

●● ● ●

● ●

● ●

●● ●

●●

●●

● ●●

●●

●●

●●●● ●●

●●

● ● ●

●●

●● ●

● ●●

●●● ●●●●●

● ●●

●● ●●

●●

●●

●●

● ●●

●●

● ●

●●

● ●

●●

● ●

●●

●●

●●

● ● ●

●●●● ●

● ●●●

● ●● ●●

● ●

●●

● ●●

●●●●●

● ●●

●●

●● ● ●

● ●● ●●●●

●●

●●● ●

● ●

●●

● ●●● ●

●●●●

●●

●●

●●

● ●●

●●

● ●

● ●●

● ●

●●●

●●● ●

●●

●●● ● ●● ●●

●●

●●

●●

● ●●● ●

● ●●

●●

●●

●●●

●●

●●

●●

● ●

●●●

● ●●

●●

●● ●●

●●● ●● ●●

●●●

●●

●● ●

●●

●● ●●● ●●●

●●

●●

●● ● ●● ●●●● ●●● ●

●●● ●

● ●

● ●

● ●●

● ●

● ●●● ● ●

●●●●

● ●

●● ● ●●

●●

●●

● ●●

● ●●

●● ●

●●

●●

● ●● ●

●●

●●

●●

● ●● ●

● ●

●●

● ●●

●●

●●

●● ●

● ●

● ●

● ● ●●● ●

●●

●●●

●●

● ●●

● ●●

● ●●●● ●● ●

●● ●

● ●● ●

● ●

●●

● ●

●● ●

● ●

●●

● ●

●●

● ●

●●

● ●

● ●

●●

●● ●

● ●●● ●

●●●●

● ●●● ●

●●

●●

●● ●

● ●●●●

●●●

● ●

●●●●

●● ● ● ● ●●

● ●

● ●●●

●●

●●

● ●●● ●

● ● ●●

● ●

●●

● ●

●● ●

●●

●●

●● ●

●●

● ●●

● ●●●

●●

● ●●●● ●● ●

●●

●●

● ●

● ● ●● ●

●● ●

●●

●●

●●●

●●

●●

● ●

● ●

●●●

● ●●

●●

●●● ●

● ●●● ●● ●

●● ●

● ●

●● ●

● ●

●●● ●●● ●●

●●

●●

●● ●●●● ●●●●●●●

● ●●●

NN05 0.77(0.73,0.80)

●●● ●

●●

●●● ●●

● ●

●● ●

●●●

●●●

●●

●●

●●

●●

●●●●

●●

●●

● ●

●●

● ●●

●●●

● ●●●

●●

●●●

● ●

●●

●●

●● ● ●

●●

● ●●

●●●

●●

●●●

● ●

●●

●●●

●●●

● ●●

●●

●●

●●

●●

●●

●●

●●

●●●●●●●

●●

●● ●●

● ●●

●●●

●●

●●

●●

●●●●

●●

●●

● ●

●●

●●●●

●● ●

●●●

● ●

●●

● ●● ●

●●

●●

●●

●●

● ●● ●

●●●

●●●

●●

●● ●

●●

● ●

●●●●

●●●

●●

● ●

●●●

●●●

●●

●●●●●

●●

●●

●●

●●

●●

●● ●

●● ●●

● ●

●●

●●

●●● ●

●●● ●

●● ●●

●●●●●

●●● ●

●●

●●

●●

● ●●

●●

●●●

● ●●

● ●●

●●●●

●● ●

●●

●●

●●●●

●●●

●●

●●●

●●

●● ●●

●● ●●

●●●●

●●●●●

●●

●●●●

● ●

●●

●●●

●● ●●

●●

●●● ●●

● ●

●●●

● ●●

●● ●

●●

●●

●●

●●

● ●●●

●●

●●

●●

●●

●●●

● ●●

●●●

●●

●●

●●

●●

●●

●●

● ●● ●

●●

● ●●

● ●●

●●

●●●

●●

●●●

●● ●

● ●●

●● ●

●●

● ●

●●●

●●

●●

●●●

●●

● ●●●

● ●●

●●

● ●●●

● ●●

●● ●

●●

●●

●●

● ●●●

●●

●●

●●

● ●

● ●●●

●● ●

● ●●

● ●

●●●

● ●●●

●●

●●

●●

● ●

●●●●

●●

●●●

● ●

●●●

●●

●●

● ●●●

●● ●

●●

●●

●●●

●●

●●

●●

●●●

● ●

●●

● ●

●●●

●●

●●

●●●

● ●● ●

● ●

●●

●●

●● ●●

●●

● ●●

●● ●

● ●●●●

●●● ●

●●

●●

●●

● ●●

●●

●●

● ●●

●●●

●●● ●

● ●●

●●●

● ● ●●

●●●

●●

●●

●●

● ●●●

●●● ●

●●

●●

● ●●●●

●●

●● ●●

●●

●●

●●●

●●● ●

●●

●●●●●

●●

●●●

●●●

●●●

●●

●●

●●

●●

●●●●

●●

●●

●●

●●

● ●●

●●●

●●●

●●

●●●

● ●

●●

●●

●●●●

●●

●●●

●●●

●●

●●●

●●

●●

●●●

●●●●●●

●●

● ●

●●●

●●

●●

●●●

●●

●●●●●●●

●●

●●●●

● ●●

●●●

●●●

●●

●●

●● ●●

●●

●●

●●

●●

●●●●

●●●

●●●●●

●●●

●●●●

●●

●●

●●

● ●

●●● ●

●●●

●●●

●●

●●●

●●

●●

●●●●

●●●

●●

●●

●●●●

●●●●

●●

●● ●

●●

●●

●●

●●

●●

●●

●●●●●●●

●●

●●

●●

●●●●

●●●●

●●●●

●●● ●●●

●●● ●

●●

●●

●●

●●●●

●●

●●

●●●

● ●●

●●●●

● ● ●

●●●●

●● ●●

●●●

●●

●●●

●●

●● ●●

●●●●●●●●

●●●●●

●●●

●●●●●●

●●

●●●

NN10

Figura 2.16: Matriz de diagramas de dispersion para las variables cuantitativasasociadas a los datos de seguimiento de plantulas de Helianthemum squamatumobtenida con la funcion corrgram(). Hjun = numero de hojas en el censo dejunio; Tjun = tamano en el censo de junio (cm); NN05 = numero de plantulasvecinas en un radio de 5 centımetros; NN10 = numero de plantulas vecinas enun radio de 10 centımetros.

Otra posibilidad para el analisis exploratorio de datos multivariados es larealizacion de diagramas de dispersion tridimensionales, por ejemplo con lasfunciones existentes en los paquetes scatterplot3d (Ligges y Machler 2003) y rgl(Adler et al. 2016). El ultimo tiene acceso a las capacidades de visualizaciondel lenguaje OpenGL, por lo que tiene algunas ventajas a la hora de visualizardatos multidimensionales, como la rotacion de graficos o la inclusion de efectosde luz. Un diagrama de dispersion tridimensional se puede realizar de formasencilla con la funcion scatterplot3d() (Figura 2.17).

> library(scatterplot3d)

> scatterplot3d(plantulas0[plantulas0$Censo=="marzo", 3:5],

+ xlab="Numero de hojas", ylab="Tama~no (cm)",

+ zlab="Numero de vecinos en 5 cm")

25

Page 26: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

0 5 10 15 20

02

46

8

0

1

2

3

4

5

6

Número de hojas

Tam

año

(cm

)

Núm

ero

de v

ecin

os e

n 5

cm

●●

● ●●

●●

●●

●●

●●

●●●

●●

●●●

● ●

●●

● ●

●●

● ● ●●●●● ●

●●

●● ● ●●●

● ●

●●

●●

●●

●●

●● ●

●●

● ●

● ●

●●

● ●

●●

●●●● ● ●●

● ●●

●●

● ●

● ●●●● ●●●

● ●●

●●●

● ●●

● ●●

●●

●●●

●●

●●●

● ●

● ●

●●

● ●

●●

●●●

●●

●● ● ●

●●

●●

● ●

●●

●● ●

●●

● ●●

● ●

●● ●

● ●

● ●●

●●●

● ●

● ●

● ●

● ●

●●●

● ●●

● ●

● ●

● ●●

●●

●●● ●●●●

● ● ●●

●●

●●

●● ●

●● ● ●

● ●

●●●●

●●

●●

●●

●●●

● ● ●

●●●

● ●

● ●

●●

●●●

●●

●●

● ●● ●

Figura 2.17: Diagrama de dispersion tridimensional de la relacion entre el nu-mero de plantulas vecinas en un cırculo de 5 cm de radio, el numero de hojas yel tamano de las plantulas de Helianthemum squamatum.

2.2.4. Datos cuantitativos clasificados y datoscualitativos

Los datos cuantitativos clasificados son datos cuantitativos que se agrupan enclases definidas por rangos de valores, mientras que los datos cualitativos sondatos que expresan una cualidad o caracterıstica del fenomeno observado queno puede expresarse de forma cuantitativa (p.ej. especie o variedad de lirio).Desde el punto de vista de la presentacion de resultados, las graficas masfrecuentemente empleadas para datos cuantitativos clasificados y cualitativosson los diagramas de barras. En R, los diagramas de barras se construyen conla funcion barplot() a partir de un vector, matriz o tabla, en cuyas celdasaparece la altura que debe tener cada barra. Por ejemplo para representar elnumero de plantulas que sobreviven o mueren por distintas causas (herbivorıa,sequıa), primero sacarıamos la tabla de frecuencias para cada uno de estoseventos, y esto serıa lo que dibujarıa la funcion barplot():

> barplot(table(plantulas0$MSET))

Los graficos de barras no solo representan frecuencias, sino tambien cualquiervalor o resumen estadıstico que queramos obtener para nuestros datos

26

Page 27: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

cuantitativos clasificados. Por ejemplo, el tamano (Tjun) medio de lasplantulas de cada cohorte (Censo) que experimentan cada tipo de mortalidad(MSET) lo obtendrıamos calculando en primer lugar la media para cada grupodefinido por la combinacion de niveles de los dos factores mencionados ypasando el resultado a barplot. La representacion puede hacerse con barrascontiguas (Figura 2.18a) o apilada (por defecto, 2.18b), aunque en esteejemplo no tendrıa mucho sentido al tratarse de medias.

> Tjun.means <- with(plantulas0, tapply(Tjun, list(MSET, Censo), mean))

> par(mfrow=c(1,2))

> par(mar=c(2,2.5,1.5,1))

> barplot(Tjun.means, legend=rownames(Tjun.means), beside=TRUE,

+ args.legend=list(x=7.8, y=2.3), las=1)

> barplot(Tjun.means, legend=FALSE, las=1)

abril junio marzo mayo

herbivoríasequíasobrevive

0.0

0.5

1.0

1.5

2.0

a)

abril junio marzo mayo

0

1

2

3

4

5

b)

Figura 2.18: Diagramas de barras del tamano medio de las plantulas de lasdiferentes cohortes de Helianthemum squamatum agrupadas segun el estado enque se encontraron tras la sequıa estival y representadas: a) con barras contiguas;y b) con barras apiladas.

En el caso de querer anadir unas barras de error, podrıamos usar alguna de lasnumerosas funciones que existen en diferentes paquetes de R, como error.barr()del paquete psych (Revelle 2016), bar.err() del paquete agricolae (Mendiburu2016), plotCI() del paquete gplots (Warnes et al. 2016), xYplot() del paqueteHmisc, o dispersion() y plotCI() del paquete plotrix (Lemon 2006). Por ejemplo,usando las funciones std.error() y dispersion() del paquete plotrix, podemosanadir barras de error estandar a la Figura 2.18 (Figura 2.19).

27

Page 28: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

> bp <- barplot(Tjun.means, legend=rownames(Tjun.means), beside=T,

+ ylim=c(0,2.3))

> library(plotrix)

> Tjun.se <- with(plantulas0, aggregate(Tjun, list(MSET, Censo), std.error))

> dispersion(bp, Tjun.means, Tjun.se$x, display.na=F, arrow.gap=0)

abril junio marzo mayo

herbivoríasequíasobrevive

0.0

0.5

1.0

1.5

2.0

Figura 2.19: Diagrama de barras con ±1 error estandar del tamano de las plan-tulas de las diferentes cohortes de Helianthemum squamatum agrupadas portipo de mortalidad.

Una alternativa a los diagramas de barras son los diagramas de puntos deCleveland (1985). Generalmente, lo que se representa en estos graficos es elvalor medio de cada grupo con un unico punto. La funcion dotchart() delpaquete graphics realiza este tipo de graficos a partir de las mismas tablas omatrices que emplearıamos para un diagrama de barras.

> dotchart(Tjun.means, pch=19)

En el paquete Hmisc (Harrell 2016) existen funciones alternativas para losdiagramas de Cleveland, que automatizan algunas tareas, como por ejemplo elcalculo y representacion de la media de algun grupo (cuando se consideranmas de uno en la representacion) y ademas presenta ordenados de menor amayor los valores de los diferentes grupos (Figura 2.20). Estas funcionesrequieren, sin embargo, que las medias de los datos se hayan obtenido conaggregate() en vez de con tapply().

28

Page 29: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dorAnalisis exploratorio y representacion grafica de datos

> library(Hmisc)

> Tjun.means2 <- with(plantulas0,

+ aggregate(Tjun, list(MSET, Censo), mean))

> head(Tjun.means2, 3)

Group.1 Group.2 x

1 herbivorıa abril 1.189286

2 sequıa abril 1.175472

3 sobrevive abril 1.531884

> summaryD(x~Group.2+Group.1, data=Tjun.means2,

+ xlab="Tama~no promedio de plantula", pch=19)

sequíaherbivoríasobrevive

sequíaherbivoríasobrevive

herbivoríasequía

sobrevive

sequíaherbivoríasobrevive

abril

junio

marzo

mayo

0.5 1.0 1.5 2.0

Tamaño promedio de plántula

Figura 2.20: Diagramas de puntos de Cleveland del tamano de las plantulasde las diferentes cohortes de Helianthemum squamatum agrupadas por tipo demortalidad.

Aunque no suele ser comun, si lo deseasemos, con un poco de manipulacion, sepueden anadir estimadores de la dispersion. Por ejemplo, se puede mostrar lamagnitud de la dispersion con un error estandar de la media (Figura 2.21).

29

Page 30: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

> Tjun.means2 <- with(plantulas0, aggregate(Tjun, list(MSET, Censo), mean))

> Tjun.sd2 <- with(plantulas0, aggregate(Tjun, list(MSET, Censo),sd))

> Tjun.n2 <- with(plantulas0, aggregate(Tjun, list(MSET, Censo),length))

> Tjun.means2$sel <- Tjun.means2$x+(Tjun.sd2$x/sqrt(Tjun.n2$x))

> Tjun.means2$ser <- Tjun.means2$x-(Tjun.sd2$x/sqrt(Tjun.n2$x))

> dotchart3(cbind(Tjun.means2$sel, Tjun.means2$x, Tjun.means2$ser),

+ labels=Tjun.means2$Group.1, groups=Tjun.means2$Group.2, pch=c(93,19,91),

+ xlab="Tama~no promedio de plantula")

herbivoríasequía

sobrevive

herbivoríasequía

sobrevive

herbivoríasequía

sobrevive

herbivoríasequía

sobrevive

]]

]

]]

]

]]

]]

]

[[

[

[[

[

[[

[[

[abril

junio

marzo

mayo

0.5 1.0 1.5 2.0

Tamaño promedio de plántula

Figura 2.21: Diagramas de puntos de Cleveland del tamano de las plantulas(±1 error estandar) de las diferentes cohortes de Helianthemum squamatumagrupadas por tipo de mortalidad.

2.3. Graficos condicionados del paquete lattice

La mayorıa de los graficos presentados hasta ahora han sido realizados confunciones basadas en el paquete graphics de R y en otros que se apoyan en el.Existen, sin embargo, otras alternativas que pueden resultar interesantes parala presentacion de resultados y, aun mas, para la fase exploratoria de analisisde los datos.

El paquete lattice es, basicamente, una implementacion en R de los graficos deTrellis (trellis graphics en ingles) desarrollados principalmente por William S.Cleveland para S-PLUS (Sarkar 2008). Al contrario que el paquete graphics, seconstruye sobre el sistema de graficos de rejilla. Este sistema permite una

30

Page 31: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

visualizacion de datos multivariados que es especialmente util para explorar lasrelaciones o interacciones entre las variables. La idea fundamental es que losgraficos bivariados se subdividan en varios graficos segun el valor de unatercera variable (uno o mas factores). Es lo que se demonina tambien ”graficoscondicionados”. Algunas funciones del paquete graphics, como la funcioncoplot() tienen un enfoque similar, pero las funciones de lattice son mucho masflexibles para esta labor y tienen mayores opciones. La sintaxis para realizarun grafico de lattice suele ser generalmente tipo_de_grafico(formula,

data=), donde tipo_de_grafico es el nombre de la funcion (ver Tabla 2.3), yformula es la formula que expresa las variables a representar y las variablescondicionantes. La mayorıa de las funciones en lattice usan como argumentouna formula del tipo: y~x|A, que se interpreta como la representacion de y enfuncion de x para cada uno de los niveles del factor A.

Por ejemplo, para representar la relacion entre el tamano de la plantula y elnumero de hojas en diagramas separados en funcion de la cohorte, usarıamosla funcion xyplot() (Figura 2.22).

> library(lattice)

> xyplot(Hjun~Tjun|MSET, data=plantulas0, xlab="Tama~no (cm)",

+ ylab="Numero de hojas")

Tamaño (cm)

Núm

ero

de h

ojas

5

10

15

20

0 1 2 3 4 5

●●

●●

●●

●●

●●

●●● ●

●●●●

●●

●●

●●

● ●

●● ●●

●●

● ●

●●

● ●

●●

●●

●●

●●

●●

●●

●●

●●

●●●

herbivoría

●●

●●

●●

● ●

●●

● ●

●●●

●●

●●●● ●

●●

●●

●●

●●

●●●

●●

●●

●●●

●●

●●

● ●

● ●

●●

● ●●

●●

●●

● ●

●●

● ●

●●

●●

●●

●●

●●

●●● ●●

●●

●●

●●●

●●

●●

●●●●

●●●●

●●●●●

sequía

5

10

15

20● ●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●●

●●

● ●●●●

● ●●

● ● ●●

●●●

● ●

●●

●●

● ●● ●

●●●●

●●

●●

●●●

●●

●●

● ●

●●

●●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

● ●●●

●●●

● ●

●●●

●●●

● ●●

● ● ●

● ● ●

●●

●●

●●

● ●● ●

●●●

● ●

●●

●●

●●

● ●

●●

●●

●●●

●●

● ●

●●

● ●

●●●

● ●

●●

●●

● ●●

●● ●

●●

●●

● ●

●● ●

● ● ●

●● ●

●●

●●

●●●

●●●

sobrevive

Figura 2.22: Diagrama de dispersion del numero de hojas frente al tamano deplantulas de Helianthemum squamatum, condicionado por el tipo de mortalidad.

31

Page 32: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

Tambien se pueden hacer graficos condicionados por mas de un factor. En esecaso la formula serıa del tipo y~x|A+B, lo que generarıa un grafico de y~x paracada una de las combinaciones de los niveles de los dos factores, A y B.

Otras funciones utiles para los analisis exploratorios y para produccion degraficos aparecen en la tabla 2.3.

Tabla 2.3: Principales funciones del paquete lattice.

Funcion lattice Descripcion equivalente en graphics formula

barchart() Diagramas de barras barplot() x˜Abwplot() Diagramas de cajas boxplot() x˜A

densityplot() Graficos de densidad condicionales plot.density() ˜x|A*Bdotplot() Diagramas de puntos dotchart() ˜x|A

histogram() Histogramas hist() ˜x|Aqqmath() Diagramas Q-Q qqnorm()

qq() Diagramas Q-Q qqplot()stripplot() Diagramas de puntos de Cleveland stripchart() x˜Axyplot() Diagramas de dispersion plot(); coplot() y˜x|A

levelplot() Imagenes image() z˜y*xcontourplot() Isolıneas contour() z˜x*y

cloud() Diagrama de dispersion tridimensional points3D() z˜x*y|Awireframe() Superficies tridimensionales persp() z˜y*x

splom() Matrices de diagramas de dispersion pairs() data.frameparallel() Graficos paralelos data.frame

La combinacion de varios tipos de elementos graficos en cada panel se hacecombinando las funciones que los crean dentro de una funcion creada al efecto.Por ejemplo, para hacer un diagrama de dispersion y anadir un estimador desuavizado, lo primero que tendrıamos que hacer es combinar las funciones quelos crean en otra que podemos llamar por ejemplo xysmooth(). A continuacion,llamamos a la funcion grafica que queramos (en este caso xyplot()) y en elargumento ”panel” le indicamos la funcion que acabamos de construir (Figura2.23).

32

Page 33: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dorAnalisis exploratorio y representacion grafica de datos

> xysmooth<- function(x,y){

+ panel.xyplot(x,y)

+ panel.spline(x,y)

+ }

> xyplot(Hjun~Tjun|MSET, data=plantulas0, panel=xysmooth,

+ xlab="Tama~no (cm)", ylab="Numero de hojas")

Tamaño (cm)

Núm

ero

de h

ojas

5

10

15

20

0 1 2 3 4 5

●●

●●

●●

●●

●●

●●● ●

●●●●

●●

●●

●●

● ●

●● ●●

●●

● ●

●●

● ●

●●

●●

●●

●●

●●

●●

●●

●●

●●●

herbivoría

0 1 2 3 4 5

●●

●●

●●

● ●

●●

● ●

●●●

●●

●●●● ●

●●

●●

●●

●●

●●●

●●

●●

●●●

●●

●●

● ●

● ●

●●

● ●●

●●

●●

● ●

●●

● ●

●●

●●

●●

●●

●●

●●● ●●

●●

●●

●●●

●●

●●

●●●●

●●●●

●●●●●

sequía

0 1 2 3 4 5

● ●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●●

●●

● ●●●●

● ●●

● ● ●●

●●●

● ●

●●

●●

● ●● ●

●●●●

●●

●●

●●●

●●

●●

● ●

●●

●●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

● ●●●

●●●

● ●

●●●

●●●

● ●●

● ● ●

● ● ●

●●

●●

●●

● ●● ●

●●●

● ●

●●

●●

●●

● ●

●●

●●

●●●

●●

● ●

●●

● ●

●●●

● ●

●●

●●

● ●●

●● ●

●●

●●

● ●

●● ●

● ● ●

●● ●

●●

●●

●●●

●●●

sobrevive

Figura 2.23: Diagrama de dispersion del numero de hojas frente al tamano deplantulas de Helianthemum squamatum, condicionado por el tipo de mortalidad.La lınea en cada panel representa el ajuste de una funcion de suavizado.

Las funciones que suministra lattice para generar nuevas graficas llevan alcomienzo de su nombre el prefijo ”panel.” El nombre de todas las funcionesdisponibles lo podemos conocer escribiendo en la consola:

> ls(pos="package:lattice", pat="^panel")

Una introduccion concisa y bastante completa a los graficos de lattice se puedeleer en el capıtulo 4 del libro de Murrell (2012). Una descripcion detallada delpaquete por parte de su autor aparece en Sarkar (2008). Kabacoff (2013) tieneun capıtulo sobre graficos con lattice (Capıtulo 23, Advanced graphics with thelattice package) accesible libremente enhttp://www.statmethods.net/RiA/lattice.pdf y disponible tambien en lapagina web de la editorial.

2.4. Otras soluciones graficas: ggplot2

Otra aproximacion grafica basada en el sistema grid es ggplot2 (Wickham2016), que implementa y extiende el paradigma de la ”gramatica de losgraficos” (Wilkinson 2005) a los graficos estadısticos. Eso implica que, en lugarde tener una funcion para cada tipo de grafico, se tiene un conjunto defunciones especializadas en producir cada uno de los componentes queconforman el grafico. Dichos componentes pueden combinarse de muchasformas distintas posibilitando la produccion de una gran variedad de tipos de

33

Page 34: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

grafico. Aunque ggplot2 proporciona una funcion qplot() que funciona de formaparecida a plot() y que podrıa emplearse para graficos sencillos, la maximaflexibilidad con ggplot2 se consigue combinando elementos graficos mediantefunciones mas avanzadas. Los pasos para crear un grafico con ggplot2 serıan:

1. Definir los datos que se quieren representar y crear un objeto grafico”vacıo” con la funcion ggplot().

2. Especificar que componentes o formas graficas (”geoms”) se quierenemplear para visualizar los datos (por ejemplo, puntos, lıneas, etc) yanadirlas al grafico con la funcion correspondiente, por ejemplogeom point() o geom line().

3. Especificar con la funcion aes() que caracterısticas de las formas graficas(”esteticas” o aesthetics en ingles) se emplearan para representar losdatos (por ejemplo la posicion de los sımbolos graficos en el eje x e y).Esto es lo que se denomina en la terminologıa de la gramatica de graficos”asociar o mapear (mapping) una variable a una estetica”.

Por ejemplo, un grafico de dispersion como los realizados hasta ahora lorealizarıamos con ggplot2 siguiendo estos pasos:

El primer paso es crear un objeto de tipo ”ggplot” y definir los datos que se vana usar.

> library(ggplot2)

> p <- ggplot(plantulas0)

A continuacion hay que indicar el tipo de forma que se quiere emplear pararepresentar los datos, por ejemplo sımbolos puntuales o barras para diagramasde dispersion o de barras, respectivamente. En este paso, hay que indicartambien que variables de los datos se emplearan para controlar lascaracterısticas de las formas con la funcion aes(), por ejemplo, que variables sevan a utilizar para indicar las posiciones x e y de los puntos en el diagrama dedispersion. Esa informacion se ”suma” al objeto previamente creado, y elresultado es un grafico. En el ejemplo siguiente indicamos que queremosrepresentar sımbolos puntuales y que las variables Tjun y Hjun definen laposicion en los ejes x e y respectivamente:

> p + geom_point(aes(x=Tjun, y=Hjun))

Dependiendo del geom que se use, habra unas u otras esteticas disponibles.Por ejemplo, la estetica shape permite asociar el tipo de sımbolo con otravariable, por ejemplo con la cohorte (Figura 2.24).

> p + geom_point(aes(x=Tjun, y=Hjun, shape=Censo), size=2)

Existen geoms para todos los elementos graficos mas habituales. La listadisponible de geoms se puede consultar de la siguiente forma:

34

Page 35: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

> ls(pos="package:ggplot2", pat="^geom_")

Los geoms mas comunes aparecen en la Tabla 2.4. Todos los geoms tienen lasesteticas color, size y group. La estetica size indica el tamano para los puntos yel texto, y anchura para las lıneas. Sus unidades son milımetros. En el ejemploanterior, hemos visto como las esteticas pueden, o bien asociarse con unavariable (en el ejemplo hemos asociado shape con Censo), o bien fijarseconstantes, como el tamano (size) de los puntos.

Tabla 2.4: Alguno de los geoms mas utiles y sus esteticas mas comunes en elsistema ggplot2. Ademas de los senalados en la tabla, todos los geoms tienen lasesteticas color, size y group.

Geom Descripcion Esteticas

geom point() Sımbolos puntuales x, y, shape, fillgeom line() Lınea (ordenada segun x) x, y, linetypegeom path() Lınea (orden original) x, y, linetypegeom text() Etiquetas de texto x, y, label, angle,hjust, vjustgeom rect() Rectangulos xmin, xmax, ymin, ymax, fill, linetype

geom polygon() Polıgonos x, y, fill, linetypegeom segment() Segmentos x, y, xend, yend, linetype

geom bar() Barras x, fill, linetype, weightgeom histogram() Histogramas x, fill, linetype, weight

geom boxplot() Diagramas de cajas x, y, fill, weightgeom density() Curvas de densidad x, y, fill, linetypegeom contour() Isolıneas x, y, fill, linetypegeom smooth() Curvas suavizadas x, y, fill, linetype

Para anadir una curva suavizada al diagrama anterior (Figura 2.24),simplemente debemos anadir el geom correspondiente en la lınea de codigo.

> p + geom_point(aes(x=Tjun, y=Hjun, shape=Censo, col=Censo), size=2)+

+ geom_smooth(aes(x=Tjun,y=Hjun))

Otro tipo de componentes grafico en ggplot2 son los componentes de escala(scale). Con ellos se especifica todo lo relativo a los ejes o las leyendas. Si no seespecifican, ggplot2 generara automaticamente los ejes y leyendas, peropodrıamos personalizar, por ejemplo, las etiquetas de los ejes usando loscomponentes scale y continuous y scale x continuous (Figura 2.24).

35

Page 36: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dor

Borra

dorAnalisis exploratorio y representacion grafica de datos

> p + geom_point(aes(x=Tjun, y=Hjun, shape=Censo, col=Censo), size=2)+

+ geom_smooth(aes(x=Tjun, y=Hjun))+

+ scale_x_continuous(name="Tama~no (cm)")+

+ scale_y_continuous(name="Numero de hojas")

● ●

●●

● ●●

● ●

● ●

●●

● ●

●●

●●

● ●

●●

●●

●●

●●

● ●

● ●

●●●

● ●

●●

● ●

●● ●

●●

● ●

0

5

10

15

20

0 2 4

Tamaño (cm)

Núm

ero

de h

ojas Censo

● abril

junio

marzo

mayo

Figura 2.24: Diagrama de dispersion del numero de hojas frente al tamano delas plantulas, con suavizado de datos.

Con ggplot2 tambien es posible producir graficos de Trellis similares a los delpaquete lattice. Para ello, es necesario usar la funcion facet wrap() e indicar elfactor condicionante y el numero de filas y/o columnas deseados en la rejilla degraficos. Un grafico similar al realizado anteriormente con lattice (Figura 2.23),lo obtendrıamos anadiendo dicha funcion al codigo anterior (Figura 2.25):

36

Page 37: d o r r r a - Máster Biodiversidad en Áreas Tropicales y ... · Figura 2.1: Esquema conceptual de c omo esta estructurado el sistema de gra c os en R. El sistema de gr a cos tradicionales

Borra

dorAnalisis exploratorio y representacion grafica de datos

> p+geom_point(aes(x=Tjun,y=Hjun))+

+ geom_smooth(aes(x=Tjun,y=Hjun),se=FALSE)+

+ facet_wrap(~MSET, nrow=1, scales="free")+

+ scale_x_continuous(name="Tama~no (cm)")+

+ scale_y_continuous(name="Numero de hojas")+

+ theme_light()

●●

●●

●●

●●

● ●

●●●●

● ●

●● ●●

● ●

● ●

●●

●●

●●

●●

●●

●●

● ●

●●

● ●

● ●●

●●

●●

● ●

●●

●●

● ●

● ●

●●

● ●●

● ●

● ●

●●

● ●●

●●

●●

●●

●●●●

● ●

●●

●●

●●

●●

●●

●●

●●

●●

●●

● ●●●●

● ●●

● ● ●●

●●

● ●

●●

● ●

● ●

●●●●

●●

●●

● ●

●●

●●

●●

● ●●●

●●

● ●

●●

●●

● ●●

● ● ●

● ● ●

●●

●●

● ●● ●

●●

● ●

● ●

●●

●●

●●

●●

● ●

● ●

●●●

● ●

●●

● ●

●● ●

●●

● ●

●● ●

● ● ●

● ●

●●

●●●

herbivoría sequía sobrevive

1 2 3 4 0 1 2 3 4 1 2 3 4 5

5

10

15

20

5

10

15

20

5

10

15

20

Tamaño (cm)

Núm

ero

de h

ojas

Figura 2.25: Diagrama de dispersion del numero de hojas frente al tamano delas plantulas, con suavizado de datos y condicionado por el tipo de mortalidad(grafico trellis).

En este grafico, ademas se ha modificado el argumento se en la funciongeom smooth() para que no se muestre el intervalo de confianza alrededor delsuavizado, se ha establecido el argumento scales=”free” en la componentefacet wrap() para que cada panel ajuste la escala al rango de datos de cadagrupo, y se ha usado una configuracion grafica (theme ) ”ligera”. La lista deconfiguraciones graficas en ggplot2 se puede obtener de la siguiente forma:

> ls(pos = "package:ggplot2", pat="^theme_")

Se puede encontrar una descripcion completa del paquete ggplot2 en Wickham(2016). Tambien se puede encontrar un resumen de las principales funcionesdel paquete en el capıtulo 5 de Murrell (2012). En Chang (2013) se presentannumerosos ejemplos de graficos realizados con ggplot2.

37