Está en la página 1de 121

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

LENGUAJE

R APLICADO AL

ANLISIS DE DATOS DE
CALIDAD DEL AIRE

MANUAL BSICO
para el tratamiento
de datos de

CALIDAD DEL AIRE


mediante el

lenguaje estadstico R
y paquetes adicionales como

OPENAIR

Elaborado por Fernando Follos Pliego.


Ao de redaccin Septiembre de 2012.

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
Este manual de Openair y de utilizacin de R ha sido elaborado por el autor como gua bsica para dummies en el uso del lenguaje R,
y de paquetes adicionales como Openair, para el anlisis estadstico de datos sobre calidad del aire. El uso y distribucin de esta manual es libre, cuenta con la autorizacin plena de su autor, que le agradece que lo considere como parte de su estudio o consulta y le
permite su reproduccin total o parcial, siempre y cuando se proceda a mencionar al mismo en las referencias bibliogrficas o reproducciones que se hagan de su contenido.
Los actuales apuntes se han realizado en base a la extensa bibliografa ya disponible sobre R, Openair o herramientas adicionales como Rstudio, sin las cuales no habra sido posible, sirviendo ms como un trabajo de traduccin, resumen y adaptacin esencialmente
orientado a los tcnicos que desarrollan su trabajo en el rea de calidad del aire, y que no tienen conocimientos previos de programacin, o conocimientos muy extensos de estadstica, como de hecho as ocurre con el propio autor.
Para su elaboracin se han utilizado las versiones v.2.15.o de R y v.0.6.0 del Paquete Openair, como principales herramientas, y se ha
trabajado en paralelo con los programas para aplicar el propio manual a la experiencia de desarrollo, por lo que todas las instrucciones
y secuencias de trabajo dispuestas en el manual han sido probadas con anterioridad por el autor, formando parte de un practicum completo sobre el programa. As mismo, el presente manual ha sido elaborado en vistas a que se siga una secuencia de aprendizaje lgica
del software (de principio a fin), por lo que al principio cualquier instruccin estar mucho ms detallada y explicada, mientras que segn
se avanza y profundiza en el programa se irn resumiendo ms y se detallarn slo aquellos aspectos ms fundamentales.
No obstante, el autor reconoce sus amplias limitaciones en cuanto a los temas tocantes a la estadstica o la programacin, por lo que
pide disculpas de antemano por los diversos errores e imprecisiones que puedan existir en el manual y solicita su asistencia en caso de
encontrar cualquier fallo o incongruencia en los contenidos.
Se recomienda acudir a las siguientes pginas Web y referencias de URL para adquirir versiones del software y guas con mayor actualizacin y profusin de datos que lo aqu presentado, si fuese preciso:

R Development Core Team (2011). http://www.R-project.org/


Openair (2012) Environmental Modelling & Software. http://www.openair-project.org/
Rstudio Inc. (2012) - http://rstudio.org/
En todo caso, el autor espera que estos apuntes resulten de inters para el lector y sirvan para profundizar en el uso para profesionales
de R y del paquete Openair, aprovechando para agradecer su trabajo desinteresado a los verdaderos expertos y cerebros que se encuentran tras el diseo y desarrollo del software libre utilizado en estos apuntes y en especial a David Carslaw, y a su eterna paciencia
con el autor, las observaciones, consultas y el oxidado ingls de este ltimo, su visin ha sido esencial a la hora de plantear muchos
temas en este manual e incluso su propia estructura.
Por ltimo, recordar que el autor est abierto tambin a cualquier contribucin que se quiera hacer a este manual de libre distribucin
para su mejora y actualizacin, ya sea a travs de comentarios, apreciaciones u observaciones, que debern dirigirse a los siguientes
datos de contacto y que sern indefectiblemente contestadas y, en su caso, contempladas dentro de su desarrollo.
D. Fernando Follos Pliego
Environmental Risk Management
C/ Federico Garca Lorca, n24.
45.280 Olas del Rey. ToledoSpain.
bael76@hotmail.es

Dedicado a mi hija Alexandra y a mi mujer,


que me han buscado un hueco en sus vidas
para poder introducirme en el apasionante
mundo de R y Openair.

Elaborado por Fernando Follos Pliego

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

INDICE DE CONTENIDOS:
Instalacin de R y Paquetes adicionales

pgina 5

Qu es R y cmo funciona? - Conceptos bsicos

pgina 6

Importacin y exportacin de archivos de datos

pgina 7

Instrucciones bsicas de R y Openair

pgina 10

Instrucciones previas al trabajo con archivos y datos

pgina 10

Instrucciones bsicas para el manejo de los conjuntos de datos

pgina 11

Trasponer filas por columnas: t

pgina 13

Seleccionar una serie de datos de un conjunto: subset

pgina 13

Combinar dos conjuntos de datos en uno: merge

pgina 14

Combinar conjuntos de datos por filas: rbind.fill

pgina 15

Clasificar los datos: cutData

pgina 16

Seleccionar datos en funcin de la fecha: selectByDate

pgina 17

Clasificar los datos en funcin de la fecha: splitByDate

pgina 18

Seleccionar los datos en funcin del valor lmite de un contaminante: selectRunning

pgina 19

Instrucciones bsicas para el manejo de los datos

pgina 20

Operadores de R para el manejo de datos.

pgina 20

Estructuras de control de datos:

pgina 20

Funciones matemticas bsicas de R para la gestin de datos de Calidad del Aire.

pgina 21

Funciones estadsticas bsicas de R para la gestin de datos.

pgina 21

Otras funciones bsicas de R de inters

pgina 22

Clculo de la media mvil de un parmetro: rollingMean

pgina 23

Agregar datos en funcin de distintos intervalos de tiempo: timeAverage

pgina 24

Clculo de percentiles: calcPercentile

pgina 25

Clculo de estadsticos de la Calidad del Aire: aqStats

pgina 26

Instrucciones Grficas en R y Openair

Instrucciones grficas bsicas en R

pgina 28

pgina 30

Grfica bsica de representacin de datos en dos ejes: plot

pgina 31

Grfica bsica de distribucin de datos en un histograma: hist

pgina 36

Grfico de cajas o Caja de Tukey: boxplot

pgina 40

Instrucciones grficas bsicas en Openair

pgina 43

Grfica de Resumen de datos: summaryPlot

pgina 45

La Rosa de Vientos: windRose

pgina 47

La Rosa de Contaminantes: pollutionRose

pgina 50

La Rosa de Percentiles: percentileRose

pgina 51

La Grfica Polar de Frecuencias: polarFreq

pgina 53

La Grfica Polar: polarPlot

pgina 56

Elaborado por Fernando Follos Pliego

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
La Grfica Temporal Polar o Funcin Anular: polarAnnulus

pgina 60

La Grfica Polar con Particiones: polarCluster

pgina 64

La Funcin Grfica de Tiempo: timePlot

pgina 66

La Grfica de Calendario: calendarPlot

pgina 71

La Grfica de densidad de Kernel para la superacin de las medias diarias: kernelExceed

pgina 74

La Funcin de Regresin Lineal: TheilSen

pgina 76

La Funcin de Tendencias Suavizadas: smoothTrend

pgina 80

La Matriz de Correlacin: corPlot

pgina 85

La Funcin de Variacin Temporal: timeVariation

pgina 87

El Diagrama de dispersin: scatterPlot

pgina 92

La Funcin de Relacin Lineal: linearRelation

pgina 98

La Funcin de datos condensados: trendLevel

pgina 101

La Funcin de representacin espacial de datos: GoogleMapsPlot

pgina 104

Instrucciones para la Evaluacin de Modelos


Clculo de las variables estadsticas ms comunes en la evaluacin de modelos: modStats

pgina 109
pgina 110

El Diagrama de Taylor: TaylorDiagram

pgina 112

La Funcin de Cuantiles Condicionales: conditionalQuantile

pgina 116

La Funcin de Cuantiles Condicionales Ampliados: conditionalEval

pgina 118

Referencias y Bibliografa asociada:

R Developement Core Team (2012). R: A lenguaje and environment for statistical computing. R Foundation for Statistical Computing, Viena,
Austrial. ISBN 3-900051-07-0.
Carslaw, D.C. and Kart Ropkins, (2012) openairan R package for air quality data anlisis. Environmental Modelling & Software. Volume 2728, 52-61.
David Carslaw and Kart Ropkins (2012). Openair: Open-Source tools for the anlisis of air pollution data. R Package versin 0.6-0.
PLYR Packaged (2012) Tools for splitting, applying and combining data.Ver.1.7.1 Hadley Wickman.
The Openair Manual open-source tools for analysing air pollution data. Kings College London. David Carslaw. Version: January 2012.
Introduccin a R R Development Core TeamTraduccin de Andrs Gonzlez y Silvia Gonzlez.
R para principiantes Emmanuel ParadisTraduccin de Jorge A. Ahumada
Grficos Estadsticos con R Juan Carlos Correa y Nefi Gonzlez. Universidad Nacional. Sede Medelln. Ao 2002.
R news and tutorials contributed by (393) R bloggers - http://www.r-bloggers.com/
R Graphical Manual - http://rgm2.lab.nig.ac.jp/RGM2/
Quick-R. Accesing The power of R - http://www.statmethods.net/

Los datos utilizados en este manual para ejemplificar las distintas funciones y operaciones de R y Openair son datos reales y de carcter pblico, obtenidos a partir de los datos publicados por las redes de inmisin pblicas de las Comunidades Autnomas de Madrid y Castilla-La Mancha en sus respectivas pginas web:

http://gestiona.madrid.org/azul_internet/run/j/AvisosAccion.icm

http://pagina.jccm.es/medioambiente/rvca/calidadaire.htm
Elaborado por Fernando Follos Pliego

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

INSTALACIN DE R Y PAQUETES ADICIONALES:


Este manual est pensado como si fuesen unos apuntes bsicos para manejar de una forma esencialmente
prctica el lenguaje R. No obstante, para hacerlo es estrictamente necesario instalar no slo R en el ordenador,
sino tambin el paquete o librera Openair, e incluso otras herramientas de utilidad que se recomienda instalar,
aunque no es estrictamente necesario, como Rstudio, que permiten un manejo mejorado del lenguaje (algo ms
grfico y asequible para los que no formamos parte de la comunidad de programadores informticos).
R es un software libre que se puede encontrar en la pgina web dedicada al proyecto R, ver referencias bibliogrficas. Dentro de esta pgina deberemos proceder a la descarga del programa en funcin del software de que
disponga nuestro equipo (windows, linux, etc).
La instalacin del paquete Openair es an ms sencilla, se puede realizar a travs de la propia web de Openair,
bajando el correspondiente instalador, o solicitando a R que instale el correspondiente paquete:
install.packages(openair, dep=TRUE).
Para ponerlo an ms fcil, la instalacin tambin se puede llevar a cabo a travs del men superior de la ventana de R: Paquetes instalar paquetes, donde seleccionaremos el paquete Openair.
R requerir que carguemos el paquete Openair cada vez que lo iniciemos, salvo que guardemos la sesin. La
orden para cargar el paquete Openair se ver con posterioridad, cuando conozcamos cmo se trabaja con R
con mayor profundidad.
Adems del paquete Openair, es preciso que nos aseguremos de que tenemos instalados y debidamente seleccionados a la hora de trabajar otros paquetes que tambin utilizaremos en nuestro trabajo habitual como RgoogleMaps, plyr, hexbin, lattice y utils, entre otros. Muchos de ellos ya vienen preinstalados y seleccionados con R,
y otros van implcitos en la instalacin de Openair, pero en cualquier caso es recomendable asegurarse debidamente de que tenemos todos instalados y, en la medida de nuestra programacin de trabajo, seleccionados.
En todo caso, conviene indicar que Openair llama a estos paquetes cuando alguna de sus funciones o herramientas va a requerir que se utilicen los mismos. Si no estuviesen instalados nos dar un error y nos indicar el
paquete que debemos bajarnos de Internet e instalar en nuestro equipo.
Una vez instalado lo bsico, el usuario tambin puede optar por instalar, aunque no sera estrictamente necesario, un programa como Rstudio, que proporciona una consola de fcil manejo de R con la que mejorar, simplificar y facilitar el trabajo.
En caso de instalar la Consola de Rstudio, no hace falta iniciar R, pues la consola inicia este lenguaje de programacin de forma automtica, lo que si ser necesario, en todo caso, es llamar a la librera: Openair, tal y como
se ver ms adelante.

Elaborado por Fernando Follos Pliego

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

QU ES R Y COMO FUNCIONA? - CONCEPTOS BSICOS :


R es en s mismo un lenguaje de programacin creado en un entorno pensado para el anlisis estadstico y grfico de datos, siendo un software libre que se distribuye bajo licencia GNU GPL.
R como entorno de programacin se desarrolla mediante libreras (tambin
llamadas en R como paquetes) que lo que hacen es completar el lenguaje
con nuevos desarrollos previstos para distintas reas del anlisis estadstico y grfico de los datos. Por ejemplo, Openair es una de esas libreras,
especficamente diseada para tratar datos de calidad del aire, aunque
existen multitud de libreras para distintas reas de estudio, por lo que conviene visitar la pgina Web de R para ver las mltiples aplicaciones de que
dispone este lenguaje estadstico.

ATENCIN: R y Openair, como


casi cualquier lenguaje de programacin, requieren que se respe-

A efectos prcticos R consiste bsicamente en un lenguaje de programacin para el estudio estadstico de datos que presenta subconjuntos de
lenguaje desarrollados para reas especficas del anlisis de datos, como
en nuestro caso la calidad del aire.

letra puesta al revs en una instruccin o comando y esta deja de funcionar. Las instrucciones contempladas en este manual no estn mal
escritas, sino que respetan escrupulosamente la disposicin de
maysculas y minsculas establecida por el autor en la definicin de
la misma.

As, el lenguaje R es comn para R y Openair, pero el lenguaje de Openair, en muchas de sus instrucciones y comandos, es propio del desarrollo
de Openair, no existiendo previamente para R si no se carga la librera de
Openair.
Como entorno de programacin bsicamente se trata de una consola
(ventana de trabajo) sobre la que se van introduciendo scripts
(instrucciones ms o menos complejas) que se ejecutan sobre los datos
previamente cargados (conjuntos o ventanas de datos).
Los scripts consistirn en una serie de instrucciones modificadas por comandos y variables ejecutadas sobre un conjunto o conjuntos de datos
que, adems, pueden concatenarse introducindose en batera (un script
detrs de otro) o en serie (concatenando un script con otro).
En la consola de R se pueden iniciar distintas sesiones de trabajo
(denominadas reas de trabajo), que podemos grabar para retomar con
posterioridad en el punto que lo dejamos, y sobre las que se van cargando
y guardando no slo los scripts que requerimos a R, sino todas aquellos
paquetes de datos que previamente hemos cargado o ledo, por lo que se
convierte en un entorno de trabajo muy funcional y prctico.
Adems, no slo se pueden guardar las reas de trabajo que vayamos
abriendo con R, sino que tambin podemos guardar las ventanas de datos
como archivos R o los propios scripts que hayamos programado como objetos de R, o incluso las grficas que vayamos generando en formatos grficos totalmente compatibles. Esto aporta una gran versatilidad al programa.
Elaborado por Fernando Follos Pliego

ten escrupulosamente
sus
principios de configuracin y
escritura de comandos, por lo
tanto, habr que prestar especial atencin a que:

Se diferencia entre maysculas y minsculas, una sola

Las variables no numricas definidas por el conjunto de


datos, por Openair o por el usuario,

van entre comillas, y las


numricas van sin entrecomillar.

Los

distintos

comandos

definidos dentro de una instruccin van separados siempre

por comas, y los decimales de los nmeros por


puntos.

La definicin de los comandos de una instruccin se realizar siempre


mediante un signo = y
la disposicin de la variable o variables.

LA PRCTICA
HACE AL EXPERTO, por lo que

En todo caso,

se recomienda que se vaya aprendiendo sobre la marcha en el seguimiento


de este manual y su trasposicin a la
prctica en R paso por paso.

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

IMPORTACION Y EXPORTACIN DE ARCHIVOS DE DATOS :


Importar datos es, por lo general, el primer paso que se debe dar para realizar anlisis de datos con Openair o R.
Importar datos es, de hecho, uno de los factores ms problemticos de R, pues este lenguaje tan slo trabaja
con archivos planos de texto, del tipo .csv, .txt o .dat, y por lo general las bases de datos de calidad del aire se
encuentran en sistemas ms complejos del tipo MySQL, Oracle, etc.
El primer paso es exportar los datos desde la base de datos disponible a un archivo del tipo .txt, en texto plano. En
este caso, si no se dispone de un software especfico para la exportacin de datos a un archivo de este tipo, lo
suyo es hacer una consulta con hoja de clculo o sistema similar, y guardarla como archivo .txt, una vez realizadas
las siguientes operaciones bsicas que se comentan a continuacin:
Disposicin de la informacin: Los datos vendrn en columnas con encabezamientos, disponindose de un
registro que se denomine date que contendr la fecha por la que se regir el conjunto de datos.
La fecha: R considera el apartado fecha como un todo, mientras que la mayora de sistemas de control de la
calidad del aire interpretan la fecha y luego las horas (o cuartohorarios, o diezminutales, etc.). Es recomendable, a pesar de que se podra resolver con posterioridad en la importacin a R la existencia de registros separados (fecha/hora), que la fecha y la hora quedasen incluidas en un slo registro, sumando los
mismos, y que el formato respondiese a un estndar claro definido por el usuario que se viese con posterioridad respetado en R.
Los datos vlidos: R no interpreta flags de calificacin de datos, sino slo datos. Es preciso que el archivo
para exportar datos en dat cuente tan slo con el campo contaminante con los datos vlidos, sin flags ni
mayores complicaciones.
Encabezamientos: los nombres de los campos sern los encabezamiento del archivo y se debern ubicar en
la primera lnea del archivo de exportacin.
Los nombres de los campos: R y Openair son sistemas ingleses, y por lo tanto, si se quiere que las grficas
de Openair se ejecuten de forma automtica, es preciso traducir determinados parmetros del castellano
al ingls (Velocidad del viento (VV) ser entonces Wind Speed (ws)).
Los datos nulos: Dependiendo del sistema de adquisicin de datos que se est utilizando, los datos nulos
pueden aparecer como -9999, nulo, n.a., etc. Esta variada terminologa no es entendida por R que, a
pesar de disponer de herramientas para convertir este tipo de datos, es conveniente que disponga ya de
ellos como un hueco en blanco o con la denominacin NA.
La separacin entre datos: Los datos de cada uno de los campo debern venir separados de alguna forma
para que el sistema los interprete. En este sentido R permite varias combinaciones, aunque es recomendable utilizar el tabulador (pues permite un mejor repaso de los archivos de datos en caso de precisar ser
consultados en bruto).
La calidad de los datos: Es importante garantizar que los datos disponen de una calidad adecuada, para evitar que el tratamiento estadstico de los mismos arroje datos que no se corresponden. Para ello habr que
asegurarse de que el archivo de datos se exporta a partir de datos validados, y que la validacin realizada
de los datos de calidad del aire es la adecuada. Para ello sera recomendable un tratamiento previo de los
datos en funcin de criterios bsicos como la inexistencia de datos nulos, la garanta de que todos los dato
se encuentran dentro del rango lgico de medida, etc.
Una vez que tenemos exportados los datos de calidad del aire que correspondan a un archivo de datos plano, del
tipo .txt, tendremos que importarlos en R, para lo cual disponemos de varias opciones:

La forma ms bsica es leer los datos en R mediante el comando: read.


Para ello, debemos indicar a R la denominacin que vamos a datos al fichero o grupo de datos, utilizando
el comando read para decirle que lea los datos del archivo de texto plano que corresponda.

Elaborado por Fernando Follos Pliego

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. datoscont<read.txt(C:/misdocumentos/Openair/datoscont.txt, header=TRUE,dec=,), donde indicamos a R que los datos de


datoscont se encuentan en la direccin que entrecomillamos, que se trata de un archivo .txt, que dispone de encabezamiento, y cuyas cifras
separan los decimales con comas.

Si llevamos a cabo esta instruccin y el archivo se ha exportado correctamente, en principio, deberamos


de tener ya cargados los datos en nuestro sistema R como una ventana o conjunto de datos. Podemos
comprobarlo utilizando cualquiera de las instrucciones que se comentan en el apartado 3 de este manual,
como por ejemplo head:
Ej. head(datoscont), con esta instruccin deberamos poder ver los encabezados del archivo que acabamos de leer.

Si utilizamos algn tipo de consola para el manejo en R, del tipo Rstudio, la importacin de datos se hace
ms intuitiva, pudiendo acudir a la utilizacin de los cuadros de dilogo que automatizan y resumen el proceso de lectura e importacin de datos. En el caso de Rstudio, por ejemplo, se pueden importar datos
acudiendo al men: Workspace Import Datase From Text File...
Al pulsar sobre este men, se abrir un cuadro de dilogo directamente sobre el directorio de trabajo del
programa para que seleccionemos el archivo de datos .txt que disponga de los datos. Una vez seleccionado el archivo se pulsa en Abrir. En este momento Rstudio abre un segundo cuadro de dilogo en el que le
debemos indicar las variables que caracterizan el archivo .txt:

El nombre que le vamos a dar a los datos en R: Name (se recomienda utilizar un nombre corto y
en minsculas, pues luego se va a escribir en todas las operaciones que se quieran realizar con
esos datos).
Si el archivo dispone o no de encabezamiento: Heading (yes o no).
El tipo de separador que se utiliza entre datos: Separator
El tipo de smbolo que se utiliza para los decimales: Decimal (que evidentemente deber ser
distinto al utilizado como separador)
El tipo de smbolo utilizado para delimitar el texto: Quote

Una vez indicadas las variables al sistema de importacin, es tan sencillo como Aceptar la importacin del
archivo que, de forma automtica aparecer en Rstudio, en su cuadrante de Workspace (normalmente
cuadrante superior derecho), as como en el apartado Source (normalmente cuadrante superior izquierdo), donde se muestra un resumen de los encabezados con las mil primeras lneas.
Una vez importados los datos de contaminacin atmosfrica que queremos, es preciso indicar a R y esencialmente a Openair, cual es el campo que contiene los datos de fecha y qu formato tiene, pues ser este campo el que
utilice como index para la posterior representacin grfica y estudio estadstico de los datos en la mayora de las
funciones a ejecutar. Esto se lleva a cabo mediante la funcin as.POSIXct, que convierte la fecha al formato adecuado para su manejo en R, y la funcin strptime, que le dice a R en qu formato est la fecha que se va a utilizar. Un ejemplo de su uso sera el siguiente:
Ej. datoscont$date < as.POSIXct(strptime(datoscont$date, format = "%d/%m/%Y %H:%M", "GMT")), donde le indicamos a Openair que la fecha
de los datos datoscont$date, se correspondern con la posicin fecha, y con el formato da/mes/ao y hora:minuto "%d/%m/%Y %H:%M", y se
encuentran en GMT, aunque tambin le podemos decir que estn en UTC, si as fuese.

En este sentido, es importante que sigamos un estndar propio a la hora de establecer el formato de la fecha de
los distintos conjuntos, puesto que este parmetro se utilizar muy habitualmente en posteriores instrucciones de
R, y podra complicrsenos la vida si cada conjunto de datos que manejemos est en un formato de fecha y hora
distinto. El formato de fecha, como hemos visto en el prrafo anterior, lo da strptime, y se basar en los siguientes
parmetros bsicos de configuracin que se adjuntan:

Elaborado por Fernando Follos Pliego

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Es importante que, una vez asignada y caracterizada la fecha en el archivo, segn lo especificado hasta el momento, procedamos a comprobarlo en R mediante alguna instruccin del tipo str (ver apartado correspondiente a
las instrucciones bsicas) que nos permita comprobar las caractersticas de los distintos campos del archivo. As,
al ejecutar el comando str antes del formateo de la fecha podemos comprobar que el campo de fecha del archivo
aparece como:
Ej. str(datoscont)
'data.frame': 107376 obs. of 12 variables:
$ date: Factor w/ 107376 levels "01/01/2000 01:00",..: 1 2 3 4 5 6 7 8 9 10 ...

Sin embargo, una vez caracterizado y formateado el campo de fecha date, al ejecutar un str este aparece como
un campo as.POSIXct con formato de fecha, tal y como aparece a continuacin:
Ej. str(datoscont)
'data.frame': 107376 obs. of 12 variables:
$ date: POSIXct, format: "20000101 01:00:00" "20000101 02:00:00"

Si hemos seguido todas las instrucciones previstas en este apartado y hemos sido cuidadosos en nuestro trabajo,
ya podemos empezar a manejar este conjunto de datos en R y Openair sin tener problemas, aunque en primera
instancia sera recomendable realizar una serie de actuaciones encaminadas a comprobar de una forma rpida la
consistencia de los datos que hemos importado, tal y como se ver en apartados posteriores.

Elaborado por Fernando Follos Pliego

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

INSTRUCCIONES BSICAS DE R Y OPENAIR :


Antes de comenzar a trabajar con el lenguaje R y con el paquete Openair debemos saber que este lenguaje funciona con rdenes o instrucciones bsicas que deben ir acompaadas del objeto de la orden entre parntesis, tal y
como se puede empezar a intuir de los pocos ejemplos propuestos hasta ahora. Si no existe objeto siempre debern aparecer los parntesis, aunque sea vacos.
Las instrucciones que demos a R debern incluir, si es preciso, dentro de esos parntesis adems del objeto al
que van dirigidas, las instrucciones vinculadas, comandos o cualquier otra variable que queramos aadir a la instruccin, segn se ir viendo poco a poco en los distintos puntos de ejemplo. De hecho R y Openair son lenguajes
de programacin estadsticos, por lo que poco a poco comprobaremos cmo se pueden ir concatenando instrucciones una con otra para alcanzar lo que buscamos en cada caso.
Esquema bsico de una instruccin en R:
instruccin ( objeto/conjunto datos, comando=variable)

Instrucciones previas al trabajo con archivos y datos.


Se detallan a continuacin una serie de instrucciones bsicas de R y Openair que son de utilidad para el manejo
del lenguaje y de ciertos aspectos bsicos del mismo. Evidentemente, muchas de estas instrucciones ya han sido
simplificadas si utilizamos consolas para el manejo de R como Rstudio.

Llamar a R para que utilice el paquete Openair con nuestros datos: require
Antes de empezar a manejar conjuntos de datos y a iniciar su tratamiento, es preciso indicarle a R la librera con la que vamos a
trabajar, al objeto de que entienda las instrucciones que posteriormente vayamos a cargar. De no llamar a las libreras correspondientes mediante este comando, es seguro que las instrucciones de Openair no funcionarn y tan slo podremos utilizar las genricas de R.
Ej: require(openair), se debe utilizar al comienzo de cualquier sesin de trabajo nueva que se inicie con R, pues de lo contrario no se utiliza
r el paquete Openair y gran parte de las instrucciones no funcionarn. Si trabajamos con algn tipo de interface como Rstudio, la instruc
cin require se puede sustituir por otra instruccin propia, en este caso: library(openair). En cualquier caso, la instruccin require siempre
funcionar en R.

Conocer y cambiar la carpeta de trabajo de Openair: getwd o setwd


R guarda todos sus archivos en una carpeta predeterminada. Si queremos saber la carpeta de la que se trata bastar con utilizar
el comando getwd. Si lo que queremos es establecer nosotros mismos una carpeta, el comando ser setwd.
Ej. getwd(), presentar en la pantalla el directorio de trabajo de R donde se guardan todos los archivos y espacios de trabajo que quera
mos.
Ej. setwd(C:/documentosR), establecer como directorio de trabajo para el guardado de archivos el indicado entre comillas.

Listar el contenido de la carpeta de trabajo de Openair o R: list.files


Ej. list.files(pattern=.txt), presentar un listado de todos los archivos .txt que se presentan en el directorio de trabajo de R. Si queremos
un listado completo, bastar con dejar la instruccin con los parnteis vacos: list.files().

Elaborado por Fernando Follos Pliego

10

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Instrucciones bsicas para el manejo de los conjuntos de datos.


Antes de empezar a utilizar las conjuntos de datos que ya hemos cargado con xito y configurado como autnticos
profesionales, debemos aprender a utilizar una serie de instrucciones que nos sern con posterioridad enormemente tiles a la hora de manejarlos y de sacarles el mximo partido.
En primer lugar es necesario conocer las instrucciones bsicas utilizadas para realizar una primera aproximacin a
los datos que contiene nuestra ventana de datos, de forma que podamos ver encabezados, ver los campos o acceder a una variable concreta de nuestro grupo de datos:

Conocer las variables de las que dispone el conjunto de datos en su encabezamiento: names
Ej: names(datoscont), devuelve el encabezado de todas las variables de que dispone el archivo.

Con la instruccin names podemos tambin cambiar el nombre de las variables para amoldarlo a lo que precisemos.
Ej: names(datoscont)[3] < o3ref, lo que hace es indicarle a la instruccin names que el tercer campo [3] de nuestro conjunto de datos
(datoscont) se pasar a denominar o3ref.

Conocer las variables y ver los primeros datos de una ventana de datos: head
Ej: head(datoscont), devuelve el encabezado del archivo con los seis primeros datos de que dispone el archivo de datos. Similar al anterior
names, pero mostrando los primeros datos del archivo.

Conocer las variables y ver los ltimos datos de un conjunto: tail


Ej: tail(datoscont), devuelve el encabezado del archivo con los seis ltimos datos de que dispone el mismo. Similar al anterior head, pero
mostrando los ltimos datos del archivo. Resulta de especial utilidad si se precisa ver dnde acab una ventana de datos y listar todas las
filas es imposible o muy costoso.

Acceder a una sola variable de un conjunto de datos: $


Ej: summary(datoscont$no2), proporcina el resumen de datos para el parmetro no2 del archivo de datos de datoscont, sin necesidad de
que se muestren los datos del resto de las variables.

Proporcionar la estructura de una ventana de datos: str


Ej. str(datoscont), devuelve en pantalla en lneas cada uno de los campos de un archivo de datos, incluyendo la tipologa de cada uno de
los campos. Similar a la instruccin summary, pero permite de una manera ms gil conocer la estructura y caractersticas de cada campo.
Muy utilizado para comprobar, por ejemplo, la caracterizacin disponible para el campo fecha.

Salvar, cargar o exportar datos previamente importados a R: save, load, write


Ej. save(datoscont, file=datoscont.RData), que lo que hace es salvar los datos cargados previamente en R, segn lo expuesto en el apar
tado2, guardndolos en formato R.
Ej. load(datoscont.RData), que lo que hace es volverlos a cargar desde el fichero de datos guardado.
Ej. write.txt(datoscont.txt, row.names=TRUE), lo que hace es generar un archivo de texto con el conjunto de datos cargado anterior
mente.

Eliminar objetos de un proyecto que no sean de utilidad: rm, remove


Ej: rm(datosconta), elimina el objeto de nuestro proyecto denominado datosconta. Esta funcin, que tambin podemos utilizar como
remove, se utiliza para eliminar objetos que ya no sean de utilidad para nuestro proyecto y permite realizar limpieza en nuestro proyecto
de R evitando que se acumulen los conjuntos de datos u objetos que ya no son de utilidad.

Elaborado por Fernando Follos Pliego

11

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ya hemos visto cmo podemos realizar un manejo en general de los conjuntos o ventanas de datos. No obstante,
antes de comenzar a utilizar instrucciones de mayor complejidad para el manejo y gestin de las ventanas de datos y los propios datos en s mismos, hemos de aclarar ciertos aspectos de la programacin en R y Openair tiles
para complementar y entender determinadas instrucciones y comandos que utilizaremos ms adelante.
Uno de estos aspectos viene dado por la necesidad de indicarle a un comando la variable por la que se puede regir , que depender tanto de las caractersticas de diseo del comando como de la propia variable a la que nos
queramos referir. De esta forma, las variables a disponer que utilizaremos a lo largo del presente manual sern del
siguiente tipo:

Variables para comandos lgicos: TRUE o FALSE


Muchos comandos en R y Openair requieren tan slo ser activados o desactivados, utilizando para ello una variable lgica del
tipo si/no, que se escribir frente al comando utilizando los trminos TRUE o FALSE, segn corresponda. Las variables lgicas
indicadas debern escribirse siempre en maysculas.

Variables numricas simples:


Otros muchos comandos de R y Openair requerirn que se les suministre una variable numrica del tipo que corresponda en
funcin de las unidades a las que se refiera el comando. En estos casos la variable se expresar conforme al nmero que corresponda junto al comando. Por ejemplo, el comando para definir el ngulo angle, requerir que le introduzcamos un nmero
entre 0 y 360 para indicarle el ngulo que deseamos, de la forma angle=45. Es necesario recordar que los decimales se separan de la fraccin entera del nmero utilizando siempre el punto, ya que las comas se reservan en R y Openair para la separacin de los comandos.

Variables de texto o variables string:


Algunos comandos de R y Openair, como aquellos que se refieran a determinados parmetros del conjunto de datos (en el
caso de Openair) o al etiquetado y denominacin de elementos, pueden requerir de la introduccin de una variable en formato
de texto. En estos casos el texto se ubicar siempre frente al comando e incluido siempre entre comillas.

Variables vectoriales o multivariable: c


En ocasiones la variable que requiere un comando es un vector, o lo que es lo mismo, una variable compuesta por dos o ms
variables, pudiendo ser estas numricas o de texto. As, cuando un comando de R precise de la utilizacin de varias variables
para una instruccin concreta, sin, se debe utilizar la instruccin con un c(i,ii,iii,...), siendo c el complemento a la instruccin
que indicar a la misma que tenemos que utilizar las variables que se incluyen entre los parntesis.

Rango de variables a utilizar: :


En ocasiones es preciso indicar a Openair o R que utilice una serie de variables incluidas dentro de un rango de datos conocido. Para ello, el comando deber incluir el inicio y el final del rango separados por dos punto: x:y, donde x ser el mnimo del
rango, e y el mximo. Esta opcin suele ser muy til para seleccionar, por ejemplo, determinadas variables relacionadas con
fechas o parmetros del conjunto de datos.

Variables dentro de una secuencia determinada: seq


En ocasiones puede ser preciso la utilizacin de distintas variables para una misma instruccin o comando, y que estas variables no se correspondan con nmero aleatorios (como en la instruccin c) sino con una secuencia predeterminada, para lo cual
se utilizar el comando o instruccin con un seq(x,y,z)., donde la x ser el mnimo de la secuencia, la y el mximo, y la z el
intervalo a aplicar a la secuencia. Esta opcin puede ser muy til, por ejemplo, para establecer escalas o rangos de datos personalizados.

Elaborado por Fernando Follos Pliego

12

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Despus de precisar las instrucciones para el manejo de los conjuntos o ventanas de datos, y ver cmo se complementan en diversos aspectos las instrucciones y comandos a utilizar, podemos comenzar a profundizar en el
estudio de la aplicacin de instrucciones encaminadas al manejo y gestin de los conjuntos o ventanas de datos.
En primer lugar se debe estudiar cmo proceder a la modificacin de los conjuntos o ventanas de datos, ya sea
para la segregacin del conjunto de datos, para la combinacin de ventanas de datos entre s, generando nuevos
conjuntos de datos con los que poder trabajar, u otras muchas necesidades de modificacin de los conjuntos, tal y
como se puede observar a continuacin.
En estas ocasiones las instrucciones se empiezan a volver ya algo ms complejas y requieren de la inclusin de
comandos y variables propios, o incluso de la ejecucin de otras instrucciones, tal y como veremos progresivamente.

Transponer filas por columnas: t


Es posible que los datos que se nos presenten en muchas ocasiones vengan en una ventana de datos que no se corresponda
con lo que nosotros precisamos para una posterior gestin de los datos porque la seleccin original de filas y columnas no coincida con lo esperado o con lo precisado por el usuario.
Ej. estaciones t(estaciones), donde se coger el fichero de estaciones de control organizado de forma que en los encabezados de columna
aparecen las estaciones y en las filas los datos de caracterizacin de la estacin de control, tales como coordenadas, denominacin y cdigos de
clasificacin, y se le dar la vuelta, poniendo como encabezados de las columnas los distintos datos de caracterizacin y como filas las estacio
nes. Esto puede ser muy til, por ejemplo, para mezclar archivos de datos de varias estaciones con los datos de dichas estaciones (el lector podr
comprobar la utilidad de esta herramienta ms adelante en este mismo manual).

Sobre la base conceptual de esta herramienta, se debe mencionar que existe un paquete en R que se denomina reshape y que
resulta de enorme utilidad para flexibilizar, moldear y agregar datos dentro de las propias ventanas de datos, presentando funciones que van mucho ms all de la propia transposicin de filas por columnas que acabamos de ver.
Con el paquete de reshape se pueden, por ejemplo, fusionar varios campos o columnas de una ventana de datos de forma pasen
a formar parte de un identificador nico que presente en un nico nivel de agregacin, con la funcin melt, agregar los datos que
hayamos obtenido tras la fusin con melt en la forma que considere el usuario, con la funcin cast, condensar una ventana de
datos en funcin del vector de variables que considere el usuario, con la funcin condense.df, o incluso combinar varias funciones en una sola, con la funcin funstofun.
En todo caso, el desarrollo de estas funciones quedar suscrito al inters del lector por el tema, pues el manual debe quedar reducido por imperativo prctico a lo estrictamente necesario para el manejo bsico de los datos de calidad del aire.

Seleccionar una serie de datos de un conjunto de datos: subset


Es posible que queramos seleccionar determinados datos de un conjunto de datos que ya tenemos, ya sea porque, por ejemplo,
queremos ver tan slo determinados datos a altas concentraciones de ciertos parmetros, o porque queremos seleccionar los
datos de un archivo para determinadas fechas. La instruccin subset nos permite hacerlo, pero utilizando para ello diversas opciones:
La primera opcin es indicarle a subset una condicin bsica de seleccin de datos en funcin de un criterio matemtico cualquiera, tal y como se indica en el ejemplo:
Ej. datoscont2 subset(datoscont, o3>100), donde se seleccionan las filas de datos cuyo ozono es superior a 100 microgramos para guardar el
conjunto de datos como datoscont2.

Con la instruccin subset es posible seleccionar los datos hasta por fechas, tal y como se puede ver en el siguiente ejemplo adjunto, sin embargo, el problema es que R y Openair son muy especiales con las fechas, y si bien es posible utilizar esta opcin,
utilizando la opcin %in% para agregar datos definiendo previamente el formato, requiere de la definicin de variables y puede
complicarnos mucho la vida para programar una operacin que, por otro lado, Openair ya nos deja debidamente personalizada a
travs de la instruccin selectByDate, que veremos en breve.

Elaborado por Fernando Follos Pliego

13

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. datoscont2 subset(datoscont, format (date,%Y) %in% 2011), instruccin en la que le decimos a R que haga un subconjunto de datos
del conjunto datoscont, utilizando la fecha en formato ao, y seleccionando tan slo aquellas que tengan como ao el 2011. Todo este sub
conjunto se guarda como un conjunto de datos denominado datoscont2.

Adems de estas opciones, a lo mejor no nos interesa utilizar todos los parmetros del archivo primigenio, por lo que podemos
indicar a subset que seleccione slo algunos para el nuevo archivo con la opcin select.
Ej. datoscont2 subset(datoscont, o3>100, select=c(date, o3, no2, no, sr)), seleccionar los datos indicados en select para aquellos niveles
de ozono que sean superiores a 100 microgramos. Tambin utilizamos aqu la expresin c para la seleccin de varias variables.

Combinar dos conjuntos de datos en uno: merge


Hemos aprendido a dividir un conjunto de datos en varios conjuntos mediante la instruccin subset, pero igual de til puede resultar combinar varios conjuntos de datos en uno slo, lo cual puede resultar de mucha utilidad cuando queremos combinar datos
complementarios (como por ejemplo niveles de calidad del aire con meteorologa) o incluir en un nico conjunto de datos diversas
ubicaciones, etc.
R permite combinar dos conjuntos de datos en uno slo mediante la funcin merge, que lo que hace es juntar en un nico conjunto de datos la lnea del primer grupo de datos con la lnea correspondiente del segundo grupo de datos en funcin de un nexo
comn existente entre los dos conjuntos.
La instruccin merge se podr precisar en sus distintos aspectos a travs de los siguientes comandos:
1-. Se deben establecer los conjuntos de datos a combinar:
Como ya hemos podido comprobar sobradamente, el primer parmetro que aparece en cualquier instruccin de R y Openair es el conjunto de datos sobre el que se quiere aplicar la instruccin. En el caso de merge no podra ser menos, as
que lo primero que se debe indicar a esta funcin son los dos conjuntos de datos que se quieren combinar, x e y, indicando el nombre de cada uno de ellos. La funcin merge slo puede combinar los conjuntos de datos de dos en dos, si quisisemos opciones de combinacin de conjuntos ms elaboradas y flexibles deberamos acudir a libreras R con funciones ms avanzadas como las que veremos de Openair o como las que disponen paquetes como reshape2.
2-. Indicar las columnas de datos que sirven como nexo de unin: by
A la instruccin merge se le pueden indicar las columnas que sirven de nexo de unin para combinar conjuntos de datos.
Si no se le especifica nada, la funcin intentar combinar los conjuntos en funcin de la columna utilizada como ndice,
que ser la fecha date.
Pero se le puede indicar explcitamente el nexo de unin entre conjuntos de datos, para lo cual se utiliza el comando by.
Si el campo es comn para ambos conjuntos, como por ejemplo el campo de fecha date, bastar con indicarle al comando by el nombre del campo que comparten ambos conjuntos by=date. Esta opcin puede ser muy til cuando uno
de los conjuntos, por ejemplo, disponed e datos de distintas ubicaciones y su campo de fechas date tiene por lo tanto
fechas repetidas, obligando a la instruccin merge a realizar un paralelismos total entre fechas.
Tambin podra ocurrir que los campos tuviesen distintas denominaciones, por lo que sera necesario indicar a la instruccin merge el nombre de cada campo.
Ej. datoscontmet merge(datoscont, met, by.datoscont=date, by.met=fecha), mediante esta instruccin estaramos combinando
el conjunto datoscont, con datos de calidad del aire, con el conjunto met, de datos meteorolgicos de una estacin prxima, combinn
dolos en funcin de sus campos de fecha, que tienen distintas denominaciones.

3-. Indicar a la funcin merge qu se hace con las lneas extra: all
Por lo general, dos conjuntos de datos que se combinan entre s no suelen tener correspondencia exacta entre sus lneas. De hecho, es muy comn, y ms en grandes conjuntos de datos, que determinadas lneas de un conjunto no tengan su correspondiente lnea en el otro conjunto. En estos casos, por defecto, lo que hace la instruccin merge es eliminar esta lnea sin correspondencia y no contemplarla en su conjunto de datos final. As, el nuevo conjunto de datos contendr slo aquellas lneas que aparezcan en ambos conjuntos, lo que conlleva inevitablemente la prdida de datos.

Elaborado por Fernando Follos Pliego

14

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Si lo que queremos es conservar, aunque no tenga correspondencia, las lneas de nuestro conjunto de datos, deberemos
usar el comando all, al que le indicaremos el nombre del conjunto del que queremos conservar todas las lneas, para
posteriormente activarlo con TRUE. Si utilizamos el comando all sin establecer ningn nombre de conjunto y lo activsemos con TRUE, conservaramos las lneas de ambos conjuntos, rellenndose los huecos de datos con N.A. para ambos
conjuntos.
Ej. datoscontmet merge(datoscont, met, by.datoscont=date, by.met=fecha, all.datoscont=TRUE), este ejemplo combina nues
tro conjunto datoscont (de calidad del aire), con un conjunto de datos de meteorologa de la zona (met). Con el comando all aplicado a
nuestro conjunto de datos, lo que hacemos es garantizar que no perdemos en la combinacin ninguna lnea de datos de nuestro con
junto, aunque no tenga correspondencia con la meteorologa. No usamos el comando all tambin con el conjunto de datos meteoro
lgicos, porque este es ms extenso temporalmente que el nuestro y aadira datos N.A. que perjudicaran a nuestro rendimientos y
clculos estadsticos.

4-. Utilizar sufijos para identificar las columnas de cada conjunto: suffixes
En ocasiones puede ocurrir que tengamos que combinar dos conjuntos de datos con la misma denominacin de campo,
como por ejemplo en el caso de estar realizando una intercomparacin de datos, en cuyo caso nos podemos encontrar
con un problema de identificacin de campos en el resultado final de merge.
Para ello merge dispone del comando suffixes, que permite aadir sufijos a los campos de cada conjunto de datos, pudiendo as diferenciarlos en el conjunto final.
Ej. datoscontref merge(datoscont, ref, by=date, all.datoscont=TRUE, suffixes=c(est, ref)), donde estaremos combinando
los datos de nuestra estacin con un conjunto de datos de una unidad mvil de referencia utilizada frente a nuestra estacin, obte
niendo como resultado final nuestro propios datos, por ejemplo no2est, frente a los mismos datos de la estacin de referencia
no2ref.

Combinar conjuntos de datos por filas: rbind.fill


La funcin merge es una versin muy mejorada de otra funcin bsica en R cbind, que permite combinar los archivos de datos por
columnas, siempre y cuando compartan el mismo nmero de filas, razn por la que este manual no profundiza en dicha instruccin de R. Sin embargo, Openair no tiene previstas funciones o herramientas para combinar conjuntos de datos por filas.
Esta opcin de combinacin, donde se quieren juntar dos conjuntos de datos agregando filas en funcin de las variables disponibles (columnas) es, sin embargo, extraordinariamente til y necesaria en calidad del aire para, por ejemplo, agregar conjuntos de
datos previamente desagregados de la misma estacin, o unir los datos obtenidos de ciertos parmetros para diversas ubicaciones con el objeto de realizar un estudio espacial de la distribucin de la contaminacin (ver uso de funciones como GoogleMapsPlot que veremos ms adelante).
R prev la utilizacin de este modelo de combinacin mediante el comando rbind (row bind), que funciona de igual manera que
cbind (column bind), y que podemos utilizar para combinar conjuntos de datos por filas. Sin embargo esta combinacin requiere
que los conjuntos tengan el mismo nmero de columnas (mismo nmero de variables a combinar) y que se presenten en el mismo orden.
El Paquete de R plyr ampla esta herramienta mediante la funcin rbind.fill, que mejora la anterior funcin proporcionndole mayor
velocidad y versatilidad ya que:

Tiene en cuenta en la combinacin el nombre de las columnas de cada uno de los archivos de datos, de forma que garantiza que las filas se combinan correctamente aun cuando las variables de los distintos archivos no se encuentren en el
mismo orden.
Rellena en las filas aquellos campos de datos que no disponen de variable a la hora de realizar la combinacin de conjuntos, utilizando para ello la denominacin NA.
Permite una ejecucin rpida, sencilla y segura de la combinacin que se pretende realizar.
Ej. datoscont rbind.fill(datoscont1, datoscont2) se tratara en este caso de la combinacin ms sencilla a utilizar con esta funcin,
donde estaremos combinando dos conjuntos de datos datoscont1 y datoscont2, dando lugar al siguiente resultado:
Supongamos que el primer conjunto de datos dispone de 380 obs (380 filas de datos) y 4 variables (4 columnas: date, pm10, so2, o3),
mientras que el segundo conjunto de datos dispone de 430 obs (430 filas de datos) y 6 variables (6 columnas: date, pm10, so2,
nh3,03,no2). El conjunto final datoscont se construir sobre la base del primer conjunto de datos dispuesto, rellenandolo en funcin
del segundo, por lo que el resultado final ser que datoscont dispondr de 810 obs(810 filas de datos) y 6 variables (6 columnas:
date, pm10, so2,o3,nh3,no2).

Elaborado por Fernando Follos Pliego

15

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. datoscont rbind.fill( datoscont1 [c(date,o3], datoscont2 [c(date,o3]) se tratara en este caso de una combinacin algo
ms compleja a utilizar con esta funcin, donde estaremos combinando dos conjuntos de datos datoscont1 y datoscont2, pero tan
slo seleccionando de ambos dos conjuntos las columnas correspondientes a la fecha y los datos del ozono, todo ello dentro de la
propia funcin.

Clasificar los datos: cutData


Esta instruccin, propia de Openair, permite clasificar los datos de un conjunto de datos agregando un nuevo campo clasificatorio
que permitir cortar los datos en funcin de la clasificacin seleccionada, de forma que sea posible caracterizar y clasificar los
datos en distintas particiones.
Si bien es una funcin que normalmente se integra en las propias funciones y grficas de Openair, mediante el comando type que
veremos ms adelante, puede ser muy interesante conocerla de manera particular para personalizar y precisar, si as fuese conveniente, su manejo.
Por otro lado, normalmente se suele ejecutar esta funcin sobre el propio conjunto de datos, pues lo que suele hacer la misma es
aadir un nuevo campo de datos (salvo que se seleccione como criterio un campo del propio conjunto de datos). Pero al igual que
en otras funciones de R y Openair, es posible indicarle al programa que la ejecute para la generacin de un nuevo conjunto de
datos, indicando tan slo el nuevo nombre que queramos darle: datoscont_nuevo <- cutData(... )
La instruccin cutData se complementa con distintos comandos que nos permiten caracterizar la tipologa de clasificacin que
queremos, entre los que encontraremos como ms tiles los siguientes:
1-. El tipo de clasificacin que queremos para el conjunto de datos: type
Mediante este comando complementario podremos decirle a R si queremos que la funcin cutData clasifique los datos
en base a las estaciones del ao season, los das de la semana weekday, los aos year, las horas hour, los fines
de semana weekend, las horas de luz daylight, los meses month, etc.
Ej. datoscont cutData(datoscont, type=season), al indicar al programa que el tipo de clasificacin que se requiere es por estacin,
type=season, lo que se har es aadir al paquete de datos datoscont un campo que se denomina season y que, en funcin de la
fecha, establecer cuatro clasificaciones de estacin para cada lnea de datos: primavera, verano, otoo e invierno.

La clasificacin tambin puede llevarse a cabo sobre un campo de datos existente del conjunto de datos, como por
ejemplo el ozono, indicando en el tipo de clasificacin el nombre del campo de datos, lo que modificar el campo de
datos sustituyendo los datos existentes en funcin de una clasificacin por defecto de los mismos en cuatro cuartiles en
funcin del rango en el que se muevan los datos.
Ej. datoscont cutData(datoscont, type=o3), al indicar al programa que el tipo de clasificacin que se requiere es en funcin del
campo de ozono, lo que hace Openair es dividir en cuatro cuartiles los datos en funcin del rango de datos y del percentil que corres
ponda.

2-. El hemisferio en el que nos encontramos: hemisphere


Dado que determinadas clasificaciones de los datos pueden venir condicionadas por el hemisferio en el que nos encontremos, como por ejemplo las estaciones. Openair prev la utilizacin por defecto del hemisferio norte, y si queremos
utilizar el sur habr que indicrselo con la instruccin aadida: hemisphere=southern.
3-. El nmero de particiones que se desea hacer de los datos: n.levels
Es posible indicar a la funcin cutData el nmero de niveles que deseamos utilizar para una clasificacin determinada
de datos, especialmente til cuando se trata de un campo de datos del propio conjunto de datos y deseamos que los
cuantiles sean distintos a los predeterminados cuatro cuartiles.
Ej. datoscont cutData(datoscont, type=o3, n.levels=10), al indicar al programa que el tipo de clasificacin que se requiere es en
funcin del campo de ozono, y que los niveles a utilizar ser de 10 cuantiles, por lo que Openair dividir en diez cuantiles los datos de
ozono en funcin de los percentiles

Elaborado por Fernando Follos Pliego

16

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
Esta instruccin, propia de Openair, permite clasificar los datos de un conjunto de datos agregando un nuevo campo clasificatorio
que permitir cortar los datos en funcin de la clasificacin seleccionada, de forma que sea posible caracterizar y clasificar los
datos en distintas particiones.
Si bien es una funcin que normalmente se integra en las propias funciones y grficas de Openair, mediante comandos como
type, puede ser muy interesante conocerla de forma individual para el manejo de los datos, sobretodo si se quiere hacer de una
forma ms personalizada y/o precisa que lo previsto de forma individual en las distintas funciones de Openair.

Seleccionar datos en funcin de la fecha: selectByDate


Openair permite, mediante la instruccin selectByDate, escoger una serie de datos de un conjunto determinado existente indicando a la instruccin uno o varios criterios de seleccin relacionados con el campo de fecha, permitiendo multitud de combinaciones
distintas.
Esto convierte a esta instruccin en una de las ms necesarias y verstiles para su utilizacin, tanto de forma individual, como en
combinacin con otras instrucciones grficas o de clculo, ya que puede utilizarse para seleccionar uno o varios aos, aos y
meses, das, horas, o incluso en rango de fechas concreto, todo ello combinando uno o varios de los siguientes comandos:
1-. Seleccionar datos en un rango determinado: start y/o end
Los comandos start y end permiten indicar a la instruccin las fechas de inicio y final del rango de datos que se desea
seleccionar. Es importante tener en cuenta el formato en el que se encuentra la fecha del conjunto de datos que vamos
a seleccionar.
Ej. datoscont10 selectByDate(datoscont, start=15/01/2010, end=30/03/2010), mediante esta instruccin estamos creando un
nuevo conjunto de datos procedente del conjunto previamente existente datoscont, que contendr tan slo aquellos datos que vayan
del da 15 de enero de 2010 al 30 de enero de 2010.

2-. Seleccionar datos para un ao en concreto: year


El comando year permite indicarle a la instruccin el ao o aos que queremos seleccionar del conjunto de datos.
Ej. datoscont10 selectByDate(datoscont, year=2010), mediante esta instruccin estamos creando un nuevo conjunto de datos
procedente del conjunto previamente existente datoscont, que contendr tan slo aquellos datos que sean del ao 2010.

3-. Seleccionar datos para un mes en concreto: month


El comando month permite indicarle a la instruccin el mes o meses que queremos seleccionar del conjunto de datos,
pudiendo para ello utilizar el nombre del mes, su abreviatura o el nmero de orden del mismo. En caso de utilizar el
nombre del mes, este se introducir teniendo en cuenta el paquete de idioma que se haya seleccionado para instalar R
o la consola que estemos utilizando.
Ej. datoscont10 selectByDate(datoscont, year=2010, month=c(3,5,7)), mediante esta instruccin estamos creando un nuevo con
junto de datos prodecente del conjunto datoscont, que contendr tan slo aquellos datos que sean del ao 2010 y de los meses de
marzo, mayo y julio.

4-. Seleccionar datos para determinados das: day


Tambin se pueden seleccionar los das para los que se quieren extraer los datos indicando a la instruccin el da de la
semana que se desea (Lunes, Martes, etc) para lo cual habr que tener tambin en cuenta el paquete de idioma que se
haya seleccionado para instalar R o la consola de trabajo, o solicitndole que seleccione los das laborales de la semana weekday (de lunes a viernes) o los das del fin de semana weekend (sbado y domingo), lo que resulta muy til
por ejemplo para estudiar escenarios de afeccin por trfico rodado.
Ej. datoscont10 selectByDate(datoscont, year=2010, day=weekend), mediante esta instruccin estamos creando un nuevo con
junto de datos procedente del conjunto datoscont, que contendr tan slo aquellos datos que sean del ao 2010 y que se correspon
dan con fines de semana, lo que permitir conocer los niveles de contaminacin bsicos existentes en dicha estacin de inmisin sin la
influencia del trfico rodado propio de los das laborales.

Elaborado por Fernando Follos Pliego

17

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

5-. Seleccionar datos para determinados horas del da: hour


Por ltimo, la instruccin selectByDate permite seleccionar una o varias horas mediante el comando hour, al cual le
indicaremos la hora o las horas en concreto a seleccionar, entre 0 y 23, o lo que es ms til todava, un rango de horas
determinado, tal y como se muestra en el ejemplo.
Ej. datoscont10 selectByDate(datoscont, year=2010, day=weekday, hour=6:11), mediante esta instruccin estamos creando un
nuevo conjunto de datos procedente del conjunto datoscont, que contendr tan slo aquellos datos que sean del ao 2010, que se
produzcan los das laborales, y dentro de las 06:00 am y las 11:00 am, momento en el que el trfico rodado es previsiblemente mayor.

Clasificar los datos en funcin de la fecha: splitByDate


De similar manera a como funciona cutData, y con el espritu de la instruccin selectByDate, surge la funcin splitByDate, que
divide un conjunto de datos en funcin del criterio definido por el usuario pero, en este caso, slo sobre el campo principal de la
fecha date y adoptando esta como una variable ms para crear un nuevo campo clasificatorio definido por el usuario.
De esta forma, con la instruccin splitByDate se agregar un nuevo campo clasificatorio al conjunto de datos de que disponemos,
que permitir caracterizar y clasificar los datos en funcin del criterio temporal y la definicin dada por el usuario. Desde el punto
de vista prctico se puede decir que la funcin splitByDate nos evita tener que estar realizando subconjuntos de datos, con la
funcin selectByDate, para obtener escenarios temporales conocidos, permitiendo mantener la integridad del conjunto de datos
durante su estudio, lo cual puede resultar muy til para la posterior aplicacin de instrucciones grficas de Openair como TaylorDiagram.
Para ejecutar la instruccin splitByDate se dispone de los siguientes comandos:
1-. Establecer las fechas en las que se produce la particin: dates
Es preciso indicar al programa la fecha o fechas en las que se debe realizar la particin de los datos para su caracterizacin. Es importante recordar que una sola fecha dispuesta generar dos subconjuntos de datos que habr que definir
con posterioridad, dos fechas generarn a su vez tres subconjuntos, y as sucesivamente.
2-. Establecer las etiquetas que definirn los subconjuntos: labels
Al establecer fechas como puntos de corte iremos estableciendo tambin subconjuntos de datos que deberemos definirle a la funcin para que los etiquete dentro del nuevo campo que se crear en el conjunto de datos original. Esto se
consigue mediante el comando labels, al que se le indicarn las etiquetas a utilizar en el nuevo campo, como por ejemplo: labels=c(antes,despues).
3-. Personalizar el nombre del nuevo campo: name
Ya hemos comentado que la instruccin splitByDate no divide realmente el conjunto de datos, sino que caracteriza el
mismo al aadir un nuevo campo que subdivide los datos en subconjuntos en funcin de las etiquetas designadas. En
este sentido, es necesario indicarle a la instruccin el nombre que deseamos asignar a ese nuevo campo, de lo contrario la funcin dispondr el nombre por defecto de split.by.
A modo de ejemplo, imaginemos que para un histrico de datos disponible de una estacin de control dada, queremos comprobar
cmo ha afectado a la calidad del aire de la zona la construccin de una circunvalacin prxima a dicha estacin. Sabemos que la
circunvalacin , por ejemplo, estuvo en obras entre el 15 de junio de 2005 y el 23 de octubre de 2007, momento en el que fue
inaugurada y puesta en funcionamiento.
Una opcin posible sera utilizar la instruccin selectByDate para dividir el conjunto de datos y seleccionar tres subconjuntos nuevos de datos que deberamos estudiar de manera individual, lo que triplicara el trabajo de evaluacin de los datos.
La opcin ms viable sera utilizar la instruccin splitByDate, segn se muestra en el siguiente ejemplo, de forma que tendremos
siempre el mismo conjunto de datos pero con un nuevo campo que nos servir con posterioridad para evaluar la calidad del aire
con una nica funcin pero generando varias grficas, utilizando el comando type, que veremos ms adelante.
El ejemplo que acabamos de comentar adoptara la siguiente lnea de comandos:

18

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. datoscontsplit < splitByDate (datoscont, dates=c(15/06/2005,23/10/2007), labels=c(antes,durante,despus), na


me=carretera), generar conjunto de datos nuevo con un nuevo campo, en el que se dispondrn tres variables de texto, la variable
antes, para todas aquellas fechas que sean anteriores al 15/06/2005 y que establecern los niveles de base de calidad del aire existen
tes con anterioridad a la construccin de la circunvalacin; la variable durante, para aquellos datos entre el 15 de junio de 2005 y el 23
de octubre de 2007, fechas en las que se estuvo construyendo la circunvalacin, por lo que los niveles de inmisin pudieron estar afecta
dos por estos trabajos de construccin y movimiento de tierras; y la variable despus , para todas aquellas fechas posteriores al 23 de
octubre de 2007 y que definen el nuevo perfil de calidad del aire para la estacin de control, seguramente ahora incluyendo una nueva
fuente de origen de la contaminacin, caracterizada por el incremento en el trfico rodado fruto de la nueva circunvalacin.

Seleccionar datos en funcin del valor lmite de un contaminante: selectRunning


Parecida a la instruccin subset que hemos visto anteriormente, la instruccin selectRunning selecciona rangos de datos de un
conjunto de datos existente en funcin de la superacin de un valor de concentracin establecido para un contaminante dato y
durante un tiempo determinado. Visto de otra forma, esta instruccin proporciona la herramienta precisa para extraer escenarios
de calidad del aire cuando se supera el valor lmite establecido para un contaminante especfico.
As, esta instruccin de Openair se convierte en una herramienta muy til y potente para el anlisis de escenarios concretos de
contaminacin atmosfrica, tales como la superacin de umbrales de informacin o alerta, especialmente cuando esta informacin se combina con herramientas grficas de anlisis de datos como polarPlot.
La instruccin selectRunning requiere de los siguientes comandos bsicos:
1-. Seleccionar el contaminante que regir el criterio de seleccin: pollutant
Se debe indicar a la instruccin el contaminante que se regir el criterio de seleccin y sobre el que se impondr un
valor lmite para seleccionar el conjunto de datos.
2-. Seleccionar el valor lmite a aplicar al contaminante: threshold
Se deber indicar a la funcin el valor lmite a aplicar para seleccionar el conjunto de datos que queremos, de forma que
se seleccionen aquellos datos del conjunto cuya concentracin del contaminante indicado est por encima del valor
seleccionado.
3-. Nmero de datos contiguos por encima del valor lmite: run.len
De forma opcional se puede indicar a la instruccin el nmero de datos que debern superar de forma continuada el
valor lmite indicado. As, la funcin buscar aquellos periodos de la longitud indicada en run.len en los que todos sus
datos superan el valor lmite establecido en threshold.
Ej. episodiocont selectRunning(datoscont, pollutant=o3, threshold=120, run.len=5), mediante esta instruccin estamos creando
un subconjunto de datos denominado episodiocont en el que se incluirn todos aquellos datos de datoscont que durante cinco horas
consecutivas superen el valor de 120 g/m3, lo que supone una situacin de altos niveles de ozono, normalmente asimilada a una
posterior superacin de los umbrales de informacin o alerta.

Elaborado por Fernando Follos Pliego

19

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Instrucciones bsicas para el manejo de los datos.


Hasta ahora hemos hablado slo del procesado y gestin de ventanas y conjuntos de datos, pero se debe destacar que la gestin de datos en R se realiza tambin a travs de funciones. Funciones que se aplican sobre los distintos elementos de R, tales como variables, conjuntos de datos, vectores, etc. y que pueden arrojar sus resultados
sobre la propia consola de R, o formar parte de una instruccin ms compleja con la que incluso se puede terminar
generando un nuevo archivo o modificando uno existente. En este punto, el potencial de R se muestra en la capacidad del usuario para combinar y resolver sus necesidades en funcin de las herramientas dispuestas.
R dispone de multitud de funciones previstas con las que es posible proceder al tratamiento, manejo y procesado
de los datos, ya sea para hacer clculos matemticos bsicos, modificar o recalcular los datos, o para hacer estudios estadsticos de los mismos ms complejos. Evidentemente el objeto de este manual no es tratar todas estas
funciones, aunque s que se realizar un repaso por aquellas que se considera de mayor utilidad para el tcnico
especialista en calidad del aire, desde las ms genricas hasta las funciones propias de Openair para la gestin
especfica de datos de calidad del aire.
Comenzaremos el estudio en este sentido realizando un recorrido rpido pero completo, yendo desde los operadores ms primarios hasta las funciones ms complejas, pasando por las instrucciones bsicas de R para el control y
manejo de datos que nos proporcionarn la base fundamental para entender y desarrollar con posterioridad nuestro trabajo, para finalizar con las funciones propias personalizadas por Openair para el manejo de datos de calidad
del aire.

Operadores de R para el manejo de datos:


Antes de hablar incluso de funciones de R para la gestin de datos, debemos hablar de operadores. Los operadores son smbolos
que utiliza el sistema para trabajar con las variables y se corresponden con los normalmente utilizados en otros mbitos de programacin. R dispone de operadores lgicos y aritmticos, segn se expone en la siguiente tabla:
Operadores Aritmticos en R

Suma

<

Resta

<=

Menor o igual que

>=

Mayor o igual que

Multiplicacin

==

Exactamente igual a

!=

Distinto a

Divisin

X|Y

XoY

^ o **

Operadores Lgicos en R
Menor que

>

X&Y

Mayor que

XeY

Exponente

Estructuras de control de datos:


Como cualquier lenguaje de programacin, R dispone tambin de estructuras de control de datos que permiten modificar el flujo
de ejecucin que tengan las instrucciones que le queramos dar, entre estas estructuras podemos encontrar funciones condicionales de gran utilidad para el manejo de los datos de calidad del aire como:
1-. Estructura condicional SI: ifelse
Si (IF) ocurre la condicin, sucede algo, y si no ocurre la condicin (ELSE) sucede otra cosa, siguiendo la siguiente estructura de programacin: ifelse ( condicin de entrada, salida si es cierto, salida si es falso)
2-. Estructura condicional MIENTRAS QUE: while
Ejecuta una instruccin Mientras que (while) se produzca una condicin, siguiendo la siguiente estructura de programacin: while ( condicin de entrada) funcin o expresin de salida

Elaborado por Fernando Follos Pliego

20

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
Adems de las expuestas R cuenta con otras estructuras para el control del flujo entre las que podemos encontrar las funciones
for, que ejecuta una expresin el nmero de veces que le indique el usuario, las funciones if e if - else, derivadas de la vista anteriormente, la funcin repeat, para repetir una funcin o expresin, o la funcin switch, que evala una expresin dada para escoger entre una serie de alternativas o argumentos dados. Adems de las funciones break, que interrumpe un cualquier bucle dado
por las funciones for, repeat o while, o la funcin next, que pasa a la siguiente instruccin.

Funciones matemticas bsicas de R para la gestin de datos de Calidad del Aire:


R, tal y como se ha visto en anteriores captulos, es un lenguaje de programacin y gestin de datos estadstico, por lo que entre
sus mltiples e innumerables instrucciones cuenta con todo tipo de funciones matemticas a aplicar a variables numricas o conjuntos de datos en s mismos, entre las cuales se cuentan algunas tan bsicas y fundamentales como:
1-. La suma de un conjunto de datos: sum
Ej. sum(datoscont$r, na.rm=TRUE), devolver la suma de nuestros datos de lluvia para el conjunto de datos datoscont, aunque debemos
recordar siempre que en la frmula se debe indicar que se eliminen del clculo los datos nulos.
Si lo que se quiere es sumar variables numricas directamente, R contempla, tal y como hemos visto antes, el uso de operadores aritm
ticos, lo que facilita la programacin de frmulas para la realizacin de operaciones com

2-. El clculo de la raz cuadrada: sqrt


Ej. sqrt(568516), calcular la raz cuadrada del dato indicado, que en nuestro caso ser
754. La operacin se puede llevar a cabo, como siempre sobre una variable o sobre un
conjunto de variables, o incluso como parte de un clculo ms complejo como, por ejem
plo, el error cuadrtico medio.

3-. El clculo de logaritmos: log , log10


Ej. log(300), calcula el logaritmo de la cifra dada, en nuestro caso 300.

4-. El clculo de la funcin exponencial: exp


Ej. exp(5.703782), calcula la funcin exponencial del nmero dado. Cuyo resultado ser
seguramente 300.

Funciones estadsticas bsicas de R para la gestin de datos:


Adems de las funciones matemticas vistas hasta el momento, R dispone de innumerables funciones estadsticas para el estudio y tratamiento de los datos, desde la media
ms sencilla, con la funcin mean, hasta el tratamiento estadstico ms complejo que
nos podamos imaginar. Algunas de estas herramientas estadsticas bsicas que nos
podran resultar de utilidad en calidad del aire son:
1-. La media de los datos: mean
Ej. mean(datoscont$pm10, na.rm=TRUE), devolver la media de del total de los datos de
partculas PM10 disponible para nuestro conjunto de datos, obviando los datos nulos NA.

2-. Los mximos y mnimos de los datos: max, min


Ej. max(datoscont$pm10, na.rm=TRUE), devolver el mximo valor del total de los datos de
partculas PM10 disponible para nuestro conjunto de datos, obviando los datos nulos NA.

3-. Los cuantiles de los datos: quantile


Ej. quantile(datoscont$pm10, na.rm=TRUE), devolver los cuartiles propios del conjunto de
datos 0% (mnimo), 25%, 50% (mediana), 75% y 100% (mximo).
Ej. quantile(datoscont$pm10, c(.30, .45, .62, .995) , na.rm=TRUE), devolver los cuantiles
personalizados ahora s por el usuario para el 30%, el 45%, el 62% y el 99.5%. Como veremos
ms adelante, Openair dispone de sus herramientas propias para ejecutar esta instruccin
tan til y necesaria en Calidad del Aire.

Elaborado por Fernando Follos Pliego

ATENCIN: R no puede
tratar matemtica ni estadsticamente aquellos
conjuntos de datos que
contengan datos nulos en
alguno de sus puntos
(datos NA), hecho este
que se da tambin para
alguna que otra funcin
de Openair.
Este hecho puede evitarse, en casi todas las ocasiones, indicando a la
funcin que no tenga en
cuenta estos datos dentro
del clculo que se le indique, con la instruccin
na.rm=TRUE.
No obstante, puede resultar tedioso tener que introducir siempre este comando en cada una de las
funciones que le vayamos
indicando a R, por lo que
en ocasiones es recomendable solicitar a R que
elimine del conjunto de
datos aquellas datos que
se muestre como nulos,
con la funcin na.omit
que veremos ms adelante, de forma previa a su
tratamiento estadstico.

21

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
4-. La mediana de los datos: median
Ej. median(datoscont$pm10, na.rm=TRUE) devolver la mediana de las partculas PM10 registradas en nuestro conjunto de datos.

5-. La desviacin estndar encontrada en los datos: sd


Ej. sd(datoscont$pm10, na.rm=TRUE) devolver la desviacin estandar de las partculas PM10 registradas en nuestro conjunto de datos.

6-. La varianza: var


Ej. var(datoscont$o3, na.rm=TRUE) devolver la varianza del ozono registrado en nuestro conjunto de datos.

7-. La desviacin media absoluta: mad


Ej. mad(datoscont$o3, na.rm=TRUE) devolver la desviacin media absoluta del ozono registrado en nuestro conjunto de datos.

Hemos visto alguno de los estadsticos bsicos de R, pero este lenguaje dispone tambin de paquetes de clculo estadstico de
enorme utilidad que nos sirven para calcular varios estadsticos a la vez, tales como:
8-. Calcular el rango en el que se mueven los datos: range
Ej. range(datoscont$pm10, na.rm=TRUE), calcula el rango en el que se mueven los datos de PM10 de nuestro conjunto de datos o, lo
que es lo mismo, devuelve el mnimo y el mximo en un mismo clculo.

9-. Devolver un resumen estadstico de los datos de nuestro conjunto: summary


Ej. summary(datoscont), devolver un resumen donde aparecen los mnimos, mximos, cuartiles, medianas y datos en blanco o datos
NA de cada uno de los parmetros de que dispone la tabla, lo que resulta muy til para hacer una primera comprobacin de los datos
que hemos importado y disponer de una primera visin general y rpida de nuestro conjunto de datos.
Esta funcin no requiere que se le eliminen los datos nulos NA, evidentemente.

Otras funciones bsicas de R de inters:


Pero es que R es algo ms que funciones matemticas, lgicas o estadsticas, y permite llevar a cabo funciones adicionales de
gran utilidad para el manejo de los datos de calidad del aire como son:
1-. Redondear una variable numrica o serie de datos a unos decimales establecidos: round
Ej. datoscont$o3 < round (datoscont$o3, digits=1), redondear nuestros datos de ozono a un solo decimal, sustituyendo los datos de
ozono actuales del conjunto datoscont por datos de ozono debidamente redondeados. Si no se dispone de dgitos, el redondeo es al

2-. Limitar una variable numrica o serie de datos a un nmero de dgitos significativos: signif
Ej. signif (1348.75, digits=3), redondea la cifra dada a los tres dgitos significativos datos, por lo que su resultado final ser de 1350.

3-. Eliminar las filas con datos nulos o designados como NA: na.omit
Tal y como hemos visto anteriormente, los datos nulos o NA pueden perjudicar a la realizacin de clculos estadsticos y
matemticos, por lo que en ocasiones puede resultar til omitir estos datos de nuestro conjunto de datos, de forma previa
a su tratamiento matemtico, mediante la instruccin na.omit, que eliminar aquellas filas que contengan esta expresin
NA.
No obstante, se debe recordar que los datos nulos son tambin caractersticos de los conjuntos de datos de calidad del
aire, entrando a formar parte incluso de su caracterizacin estadstica, pues se precisan tambin para el clculo de los
rendimientos de los equipos de medicin, por lo que es preciso recordar al usuario que su eliminacin del conjunto de
datos se debera hacer siempre con cautela y tomando las debidas precauciones, por lo que se recomienda que cuando
se lleve a cabo se haga generando un nuevo conjunto de datos, tal y como se propone en el siguiente ejemplo.
Ej. datoscontsin < na.omit(datoscont), elimina las filas con datos NA del conjunto de datos, guardando los resultados en un nuevo con
junto de datos denominado datoscontsin.

Elaborado por Fernando Follos Pliego

22

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
4-. Agregar los datos realizando un clculo estadstico determinado: aggregate
Con R es posible agregar los datos de un conjunto usando variables que funcionen como listas y que nos permitan agruparlas, con el comando by, as como indicando a la funcin aggregate la funcin matemtica o estadstica que queremos
aplicar para agregar el dato, con el comando FUN.
Si bien esta funcin puede resultar de enorme utilidad para la gestin de los datos, se debe recordar al lector que Openair
dispone de herramientas de sencilla ejecucin que podran solventar mucho mejor las necesidades de agregacin de
datos de calidad del aire, tales como timeAverage, que veremos ms adelante.
Ej. datoscontsup < aggregate( datoscont, by=list(datoscont$superacion), FUN=mean, na.rm=TRUE), habiendo creado antes un campo
en nuestro conjunto de datos denominado superacin compuesto por las variables Superacin y No superacin que caracterizan el
hecho de que la concentracin de PM10 sea mayor o menor de 50 g/m3, lo que conseguimos a continuacin es calcular la media de
todos los parmetros de nuestro conjunto para dos situaciones concretas, que se superen o que no se superen las partculas, lo cual
puede ser de gran utilidad.

Podemos comprobar que con la combinacin de las instrucciones y funciones vistas hasta el momento, se pueden
llevar a cabo multitud de operaciones para la gestin de los datos, tal y como se expone a continuacin a modo de
ejemplo para el tratamiento de conjuntos de datos de calidad del aire:
1-. Crear nuevas variables a partir de otras existentes aplicando funciones:
La combinacin de las tcnicas de clculo matemtico, gestin de datos y creacin de variables, permite forzar la creacin
de nuevas variables en nuestro conjunto de datos
Ej. datoscont$nox < round( (datoscont$no2 + ( datoscont$no * 1.5333 )), digits=1), , genera un nuevo campo en nuestro conjunto de
datos que denomina nox, donde se dispondrn los datos calculados de NOx (como NO2) a partir de los datos empricos disponibles para
NO2 y NO de nuestra estacin de control, , produciendo adems al redondeo del dato obtenido, lo cual puede resultar de enorme utili
dad para el estudio posterior de los datos de xidos de nitrgeno.

2-. Crear nuevas variables para clasificar los datos de un conjunto:


De manera similar a como se generaban los subconjuntos con la instruccin splitByDate de Openair que hemos visto en el
apartado anterior, en la que se utilizaba la fecha para seccionar los datos de un conjunto y crear subconjuntos, el usuario
puede crear sus propios subconjuntos seleccionando los datos que quiera, tan slo disponiendo una serie de instrucciones de decisin del tipo ifelse en la lnea de cdigo, tal y como se muestra a continuacin:
Ej. datoscont$ICAo3 < ifelse (datoscont$o3 >120, c(Calidad Mala), ifelse (datoscont$o3 > 80, c(Calidad Normal), c(Calidad Bue
na))), , genera un nuevo campo en nuestro conjunto de datos que denomina ICAo3, en el cual establece una triple clasificacin utilizan
do un blucle ifelse. De esta forma, los datos horarios de ozono se clasifican como un ndice de calidad del aire que establece la Calidad
como Mala, Normal o Buena.

Despus de esta pequea introduccin sobre cmo se puede operar con los datos en R, que el lector deber perdonar por su brevedad, se debe indicar que Openair tienen previstas funciones especficas encaminadas al procesado y tratamiento especfico de los datos y campos de datos que nos pueden resultar de enorme utilidad para el
manejo y gestin de datos de calidad del aire, muchas ellas orientadas a los clculos especficos para la demostracin del cumplimiento de valores lmite, umbrales y objetivos legales, y entre las que podemos encontrar las
siguientes:

Clculo de la media mvil de un parmetro: rollingMean


La media mvil de un parmetro contaminante es til por cuanto que su clculo ayuda a suavizar la representacin grfica del
mismo, aproxima los datos de concentracin obtenidos a los lmites de exposicin establecidos cientficamente, y adems, en el
caso de la normativa sobre calidad del aire, porque es requerida como estadstico para el estudio de algunos contaminantes como
el ozono o las partculas.
La instruccin rollingMean aplicada a un conjunto de datos determinado no modifica ningn campo, sino que genera una variable
nueva en el conjunto de datos a la que se le asigna la media mvil calculada para el parmetro designado.

Elaborado por Fernando Follos Pliego

23

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
Esta media mvil es un parmetro muy utilizado por la normativa aplicable para fijar valores lmite y objetivo de parmetros como
el ozono o el CO, por lo que ser de enorme utilidad a la hora de tratar grandes series de datos para el clculo de este estadstico.
La instruccin rollingMean requiere para su ejecucin de la introduccin de los siguientes comandos:
1-. Seleccionar el contaminante sobre el que se calcular la media mvil: pollutant
Ser necesario indicar a la instruccin qu contaminante es sobre el que se requiere hacer la media mvil, indicndoselo
mediante el comando pollutant.
2-. Indicar el periodo que contemplar dicha media: hours
La media mvil es un estadstico que calcula hora por hora la media para un nmero de horas anteriores a la hora a la
que se asigna el valor, por lo que requiere para su clculo que se defina en horas el periodo que contemplar la media.
3-. Establecer el nombre que se dar al nuevo campo creado para la media mvil: new.name
Tal y como se ha comentado, la instruccin calcular la media mvil para el periodo indicado y la dispondr dentro de un
nuevo campo en el conjunto de datos de que ya disponemos, no siendo necesario crear un nuevo conjunto de datos, como ocurre con otras instrucciones. Sin embargo, es imprescindible indicar a la instruccin el nombre del mismo.
4-. Nmero mnimo de datos vlidos: data.thresh
Los clculos estadsticos que realicemos para cualquier parmetro requerirn siempre de un nmero mnimo de datos
vlidos, expresado como porcentaje, que garanticen siempre la representatividad del dato estadstico finalmente obtenido.
Esta informacin es la que proporciona el comando data.thresh, al que se deber asignar un nmero del 0 al 100.
Ej. rollingMean(datoscont, pollutant=o3, hours=8, new.name=octoh, data.thresh=75), esta ser la instruccin que nos permitir calcular la
media mvil octohoraria del ozono, con un porcentaje mnimo de datos del 75% (6 horas), incluyendo en nuestro conjunto de datos un nuevo
campo que se denominar octoh.

Agregar datos en funcin de distintos intervalos de tiempo: timeAverage


Agregar datos en funcin de distintos intervalos de tiempo es una de las funciones ms relevantes y de mayor utilidad que permite
ejecutar Openair por cuanto que es base fundamental del trabajo que normalmente se realiza con los datos de calidad del aire.
Agregar datos en funcin de distintos intervalos de tiempo es una funcin que se utiliza siempre para aspectos como:
a. El clculo de distintos estadtiscos para la comprobacin del cumplimiento legal en materia de calidad del aire, como por
ejemplo el valor lmite diario de PM10 o el mximo octohorario diario, en combinacin con la herramienta que hemos podido ver en el punto anterior, para el valor objetivo de proteccin de la salud humana del ozono.
b. Acondicionar conjuntos de datos de manera previa a su combinacin en uno slo, cuantos estos tienen periodos de integracin distintos, como por ejemplo, cuando se desean combinar datos horarios del control automtico con datos diarios
procedentes de muestreos manuales.
c. Facilitar el estudio de grandes series temporales de datos, sobretodo cuando dicho estudio se fundamenta en la realizacin de grficas con base temporal, evitando as que un exceso de resolucin en el dato oculte aspectos relevantes. En
cualquier caso, y puesto que Openair es un software adaptado al tratamiento de grandes series de datos, determinadas
funciones grficas que requerirn de esta herramienta de agregacin ya la contemplan dentro de sus comandos.
No obstante, agregar datos en funcin de distintos intervalos de tiempo es, en s mismo, una herramienta estadstica de tratamiento de datos de enorme utilidad que requerir de la definicin de los siguientes comandos:
1-. Indicar el periodo de tiempo en el que se desean agregar los datos: avg.time
Se le debe indicar a la instruccin el periodo de tiempo en el que se desean agregar los datos, pudiendo este ser: segundos sec, minutos min, horas hour, das day, semanas week, meses month, estaciones del ao season, cuatrimestres quarter, o aos year. Adems, y al objeto de hacer ms flexible an este comando, es posible incluir un nmero delante del periodo seleccionado para indicar el nmero de periodos que se desean para la particin del tiempo.

Elaborado por Fernando Follos Pliego

24

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
El periodo seleccionado puede ser mayor que el original, y entonces los datos se agregarn, para lo cual se deber aplicar un estadstico para calcular el dato final, o inferior al original (siempre y cuando sea mltiplo exacto del mismo), en
cuyo caso lo que se hace es expandir el valor al nuevo intervalo de tiempo, desagregando el dato disponible y repitindolo
sucesivamente hasta rellenar el periodo original con el seleccionado.
Ej. datoscontc < timeAverage(datoscont, avg.time=15 min), mediante esta instruccin lo que conseguimos es crear un nuevo con
junto de datos quinceminutales, a partir de datos horarios, desagregando el dato para repetirlo cuatro veces hasta rellenar la hora a la
que estaba referido el conjunto de datos original.

2-. Porcentaje de datos vlidos para agregar los datos: data.thresh


Cuando agregamos datos a un cierto periodo de tiempo puede ser necesario indicar a la instruccin timeAverage cul es
el porcentaje mnimo de datos requerido para considerar dicha agregacin representativa y llevara a cabo el estadstico
que se le indique.
De esta forma, si el porcentaje de datos establecido por este comando es de 75, la funcin requerir para el periodo seleccionado que existan un mnimo del 75% de datos vlidos (por ejemplo, en un da debern existir un mnimo de 18 datos
horarios disponibles para el parmetro en el archivo original). Si el valor es menor al porcentaje indicado la herramienta no
calcular el dato y dispondr en su lugar de un N.A.. Si el nmero de datos horarios es igual o mayor, calcular el estadstico que se le haya indicado.
3-. Estadstico a utilizar para agregar los datos: statistic
Por defecto, la instruccin timeAverage utiliza como estadstico a aplicar la media mean, por ser este el de uso ms
frecuente cuando se agregan los datos. Sin embargo, el comando statistic nos permite tambin para esta funcin calcular
el mximo max, el mnimo min, la mediana median, el sumatorio sum, la frecuencia de aparicin de datos
frecuency, la desviacin estndar sd, o incluso el percentil percentile.
Si seleccionamos como estadstico a calcular el percentil, la herramienta timeAverage calcular por defecto el percentil
95. Sin embargo, es posible indicarle un valor distinto si incluimos el comando percentile en la instruccin con el porcentaje que deseamos aplicar: percentile=98. No obstante, para el clculo de percentiles de un conjunto de datos, podremos
comprobar ms adelante que Openair dispone de sus propias herramientas, algo ms potentes que esta.
4-. Indicar la fecha de inicio del clculo: start.date
Se puede forzar a la herramienta a iniciar el clculo en una fecha especfica del conjunto de datos original, ya sea porque
slo se precisan determinados datos, por que es preciso por el periodo de agregacin que se ha solicitado, o porque se
desea forzar una secuencia determinada en funcin del periodo seleccionado. En cualquier caso, el comando start.date
permite indicarle a la funcin la fecha de inicio completa que precisa el usuario.
5-. Calcular la media vectorial de la velocidad del viento: vector.ws
En ocasiones puede ser til realizar un clculo vectorial de la media de la velocidad del viento. No obstante, este hecho
no suele tener una utilidad inmediata habitual, por lo que este comando est por defecto desactivado. vector.ws=FALSE.
Ej. datoscontday < timeAverage(datoscont, avg.time=day, statistic=mean, datathresh=75), calcular la media diaria del conjunto de datos
datoscont, siempre que exista un mnimo del 75% de datos diarios (18 horas de datos validos al da).

Clculo de percentiles: calcPercentile


El clculo de percentiles, siendo un estadstico sencillo en cuanto a su concepto, suele ser uno de los que ms trabajo da al tcnico de explotacin de datos de calidad del aire, puesto que adems muchos software de clculo no proporcionan herramientas
adecuadas para el mismo.
En el caso de Openair, se dispone de una instruccin especfica que permite el clculo de percentiles para un parmetro dado,
pudiendo incluso seleccionar el periodo de agregacin, lo que proporciona al usuario una herramienta sencilla, cmoda y muy
verstil para el clculo de este estadstico.
Si bien, tal y como seguramente el lector ya habr pensado, la funcin timeAverage vista anteriormente ya contemplaba el clculo
de percentiles entre sus estadsticos, debe decirse que la funcin calcPercentile est destinada a proporcionar al tcnico una
herramienta ms dinmica y verstil que timeAverage para el clculo de uno de los parmetros estadsticos ms utilizados en
calidad del aire, los percentiles, mostrando los resultados directamente en la consola de R.

Elaborado por Fernando Follos Pliego

25

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La funcin dispondr de los siguientes comandos bsicos de configuracin:


1-. Contaminante sobre el que se quiere realizar el clculo: pollutant
Se deber identificar mediante este comando el parmetro o contaminante sobre el que se quiere llevar a cabo el clculo
de los percentiles. Openair tan slo permite actualmente la asignacin de un nico parmetro por funcin.
2-. Periodo de integracin de datos requerido: avg.time
Se deber indicar a la funcin el periodo en el que se quiere llevar a cabo el clculo de los percentiles, pudiendo ser cualquiera de los contemplados en la funcin timeAverage, entre los que se encuentran los das day, las semanas week,
los meses month, o incluso los aos year, entre otros.
3-. El percentil o percentiles a calcular: percentile
Debemos indicar a la funcin qu percentil o percentiles queremos calcular para el parmetro seleccionado. En esta ocasin ser posible indicarle a la funcin que proceda al clculo de uno o varios percentiles a la vez.
4-. Establecer el porcentaje mnimo de datos vlidos para el clculo: data.thresh
Cuando realizamos el clculo para un periodo determinado, es muy posible que sea necesario indicar a la instruccin cul
es el porcentaje mnimo de datos requerido para considerar el clculo del percentil como representativo para dicho periodo. De esta forma, si el porcentaje de datos es superior al indicado al comando data.thresh, se calcularn los percentiles
indicados, mientras que en caso contrario se omitir este clculo y sen su lugar se dispondr un NA.
5-. Indicar la fecha de inicio de los clculos: start
La instruccin permite que, mediante el comando start, se disponga de una fecha especfica con la que iniciar el clculo
sobre el conjunto de datos original, evitando as que el clculo se realice sobre el total de datos disponibles en el mismo,
especificando el periodo necesario.
Ej. percent < calcPercentile (datoscont, pollutant=o3, avg.time=year, percentiles=C(75,90,95,99.5,99.9), data.thresh=75), calcular los
percentiles 75, 90, 95, 99.5 y 99.9 del parmetro ozono para cada ao de nuestro conjunto de datos, aunque en vez de devolver los datos a nues
tra consola de R, puesto que nos interesa conservarlos, grabar los clculos en un conjunto de datos denominado percent. Cabe hacer notar en
esta ocasin, que los percentiles establecen sus decimales mediante la utilizacin de puntos, y no de comas, aspecto este muy importante para
tener en cuenta.

Clculo de estadsticos principales de la calidad del aire: aqStats


Un de la ltimas herramientas incluidas en Openair y que mayor utilidad representa para el tcnico, es la funcin aqStats, que
permite el clculo de los principales y ms comunes datos estadsticos anuales para los distintos contaminantes que se precisen.
La herramienta si bien es de sencillo manejo no deja de ser una de las ms tiles dispuestas por el paquete Openair.
El funcionamiento de la herramienta es bien sencillo, al ejecutarla sobre un conjunto de datos y para una serie de parmetros
determinados, lo que har la funcin aqStats es devolver los siguientes estadsticos para cada uno de los aos de datos disponibles en el conjunto de datos y de los contaminantes indicados:

El porcentaje total de datos vlidos disponibles para realizar el clculo.


La media anual.
El mximo valor horario del ao.
El mnimo valor horario del ao.
La mediana.
El mximo valor diario alcanzado en el ao.
El mximo de la media mvil octohoraria.
El mximo de la media mvil de 24 horas.
El percentil 95, aunque en este caso, se debe adelantar que es posible indicarle a la funcin que calcule ms de un percentil, tal y como veremos en los comandos posteriores.

Adems de los resultados estadsticos mostrados hasta el momento, la funcin aqStats es capaz de reconocer el o los contaminantes establecidos en la funcin y calcular estadsticos especficos de cada uno de ellos.
Elaborado por Fernando Follos Pliego

26

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Si detecta que el contaminante es el Ozono:

Nmero de das en los que el mximo de las medias mviles octohorarias es superior a 100 g/m3.

La AOT 40
Si detecta que el contaminante es el NO2:

El nmero de horas en las que la concentracin de NO2 es superior a 200 g/m3.


Si detecta que el contaminante es PM10:

El nmero de das en los que la concentracin media diaria es mayor de 50 g/m3.

Destacar que la herramienta asume en cualquier caso que los datos se encuentran en todos los parmetros en g/m3, a excepcin de CO que se considera que est expresado en mg/m3. As mismo, la funcin puede asumir conjuntos de datos que dispongan de datos de diversas ubicaciones, realizando ella misma la agregacin por sitios.
Para la ejecucin de la funcin aqStats se utilizarn los siguientes parmetros.
1-. Contaminante sobre el que se quiere realizar el clculo: pollutant
Se deber identificar mediante este comando el parmetro o contaminante sobre el que se quiere llevar a cabo el clculo
de los percentiles. Openair tan permite actualmente la asignacin de varios parmetros por funcin, calculando los estadsticos que correspondan para cada uno de ellos.
2-. Establecer el porcentaje mnimo de datos vlidos para el clculo: data.thresh
Cuando realizamos el clculo de los distintos estadsticos, es muy posible que sea necesario indicar a la instruccin cul
es el porcentaje mnimo de datos requerido para considerar el clculo como representativo para los distintos periodos de
clculo establecidos. De esta forma, si el porcentaje de datos es superior al indicado al comando data.thresh, se calcularn los percentiles indicados, mientras que en caso contrario se omitir este clculo y en su lugar se dispondr un NA.
3-. Establecer los percentiles a calcular: percentile
Se deber identificar mediante este comando el parmetro o contaminante sobre el que se quiere llevar a cabo el clculo
de los percentiles. Openair tan permite actualmente la asignacin de varios parmetros por funcin, calculando los estadsticos que correspondan para cada uno de ellos.
4-. Transponer los resultados obtenidos: transpose
Por defecto, cuando ejecutamos la funcin aqStats, el sistema devuelve a la consola de R un listado de estadsticos organizados por columnas. De esta forma, para cada ubicacin y ao, tendremos los datos estadsticos por filas, donde cada
estadstico se corresponder con una columna. Sin embargo, este formato de presentacin de los datos puede no ser
prctico, por lo que con el comando lgico transpose es posible indicarle a la funcin que organice todos los datos estadsticos por filas y los agrupe en funcin del ao, de forma que devuelve a la consola tres columnas, el ao, la variable
calculada y el dato correspondiente.
Ej. aqStats(datoscont, pollutant=o3, data.thresh=75, percentiles=c(98,99,99.5,99), transpose=TRUE), calcular los datos estadsticos para el
ozono de nuestro conjunto de datos, disponindose los datos en tres columnas, con el comando transpose, segn se puede ver en resultado
expuesto a continuacin.

Elaborado por Fernando Follos Pliego

27

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

INSTRUCCIONES GRFICAS EN R Y OPENAIR :


Ya manejamos los datos con maestra y conseguimos lo que buscamos con las cargas y gestiones que hacemos
con ellos, pero donde R y Openair presentan una ventaja muy importante frente a otros software de gestin de
datos, y donde se muestra todo su potencial es en el apartado de las instrucciones grficas, especialmente en el
caso de Openair.
El lenguaje R presenta la ventaja de poder realizar grficas complejas de grandes series histricas de datos, con
complicados clculos estadsticos y matemticos, sin que se presenten problemas en el movimiento y gestin de
los datos, y permitiendo adems una rpida configuracin de las grficas y seleccin de datos y variables.
Por ejemplo, generar graficas temporales de grandes series histricas en distintos periodos de integracin de los
datos con otros software es prcticamente imposible, o conlleva el tratamiento previo de los datos durante horas,
En el caso de R y Openair se pueden graficar datos en series temporales con distintos periodos de integracin
(semanales, mensuales, etc.), sin tratamiento previo y con una posibilidad de generacin grfica que conlleva como mucho uno o dos minutos.
Hasta aqu la ventaja potencial de graficar con R y Openair. Sin embargo, se debe aadir que adems Openair
tiene la ventaja sobre R de que est preparado para el manejo de datos relativos a la calidad del aire, por lo que:
a)

Reconoce directamente muchas de las variables de nuestro archivo de datos, siempre y cuando mantengamos la codificacin en ingles de los encabezamientos del conjunto de datos, como por ejemplo: fecha
(date), velocidad del viento (ws), direccin del viento (wd), etc.

a)

Dispone de grficas especficamente diseadas y desarrolladas para el tratamiento de datos sobre calidad
del aire.

Lo importante de
una grfica en R
y Openair no es
tanto el resultado
grfico
final,
muy til para el
estudio y anlisis
de los datos, como el objeto de
clculo estadstico que se genera
y que se puede
guardar y utilizar, total o parcialmente, para
la programacin
de otras funciones.

Conviene destacar, antes de comenzar a ver cada una de las grficas que podemos
elaborar, que R y Openair son lenguajes de programacin que utilizan funciones para
el manejo de conjuntos de datos y sus datos, lo cual se mantiene para las funciones
grficas.
Las grficas, tanto en R como en Openair son funciones, idnticas a las vistas hasta
el momento, que de hecho podramos haber incluido en el apartado anterior de
Instrucciones para el manejo de datos, pues es lo que realmente hacen.
Cuando ejecutamos una instruccin grfica, esta calcula los estadsticos pertinentes
para el conjunto de datos y las variables indicadas, y posteriormente los representa
en una grfica, vinculada a dichos clculos que podremos exportar en formato de
imagen, si lo que necesitamos es esta vertiente de la grfica.
De hecho, un prueba de lo expuesto es que con R siempre podremos guardar los
resultados de la aplicacin de dichas funciones asignndose un nombre como objeto
de R, al igual que hacamos con instrucciones vistas anteriormente como subset para
la generacin de subconjuntos de datos.
Ej. histograma < hist (datoscont$o3), genera un histograma con la frecuencia de aparicin de los distintos
niveles de ozono en nuestro archivo de datos y lo guarda como un objeto de R denominado histograma que
posteriormente podremos editar y manejar a nuestro antojo.

Elaborado por Fernando Follos Pliego

28

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Una funcin grfica guardada como objeto R contendr en dicho objeto todos los clculos realizados sobre el conjunto de datos, es decir todos los clculos realizados para poder elaborar el grfico solicitado, distribuidos en distintos apartados. Si queremos comprobar los distintos clculos realizados para una grfica en concreto, as como lo
guardado de dicha grfica como objeto de R, bastar poner el nombre del objeto en el promt de R.
Ej. histograma , muestra en la consola el contenido del objeto que antes hemos guardado al generar la grfica de histograma sobre nuestros
datos de ozono del conjunto de datos datoscont.
Al mostrarlo como texto aparecern cada uno de los campos que componen el objeto grfico de R (similares a los campos de un conjunto de
datos cualquiera) con los datos que forman dichos campos. En el caso que nos ocupa en este ejemplo se mostrarn los puntos de corte genera
dos ($breaks), el conteo de datos realizado para cada rango ($counts), las intensidades calculadas del histograma ($intensities), las densidades
($density) y los puntos medios de cada rango ($mids), entre otros atributos de la grfica.

Una funcin grfica guardada como objeto R podr volver a ejecutarse como funcin grfica llamndola directamente con la instruccin plot, a la que tan slo habr que indicarle el nombre del Objeto de R a contemplar dentro
de la misma. Al ejecutar plot sobre el objeto grfico correspondiente la instruccin de R interpretar el objeto y reproducir la grfica tal y como se hubiese programado originalmente.
Ej. plot (histograma) , reproduce la grfica histograma tal y como fue guardada originalmente, igual que si estuvisemos metiendo el cdigo
original hist (datoscont$o3).

Al igual que con el comando plot, con el comando print podemos ejecutar una grfica de Openair guardada como
objeto haciendo que, adems de reproducir la grfica original, nos proporcione en la consola principal de R una
descripcin de los datos de salida del objeto.
Ej. print (histograma) , reproduce la grfica histograma tal y como fue guardada originalmente, y nos proporciona en la consola R los datos de
salida de la funcin.

Tambin podemos extraer los resultados usados para elaborar una grfica, sin necesidad de reproducir dicha grfica, con el comando results. Si los datos elaborados por la instruccin grfica producen varios conjuntos de datos,
la instruccin los extraer como varios conjuntos de datos, mostrndolos de esa forma.
Por lo tanto, tal y como podemos ver, al guardar una funcin grfica como objeto de R, tambin podemos aprovecharnos de la informacin contenida dentro de dicho objeto para guardarla como un conjunto de datos, exportarla,
o incluso hacer otro tipo de grficas.
Ej. plot(histograma$density) , elaborar una grfica de densidades de los datos obtenidos a partir de la funcin guardada como histograma,
mostrando dichas densidades en una grfica de dispersin de puntos xy.

Por otro lado, y a pesar de que resulta muy interesante conocer las instrucciones grficas como instrucciones de
tratamiento estadstico y/o matemtico de los conjuntos de datos, las funciones grficas de R y Openair son, en su
resultado final, una grfica, y como tal se presentan inicialmente como un dibujo grfico mas o menos elaborado,
que podremos exportar para su utilizacin en otros mbitos de nuestro trabajo, tales como informes, estudios de
datos, anlisis de la contaminacin, etc.
La exportacin de las grficas se puede llevar a cabo utilizando formatos compatibles con los principales editores
grficos del mercado (pdf, png, bmp, tiff, jpg). La exportacin se lleva a cabo mediante la utilizacin del men superior de R cuanto estamos en la ventaja grfica: Archivo -> Guardar como y seleccionando la ubicacin correspondiente, o mediante la seleccin directa del botn Export de la ventana grfica de RStudio.
En todos los casos la imagen se puede guardar en nuestro equipo o, si queremos utilizarla directamente, copiarla a
nuestro Clipboard para usarla en el mismo momento.

Elaborado por Fernando Follos Pliego

29

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Instrucciones grficas bsicas en R.


A pesar de que R no es un lenguaje pensado estrictamente para el tratamiento explcito de los datos de calidad del
aire, se debe recordar que es el lenguaje base sobre el que se desarrolla Openair, por lo que proporciona el entorno de desarrollo grfico y matemtico, y aporta muchas de las instrucciones bsicas de configuracin de la grfica
(main, xlab, etc).
Adems, su estudio es importante puesto que ayuda a comprender el funcionamiento en su base de diseo de las
funciones grficas de Openair que posteriormente podremos ver, aportando tambin una serie de instrumentos
que se podran utilizar perfectamente para el estudio de los datos, tal y como se muestra a continuacin. En cualquier caso, en este apartado trataremos las principales cuestiones relativas al graficado en R y aprenderemos como se ejecutan las funciones grficas de R con mayor inters para la calidad del aire, dejando el resto para la descripcin que hagamos con posterioridad del paquete Openair y sus grficas.
En primer lugar, se debe especificar, al igual que haremos con las grficas de Openair en posteriores apartados,
que existen una serie de elementos comunes a todas las grficas R que aparecen en todas o en casi todas las
grficas utilizadas por este lenguaje. De hecho, muchos de estos elementos comunes de las grficas R se suelen
encontrar tambin en la configuracin de las grficas de Openair y, en muchas ocasiones, se configuran de idntica forma, como por ejemplo los ttulos de las grficas, que tanto en el caso de R como en el de Openair se asignan con el mismo comando.

Incluir un ttulo en la grfica: main


Ej. plot(datoscont$no2, main=Evolucin del NO2), lo que nos permite incluir en la grfica para el NO2 de datoscont un ttulo.

Incluir un subttulo en la parte inferior de la grfica: sub


Ej. plot(datoscont$no2, main=Evolucin del NO2, sub=Evolucin graficada para el mes de julio de 2008), lo que nos permite incluir
en la grfica para el NO2 de datoscont, adems del ttulo del apartado anterior, un subttulo explicativo de la grfica.

Incluir un ttulo de los ejes: xlab o ylab


Ej. plot(datoscont$no2, xlab=horas, ylab=concentracin alcanzada), nos permite definir el eje x como las horas de la grfica, mientras
que el eje y ser la concentracin alcanzada para el NO2.

Establecer los lmites de los ejes: xlim o ylim


Ej. plot(datoscont$no2, xlab=horas, ylab=concentracin, ylim=c(0,400)), nos permite definir los lmites en los que se mover el eje de
las y, que es donde se representa las concentraciones del no2. Se puede ver cmo el comando c() nos permite introducir a la variable
ylim los dos valores que la misma precisa para su ejecucin.

Cambiar los colores de una grfica: col


R permite cambiar los colores de una grfica mediante el comando col, seguido por el elemento del que se quiera cambiar el
color y asignndole, entre comillas, el cdigo de color estndar utilizado por R. Si no se asigna despus del comando col el
elemento concreto, R interpreta que lo que se quiere cambiar es el color de la representacin grfica realizada (puntos, columnas, barras, etc).
Ej. plot(datoscont$no2, xlab=horas, ylab=concentracin, ylim=c(0,400), main=Evolucin del NO2, col=blue, col.main=green,
col.lab=red), utiliza la grfica de asignacin de lmites anterior y le asigna un ttulo y los correspondiente de la grfica (azul blue) , del
ttulo (verde green y de las etiquetas de los ejes (rojo red). El gusto en la asignacin de los colores ya es algo propio de cada usuario.

Adems de este comando, posteriormente podremos comprobar cmo cada grfica en R dispone de comandos propios o
combinaciones de comandos con los que podremos personalizar los colores de los distintos apartados de una grfica, personalizando as su visualizacin.

Conocemos ya los principales parmetros de configuracin bsica de las grficas de R y entendemos cmo se
configuran, por lo que ya estamos capacitados para comenzar a programar grficas bsicas en R y empezar a
sentar las bases en el manejo de las funciones grficas de R y Openair.
Elaborado por Fernando Follos Pliego

30

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Grfica bsica de representacin de datos en dos ejes:

plot

La instruccin plot es la forma genrica de llamar a una grfica. Si la utilizamos en combinacin con alguna grfica
previamente grabada como objeto de R, tal y como hemos visto anteriormente, lo que R hace es representar dicha
grfica en funcin de los datos guardados. Sin embargo, si la utilizamos directamente sobre un conjunto de datos,
realiza la representacin lineal tpica en dos ejes.
Utilizada de esta ltima forma, la instruccin requiere que le indiquemos las variables X e Y a representar, no obstante, si le damos slo una, ser esta la que represente linealmente en funcin del orden en el que se presenten
los datos. Si la serie de datos es muy larga, en ocasiones es preciso indicar a R que haga antes algn tipo de tratamiento estadstico de los datos, similar a los vistos en anteriores apartados, para conseguir que la representacin sea ms clara.
Como funcin genrica de R, plot utiliza una gran parte de argumentos de configuracin y diseo que con posterioridad nos sern tiles para la configuracin de diversos aspectos grficos en otras funciones grficas ms avanzadas, tal y como podremos ver en cada momento. As, comandos como pch, lty, lwd, bg, log, etc., sern luego de
enorme utilidad para configurar y mejorar el diseo grfico de otras funciones ms adelante, razn que explica por
qu se trata con semejante profusin y detalle la funcin plot en este manual.
Ej. plot(datoscont$date, datoscont$no2), representa en una grfica lineal los datos de no2 de este paquete de datos frente a los datos corres
pondientes a la fecha. Si escogisemos cualquier otra variable la representara frente a los datos de no2 tambin.

Variaciones sobre la funcin genrica plot:


1-. Modificar el tipo de grfica a utilizar para representar los puntos: type
Se le puede indicar a R que la grfica se presente en distintos formatos (por defecto en puntos), tales como: puntos p,
lneas l, barras h, puntos unidos por lneas o, escalones s, etc.
Ej. plot(datoscont$no2, type=s), dar lugar a un grfico de escalones de los datos de no2 correspondientes a nuestro archivo de datos.

2-. Modificar la escala del eje de lineal a logartmica: log


Por defecto las escalas de los ejes se presentan de forma lineal, pero es posible indicarle a R que utilice una escala logartmica para representar el eje que queramos, siendo estos ejes las variables del comando log. x o y. Este comando
es de gran utilidad cuando, como veremos ms adelante, se representan varios parmetros para un solo eje.
Ej. plot(datoscont$no2, log=y), genera un grfico de puntos de los datos de no2 correspondientes a nuestro archivo de datos, estable
ciendo la escala del Eje Y como escala logartmica .

3-. Establecer el tipo de smbolo a utilizar el los puntos de la grfica: pch


Con el comando pch le podemos decir a la grfica que represente la distribucin de puntos utilizando el smbolo que le
indiquemos por cada punto. La variable que define al comando pch es una variable numrica e identifica a un smbolo
predeterminado del tipo compatible con S (si el nmero es entre 1 y 18), adicional de R (nmero entre 19 y 25) o caracteres ASCII (si el nmero est entre 32 y 127).
Ej. plot(datoscont$no2, pch=16), genera un grfico de puntos de los datos de no2 correspondientes a nuestro archivo de datos, dispo
niendo los puntos de la grfica como puntos negros rellenos.

4-. Modificar la tipologa de la lnea de dibujo: lty


En el caso de que como dibujo se utilice una lnea, se le puede indicar a R el tipo de lnea que se quiere disponer identificndola con un nmero entero, segn sea: 0 para lneas en blanco, 1 para lneas slidas (por defecto), 2 para lneas discontinuas, 3 para lneas de puntos, 4 para lneas de puntos y rallas, etc.
Ej. plot(datoscont$no2, type=s, lty=2), dar lugar a un grfico de escalones de los datos de no2 correspondientes a nuestro archivo de
datos donde las lneas sern discontinuas.
Elaborado por Fernando Follos Pliego

31

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

5-. Modificar el ancho de la lnea de dibujo: lwd


En el caso de que como dibujo se utilice una lnea, se le puede indicar a R que la lnea de dibujo de la grfica se presente
en mayores grosores, puesto que por defecto es 1. De forma que la grfica presente una mayor visibilidad.
Ej. plot(datoscont$no2, type=s, lwd=2), dar lugar a un grfico de escalones de los datos de no2 correspondientes a nuestro archivo
de datos con una lnea mucho ms marcada y visual.

6-. Cambiar el color de fondo de la grfica: bg


Aunque slo se trata de un efecto esttico, en ocasiones puede ser til cambiar el color de fondo de una grfica. Esto se
consigue indicando al comando bg el tipo de color que queremos utilizar como fondo. Habr que recordar siempre que el
color del fondo se debe escribir en ingls.
7-. Encuadrar la grfica: frame.plot
El comando frame.plot es un comando lgico, es decir, utiliza las variables TRUE o FALSE, para activar o desactivar el
encuadre que rodea toda la grfica como si fuese una caja. Por defecto viene activado en la funcin plot de R.
8-. Modificar el aspecto de representacin de los datos: asp
El comando asp de R requiere un factor para establecer una relacin del aspecto que presentarn las unidades a utilizar
en los Ejes X e Y. As, si el valor dado al comando es positivo (asp=a, donde a>0), entonces la relacin ser del tipo x=ay,
aplicando el factor a la representacin de las unidades en el eje Y. Esto puede ser de enorme utilidad, por ejemplo, para
redimensionar la representacin de planos con latitud / longitud.
9-. Representar los ejes de la grfica: axes
Es posible indicar a la funcin que omita la representacin de los ejes, desactivando el comando lgico axes con la expresin que ya conocemos axes=FALSE, que al ejecutar presentar la grfica sin ejes, slo con el rea de representacin.
Si utilizamos los comandos xaxt o yaxt con la variable n podemos indicar a la grfica que elimine tan slo uno de los
ejes, el Eje X si utilizamos xaxt=n, o el Eje Y si utilizamos yaxt=n, lo cual aporta mayor flexibilidad que el propio comando axes, no obstante, la utilizacin de estos comandos queda especificada en posteriores puntos con mayor detalle.
10-. Modificar el tipo de caja a representar: bty
Otra opcin de configuracin grfica interesante es la posibilidad de representar la caja de la grfica como una caja completamente cerrada en sus cuatro lados, la opcin por defecto, que se correspondera al comando bty=o, o proceder a
representarla abierta por uno o varios de sus lados con las variables string siguientes: l, c, 7,u o ].
11-. Incrementar o disminuir el tamao de representacin de diversos elementos en la grfica: cex
El comando cex permite tambin definir el factor para incrementar o disminuir el tamao de diversos elementos de nuestra
grfica, aadiendo al propio comando el elemento a modificar y el factor a utilizar, este ltimo como variable numrica, tal
y como ocurra con el comando col visto al principio de este captulo, y tal y como se muestra en el siguiente ejemplo.
Con el comando cex se puede modificar el tamao de las etiquetas de los ejes, con cex.lab, el tamao de las escalas de
los propios ejes, con cex.axis, el del ttulo o el subttulo de la grfica, con cex.main o cex.sub, etc. Utilizado sin ningn
aadido, lo que hace es cambiar el tamao de la grfica, en nuestro caso en concreto el tamao de los puntos representados.
Ej. plot(datoscont$no2, type=s, cex.lab=1.5, cex.axis=0.5), dar lugar a un grfico de escalones de los datos de no2 correspondientes
a nuestro archivo de datos, tal y como hemos visto en nuestro ejemplo anterior, salvo que en este ocasin se incrementar el tamao de
las etiquetas de los ejes, y se diminuir el tamao de las unidades representadas en los mismos.

12-. Designar el color para el primer plano del cuadro de la grfica: fg


Con el comando fg (foreground) es posible designar un color especfico para el primer plano del cuadro de la grfica, o lo
que es lo mismo, lo que sera los mrgenes laterales del rea de representacin grfica. El comando deber en todo caso
ir acompaado del color, utilizando su denominacin en ingls.
Elaborado por Fernando Follos Pliego

32

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

13-. Establecer la fuente del texto de distintos elementos de la grfica: font


El comando font permite definir el tipo de fuente de texto a utilizar en diversos elementos de nuestra grfica, aadiendo al
propio comando el elemento a modificar y el factor numrico a utilizar. Este ltimo se corresponder con las siguientes
codificaciones: 1 - texto plano, 2 - negrita, 3 - itlica, 4 - negrita itlica, etc.
Con el comando font se puede modificar el tipo de texto de las etiquetas de los ejes, con font.lab, el de las escalas de los
propios ejes, con font.axis, el formato del ttulo, con font.main, o el del subttulo de la grfica, con font.sub.
Tambin se puede utilizar en la grfica el comando family, que permite configurar el tipo de fuente de letra a utilizar en la
grfica generada, incluyndolo como variable de texto con el comando. Por defecto, en R se encuentran los tipos serif,
sans y mono, aunque los distintos paquetes pueden modificar estos tipos amplindolos o eliminndolos.
14-. Cambiar la orientacin de las etiquetas que forman la escala de los ejes: las
Por defecto R presentar las etiquetas que forman las escalas de los ejes X e Y de forma perpendicular al propio eje, por
ser esta la forma que permite una mayor economa espacial. Sin embargo, el usuario podr cambiar la orientacin de las
etiquetas asignando al comando las los siguientes nmeros, atendiendo a la siguiente codificacin: 0 - siempre paralelas
al eje, 1- siempre horizontales, 2- siempre perpendiculares al eje, o 3 - siempre verticales.
15-. Modificar la distancia existente entre los distintos elementos de la grfica y el rea de dibujo: mgp

>plot(datoscont$date, datoscont$no2, type="o", pch=18, lty=3, cex=0.8,


col="blue", lwd=1.5, fg="blue", bty="l", cex.axis=0.6, main="Evolucin de
NO2", cex.main=1.5, col.main="darkblue", col.lab="darkblue", xlab="Das",
ylab="Concentracin horaria alcanzada", family="serif", mgp=c(3,1,0.5)

Con el comando mgp es posible variar la distancia o margen que separa a los distintos elementos de la grfica del rea de
dibujo. Este comando necesita que se le adjunte un vector con tres variables que significarn lo siguiente: La primera la
distancia existente entre los ttulos de los ejes y la grfica, la segunda la distancia entre la numeracin de los ejes y la
grfica y, la tercera la distancia entre la propia escala y los ejes. Por defecto R presentar el comando con la configuracin mgp=c(3,1,0).

Ya hemos construido nuestra primera grfica en R que, aunque sencilla en su presentacin y conceptos de desarrollo, es fundamental para comprender el concepto de diseo grfico seguido por R y, por lo tanto, tambin por
Openair y otros paquetes de representacin grfica. Pero esto no acaba aqu.

Elaborado por Fernando Follos Pliego

33

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La generacin de una grfica en R no muere en el momento en el que dicha grfica se genera en una ventana
aparte, sino que comienza en ese mismo momento, ya que R permite aadir y modificar los elementos de dicha
grfica, lo que es extraordinariamente til para, por ejemplo, generar varias grficas en una, permitiendo as la intercomparacin de datos, o aadir elementos grficos que faciliten la interpretacin de la grfica, entre otros.
La inclusin de nuevos elementos en nuestra grfica podr realizarse, por ejemplo, a travs de las siguientes instrucciones grficas bsicas, sobre las que podremos actuar tambin para su diseo con los comandos propios vistos para la funcin plot :
Instrucciones grficas bsicas que se pueden aadir a la funcin:
1-. Aadir una lnea recta a la grfica: abline
Con la instruccin abline podemos aadir una lnea recta a la grfica, que nos podr ser de utilidad para marcar lmites,
referencias, etc. Para incluir una lnea recta horizontal, bastara con indicar a la instruccin el valor del comando h, que
establece el valor del Eje Y, si lo que queremos es incluir una lnea vertical, el comando ser v, y el valor a contemplar se
corresponder con el Eje X. Si la lnea es una pendiente, habr que indicar a la instruccin los valores del punto de intercepcin, mediante el comando a, y de la pendiente, mediante el comando b.
2-. Aadir una flecha a nuestra grfica: arrows
Con la instruccin arrows se pueden aadir flechas a nuestra grfica, para lo cual indicaremos los siguientes parmetros
de configuracin bsicos, marcando con los comandos x0 e yo las coordenadas x/y de inicio de la flecha, y con los comandos x1 e y1 las coordenadas x/y de final de la flecha, entre otros comandos de configuracin.
3-. Aadir una cuadrcula a una grfica: grid
Disponer de una cuadrcula en la grfica puede ser de enorme utilidad para interpretar correctamente los datos dispuestos. Si utilizamos la instruccin grid(), sin ningn comando, podemos ajustar rpida y directamente una cuadrcula a los
ejes de nuestra grfica. No obstante, podemos utilizar algunos comandos como nx, que indica el nmero de celdas que
queremos que tenga la cuadrcula para el Eje X, ny, que indica lo mismo pero para el Eje Y, o equilogs, que es un comando lgico que sirve para ajustar la cuadrcula cuando el eje se representa en escala logartmica.
4-. Aadir una lnea a la grfica: lines
Con este comando se pueden aadir lneas adicionales a las ya representadas en la propia grfica. Lo nico que se precisa es que se le indiquen los parmetros o datos a representar, y el tipo de lnea a utilizar, con el comando type visto
anteriormente en la grfica plot.
5-. Aadir puntos a una grfica: points
Con este comando se pueden aadir puntos adicionales a los ya representados en la propia grfica. Lo nico que se
precisa es que se le indiquen las coordenadas de ubicacin de dichos puntos y el tipo de representacin grfica a utilizar,
con el comando pch visto anteriormente en la grfica plot.
6-. Aadir una lnea de marcas: rug
Se puede incluir una lnea de marcas interiores a la grfica para representar una serie de valores en la escala del eje que
se indique, en lo que en ingls se denomina rug (o alfombra de datos). Esta herramienta puede resultar de utilidad para
representar en una dimensin la distribucin de los datos de un parmetro, complementando as grficas como los histogramas, las grficas de densidad, o los grficos de datos agregados.
Para configurar esta instruccin se precisa como mnimo indicar el conjunto de datos a utilizar, aunque tambin se pueden utilizar otros comandos como ticksize, que establece la longitud de las marcas representadas, o side, que establece
si estas marcas se presentan en la parte inferior de la grfica, junto al eje X, con el valor 1, junto al eje Y, con el valor 2,
en la parte superior del rea de la grfica, con el valor 3, o en la parte derecha, con el valor 4.

Elaborado por Fernando Follos Pliego

34

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

7-. Aadir texto a la grfica: text


Se puede aadir tambin texto a la grfica, aspecto este de especial inters para incluir, por ejemplo, las etiquetas a
determinados elementos de la grfica. Para configurar esta instruccin es necesario indicar a la misma en primer lugar
las coordenadas x e y a utilizar, que pueden ser variables numricas que se correspondan con la escala de los ejes, o
vectores (si queremos introducir ms de un texto o un grupo de etiquetas). El resto de comandos nos permiten: Introducir
las etiquetas que queremos que aparezcan como texto en la grfica, mediante el comando labels, indicar la posicin del
texto o etiqueta respecto a las coordenadas, mediante el comando pos, al que se le puede dar el valor de 1 (inferior), 2 (a
la izquierda), 3, (superior), 4 ( a la derecha), o el comando cex, como factor para modificar el tamao de la etiqueta, tal y
como ya vimos en plot, entre otros comandos.
8-. Aadir una leyenda a la grfica: legend
Se puede incluir tambin una leyenda a la grfica, usada normalmente para la descripcin de escalas o de los elementos
de un rea grfica. En nuestro caso R prev la inclusin de una leyenda en la grfica atendiendo a multitud de parmetros de configuracin entre los que podemos encontrar como obligatorios las coordenadas de ubicacin x/y de la leyenda,
aunque tambin podramos utilizar la instruccin locator*, o las abreviaturas previstas por R topright, top, bottom,
bottomleft, center, etc. Adems de las coordenadas, tambin se debe indicar a la instruccin legend, mediante texto o
un vector de textos, las denominaciones a incluir en la leyenda.
Junto con estas variables obligatorias, la instruccin legend contempla comandos de configuracin como: fill, para establecer cajas que aparezcan al lado de los textos de la leyenda con los colores que se especifiquen, lty, para establecer el
tipo de lneas a representar al lado de las cajas, col, para establecer los colores de los elementos de al lado de los textos, entre otros muchos comandos que se podrn consultar en la ayuda de R.

> grid()
> lines (datoscont$date, datoscont$o3, type=l, col=green)
> legend(topright, legend=c(NO2,O3), cex=0.6, col=c(blue, green),
lty=c(3,1))

De esta forma, si ampliamos la grfica anterior e incluimos diversas instrucciones adicionales para su mejora y
ampliacin, tal y como se observa en el siguiente ejemplo, podemos obtener infinidad de posibilidades a la hora de
graficar datos, entre las que se muestra la siguiente:

* Tal y como se ha comentado antes, una grfica en R es un elemento vivo con el que se puede interactuar. Entre otras opciones R presenta la instruccin locator(), que nos permite obtener las
coordenadas de un elemento grfico para hacer uso de las mismas . La instruccin locator se puede utilizar por ejemplo en combinacin con otras instrucciones grficas que requieran de unas
coordenadas definidas por el usuario. Para conocer ms sobre este tema se puede consultar la ayuda del paquete de R Graphics.
Elaborado por Fernando Follos Pliego

35

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Grfica bsica de distribucin de datos en un histograma:

hist

Otra grfica interesante a utilizar en el anlisis de datos de calidad del aire son los histogramas. Los histogramas
son grficas de conteo, en las que es posible representar la frecuencia de aparicin de datos de ciertos contaminantes o parmetros de calidad del aire, lo que permite por ejemplo comprobar la distribucin de los niveles en
inmisin de un determinado parmetro.
Para construir un histograma lo que hace la funcin es dividir el Eje X en intervalos, tambin denominados clases,
para luego proceder al conteo del nmero de datos que se corresponde con cada intervalo.
Los histogramas pueden ser ampliamente modificados en su ejecucin, dando muchsimo juego en su representacin. Todo buen programa estadstico que se precie nos permitir siempre cambiar las opciones de diseo del grfico, y en este caso R no poda ser menos, tal y como veremos a continuacin.
Variaciones sobre la funcin:
1-. Modificar el nmero de intervalos a graficar: breaks
Con el comando breaks se le puede indicar a la grfica que modifique el nmero de clases o intervalos en los que dividir
el Eje X. Si bien el histograma elaborado por R ya calcula el nmero de intervalos idneo para el conjunto de datos, podra ser interesante que el usuario estableciese los suyos propios.
En este sentido, muchos expertos recomiendan siempre que los intervalos sean iguales, para evitar la distorsin que
pudiera darse en la observacin de la grfica si se utilizan celdas que no sean equidistantes. Para hacer esto bastar con
indicarle a R el nmero aproximado de cortes que se requieren, tal y como se muestra en el ejemplo:
Ej. hist(datoscont$o3, breaks=16), realizar un histograma un nmero aproximado de 16 puntos de corte entre clases, de forma aproxi
mada y siempre en funcin del rango de datos.

Por otro laso, otros autores consideran que la utilizacin de rangos distintos para los intervalos puede mejorar la ilustracin de la grfica, motivo por el que la funcin hist permite que el usuario indique al comando breaks los puntos concretos
de corte en el Eje X, definiendo as con precisin los intervalos deseados:
Ej. hist(datoscont$o3, breaks=c(2,50,120,180,210)), realizar un histograma para los datos de ozono de nuestro conjunto de datos te
niendo en cuenta los puntos de corte marcados a breaks, por lo que elaborar cuatro intervalos o clases. Es importante tener en cuenta
que, de utilizar esta frmula debemos iniciar y finalizar el vector de nmeros con el mnimo de los datos y el mximo, respectivamente.
De no hacerlo as, algn dato quedara fuera de la representacin y la grfica no se ejecutara.

2-. Utilizar la frecuencia para la representacin de las barras: freq


El histograma puede representar las frecuencias de aparicin de un parmetro en un rango determinado, con el conteo
clsico mencionado de datos, tal y como hace por defecto si los rangos establecidos son equidistantes, con freq=TRUE,
o representar la frecuencia relativa o densidad de probabilidades encontrada para cada intervalo, con freq=FALSE, tal y
como hace por defecto si los rangos establecidos por la grfica son de distintas dimensiones.
En cualquier caso, las opciones predeterminadas pueden ser modificadas y el usuario podr dar el valor que considere
pertinente al comando lgico freq.
3-. Hacer los intervalos abiertos o cerrados: right
Con el comando lgico right podemos indicarle a la funcin si los intervalos a adoptar estn cerrados por la derecha o
valor superior, y por lo tanto abiertos por la izquierda, right=TRUE, o al contrario, con right=FALSE.
De esta forma una funcin con right=TRUE, presentar un intervalo del tipo (a,b] y por lo tanto incluir en dicho intervalo
todos los valores que sean mayores que a y menores o iguales que b.
En caos de que especifiquemos a la grfica el tipo de intervalo a utilizar con el comando right, podremos indicarle a su
vez qu es lo que tiene que hacer con el intervalo abierto en la primera barra del histograma (si right=TRUE) o en la ltima barra del mismo (si right=FALSE), con el comando lgico include.lowest, que vendr activado por defecto.
Elaborado por Fernando Follos Pliego

36

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
4-. Dibujar lneas de sombreado en la grfica: density
Entre sus opciones de configuracin, hist tiene prevista la posibilidad de dibujar las reas de las barras con lneas de
sombreado sobre las que el usuario podr establecer su densidad en el dibujo, con el comando density, al que asignar
el nmero de lneas por rea de dibujo.
Tambin podr definirse por parte del usuario el ngulo con el que se dibujar la lnea, con el comando angle, al que se
le podr asignar cualquier valor angular en grados.
Se deber tener en cuenta que si asignamos lneas para el relleno del histograma, a la hora de asignar color a dicho
relleno, con el comando col, realmente le estaremos asignando el color a las lneas dibujadas, y no a las reas.
5-. Establecer las etiquetas de las barras: labels
Con el comando labels se puede indicar a la funcin que disponga de etiquetas para cada una de las columnas dispuestas en la grfica, identificando as numricamente la frecuencia o densidad de que disponga cada intervalo. Para hacerlo
basta indicar que labels=TRUE.
No obstante, el comando labels tambin puede usarse como un comando vectorial de texto e introducir en l los nombres
o etiquetas que deseamos asignar a cada una de las columnas, si as quisiese el usuario.
Ej. hist(datoscont$o3, breaks=c(2,50,120,180,210), labels=c(1 rango, 2 rango, 3 rango, 4 rango)), realizar un histograma para
los datos de ozono de nuestro conjunto de datos teniendo en cuenta los puntos de corte marcados a breaks, tal y como hemos visto en
el ejemplo anterior, y luego asigna las etiquetas 1 rango al rango de 2 a 50, 2 rango al rango de 50 a 120, y as sucesivamente.

6-. Asignar un color al borde que dibuja las barras del histograma: border
La grfica de histogramas hist dispone de las opciones de configuracin de color normales que ya hemos visto en R, con
el comando col y su posible aplicacin a los distintos puntos o parmetros de la grfica, tales como col.main. En el caso
de los histogramas, adems podemos dotar de color al borde del histograma, con el comando border, al que deberemos
asignar, como siempre, el nombre de un color en ingls.
7-. Dibujar los Ejes X e Y de la grfica: axes
Por defecto la grfica viene acompaada siempre por los correspondientes ejes de representacin debidamente escalados en funcin de las unidades del parmetro (Eje X) y de las frecuencias o densidades encontradas (Eje Y). Sin embargo, con el comando lgico axes, es posible indicar a la grfica que no represente los ejes, axes=FALSE.
>hist (datoscont$no2, breaks=40, right=TRUE, bor
d e r = d a r k b l u e ,
c o l . m a i n = d a r k b l u e ,
main=Distribucin de los valores de NO2,
col=lightblue, xlab=Concentraciones en ug/m3,
ylab=Frecuencias).

Si bien los histogramas presentan una enorme utilidad para comprobar la distribucin que presentan los datos de
un parmetro determinado por rango de concentracin, tal y como hemos podido ver, presentan el problema de
que las frecuencias se presentan por tramos y la seleccin de los mismos puede dificultar o enmascarar la visualizacin correcta de la distribucin, ya que esta depender de los puntos de origen y la amplitud de los intervalos.

Elaborado por Fernando Follos Pliego

37

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

En este sentido, existe funciones matemticas como la estimacin de la densidad que solventan este problema,
eliminando la discontinuidad que dan los histogramas, y evitando la distorsin al realizar la estimacin centrndose
en cada valor. De hecho, la propia funcin hist de R presenta como resultado de su ejecucin un apartado denominado densidad $density, que proporciona los puntos medios obtenidos para cada uno de los rangos, permitiendo
as la representacin de una curva suavizada ajustada al histograma.
No obstante, y puesto que resulta interesante en cuanto a su aplicacin para calidad del aire y como desarrollo al
actual apartado, se proceder a describir a continuacin las principales ventajas, propiedades y aplicaciones del
clculo de la densidad.
Una funcin muy utilizada en este sentido, y estrechamente relacionada con los histogramas, es la estimacin de
la densidad kernel de un conjunto de datos, que es un mtodo no paramtrico muy utilizado para calcular la funcin de la densidad de probabilidades de una variable de la que se desconoce su distribucin. Bsicamente, lo que
hace dicha funcin es adaptar una lnea suavizada y continua a la distribucin obtenida de densidades de un conjunto de datos. Para ello utiliza los siguientes elementos:
a)

La funcin de ponderacin K (kernel) o funcin de ncleo,


que se utiliza como base para la estimacin de la funcin de
densidad del conjunto de datos. Debiendo satisfacer ciertas
condiciones de simetra y regularidad.
Se utilizan comnmente un rango de funciones kernel bsicas entre las que se encuentran la funcin uniforme o funcin rectangular, la funcin triangular, la funcin Epanechnikov, la funcin gausiana, curtico o biponderado, triponderado, tricubo o arco-coseno.

b)

El ancho de banda - h, similar al rango en los histogramas,


es un parmetro de suavizado que establece el ancho de la
ventana para el ajuste de la funcin de ncleo. Este ancho
de banda es un parmetro de designacin libre y tiene una
fuerte influencia sobre el resultado final.

Estimacin de tipo ncleo mostrando los ncleos individuales.

La seleccin de un ancho de banda adecuado es fundamental para conseguir una buena estimacin de la
densidad. Un ancho de banda grande dar lugar a estimaciones de la densidad sobresuavizadas con poca
varianza y mucho sesgo, y sin embargo un ancho de banda pequeo dar lugar a todo lo contrario.
La estimacin de la densidad kernel est implementada directamente en R a travs de la funcin density, que presenta varios comandos bsicos adicionales para permitir su personalizacin y configuracin, tal y como se ve a
continuacin:
Principales variaciones sobre la funcin:
1-. Establecer el ancho de banda de la funcin: bw
El ancho de banda en la funcin de densidad se puede seleccionar bien asignando al comando bw una variable numrica
directamente dada por el usuario, bien seleccionando mediante una variable de texto predeterminada los mtodos de
clculo del ancho de banda de que dispone R para las funciones de densidad kernel, entre los que encontramos nrd0,
basado en la ecuaciones de Silverman (1986) y que la funcin utiliza histricamente por defecto aunque no por ello signifique que sea el ms adecuado, nrd basado en la variacin ms comn dada por Scott (1992), ucv o bcv para los
mtodos de validacin cruzada y, por ltimo sj, quiz el ms recomendado, basado en los mtodos de Sheather & Jones (1991), aunque de costosa aplicacin en caso de realizar minera de datos sobre grandes bloques.

Elaborado por Fernando Follos Pliego

38

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
Se puede aadir a la determinacin del ancho de banda un factor multiplicador mediante el comando adjust, que lo que
hace es multiplicar el ancho de banda resultante por la variable numrica que se le indique a este comando.
2-. Establecer la funcin de ponderacin K: kernel
R permite la seleccin de la funcin de ponderacin K (kernel), o funcin de ncleo, asignando al comando kernel una
variable de texto que se correspondera con las distintas funciones disponibles, entre las que se cuentan: gaussian, que
es la que est establecida por defecto, rectangular, triangular, epanechnikov, biweight, cosine u optocosine. Se
puede llamar tambin a estas funciones sin necesidad de escribir todo el nombre, sino acudiendo tan slo su primera
letra.
3-. Eliminar los datos nulos o inexistentes del clculo de la densidad: na.rm
Si nuestro conjunto de datos no est formado exclusivamente por variables numricas, sino que incluye algunos datos
NA correspondientes a huecos de datos o datos nulos, algo que es extraordinariamente comn en calidad del aire, la
densidad del conjunto no podr ser calculada y la funcin nos devolver un error. Para estos casos el comando na.rm
nos permite indicar a la funcin que elimine este tipo de variables no numricas del clculo, procediendo a calcular la
densidad exclusivamente con las variables numricas de nuestro conjunto de datos.
4-. Establecer el rango de valores para el que se desea calcular la densidad: from, to
En muchas ocasiones puede ocurrir que nos interese calcular la densidad para todo el rango de valores, ya sea porque
nos interesa conocer la distribucin en un rango especfico, o porque queremos evitar la distorsin generada en las colas
de los datos. Esta limitacin en el rango de clculo de la densidad se consigue con los comandos from, que establece el
lmite inferior del rango con una variable numrica, y to, que establece el lmite superior.

Graficar la densidad calculada es luego tan sencillo como guardar los datos obtenidos como un objeto de R y representarlos con un grfica genrica plot, o directamente mezclar ambas funciones en una sola , y graficar con plot
la funcin density, tal como muestra el siguiente ejemplo:
Ej. plot( density (datoscont$o3, na.rm=TRUE), mainDensidad de los datos de Ozono, ylim=Densidad, col=red, lwd=2) , obtiene la
funcin de densidad de kernel para el conjunto de datos de ozono seleccionado, omitiendo los datos nulos directamente, para grafica
directamente la funcin de densidad obtenida mediante la funcin plot, incluyendo en la etiqueta de x los datos correspondientes al
nmero de datos vlidos y el ancho de banda utilizado por la funcin de densidad.

Por ltimo, conviene destacar que R tiene paquetes especficos dedicados al clculo de funciones de suavizado, y
entre ellos paquetes que disponen herramientas muy completas en relacin al clculo y graficado de la densidad
de un conjunto de datos, o de diversos conjuntos de datos entre s, tales como el paquete de datos sm. Openair
tambin proporciona funciones de suavizado avanzadas especficamente preparadas para los datos de calidad del
aire, tal y como veremos ms adelante.
Elaborado por Fernando Follos Pliego

39

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Grfico de Cajas o Caja de Tukey:

boxplot

Las Grficas de Cajas o Cajas de Tukey, as llamadas por su idelogo, son grficas muy sencillas, a la par que de
gran potencia, para la representacin de series de datos de forma que en un solo grfico podamos tener informacin completa sobre la simetra, la dispersin y el sesgo en nuestros datos.
Toda esta informacin se representa en una funcin grfica
boxplot al incluir dentro de la misma, tal y como se puede observar en la grfica, la representacin de la mediana (lnea que
corta la caja), el primer cuartil de datos (extremo inferior de la
caja), el tercer cuartil de los datos (extremos superior de la
caja), y los valores mximos y mnimos (bigotes superior e
inferior de la grfica, tambin llamados whisker), con excepcin de los valores atpicos o considerados fuera de rango,
que se representan como crculos individuales fuera del bigote.
Por otro lado, una de las mayores ventajas de este grfico radica en que, ms all de representar las distribuciones dadas
para un solo conjunto de datos, nos permite graficar tantos
conjuntos de datos como queramos de forma simultnea, lo
que en el caso de la calidad del aire nos permitir, por ejemplo, comparar distintas ubicaciones o distintos periodos temporales.
Estadsticamente hablando, en cuanto al clculo de datos en R, la funcin boxplot no tiene ningn valor especial
ms all de la estimacin de los bigotes o whisker, ya que el resto de datos estadsticos los calculan directamente
funciones como summary, que hemos podido ver en apartados anteriores. De hecho, el clculo de datos estadsticos propios de las cajas de Tukey se puede llevar a cabo a travs de la funcin de R fivenum, para cada conjunto
de datos, tal y como se muestra a continuacin, en cuyo caso R devuelve a la consola los datos estadsticos correspondientes al mnimo de los datos, el primer cuartil, la mediana, el tercer cuartil y el valor mximo de los datos,
respectivamente.
Variaciones sobre la funcin:
1-. Incluir datos extremos o fuera de los rangos dentro de los whisker: range
En ocasiones el nmero de datos apartados, extremos o fuera de rango considerados por la funcin boxplot como valores atpicos por defecto, puede ser excesivo o alejado de la realidad del parmetro a representar, descartndose as
concentraciones que pueden ser descriptivas de determinadas situaciones episdicas o puntuales representativas igualmente de la calidad del aire en la zona.
Mediante el comando range el usuario podr controlar el nmero de datos atpicos que desea incorporar al bigote o whisker de la funcin grfica, quedando el resto de puntos fuera del mismo. As, el comando range deber acompaarse de
una variable numrica que marcar el rango intercuartlico que queremos aplicar, de forma que, a mayor rango, menos
nmero de puntos individuales o valores atpicos quedarn fuera del bigote.
En cualquier caso, si disponemos que range=0, la funcin interpretar que el nmero de datos atpicos debe ser nulo, por
lo que englobar todos los puntos individuales dentro del bigote, alargando el mismo hasta el valor mximo y/o mnimo
de nuestro conjunto de datos.

Elaborado por Fernando Follos Pliego

40

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

2-. Establecer el ancho de las cajas: width


Con el comando width se establece el ancho de la caja o cajas de que dispongamos, personalizndolo. Si tenemos varias
cajas y queremos personalizar su ancho, no valdr con incluir una sola variable numrica, sino que el usuario deber
incluir uno a uno los distintos anchos establecidos para cada conjunto de datos, utilizando para ello el correspondiente
vector.
Ej. boxplot (datoscont07$pm10, datoscont08$pm10, range=5, width=c(10,15)), previamente hemos dividido nuestro conjunto de
datos original datoscont en los subconjuntos correspondientes a los aos 2007 y 2008 para elaborar la grfica comparando datos anua
les (para ello hemos utilizado la funcin selectByDate). Con la funcin boxplot lo que hacemos es seleccionar los subconjuntos para
ambos aos, con indicacin del parmetros que queremos calcular (pm10), representando las dos Cajas de Tukey para dichos aos con
un rango intercuartlico de 5, y con un ancho de caja de 10 para el ao 2007, y de 15 para el ao 2008.

3-. Dibujar las cajas con anchos proporcionales: varwidth


Puede ser que nos interese que los anchos de las cajas, ms all de representar un aspecto puramente esttico de la
grfica, nos sirva tambin para poder observar la representatividad de los distintos conjuntos de datos. En estos casos
bastar con indicar a la funcin que varwith=TRUE para que el ancho de la caja se establezca de forma proporcional al
nmero de datos disponible en el conjunto.
4-. Aadir intervalos de confianza a la mediana: notch
Una variacin muy comn de la grfica de cajas es aquella que incluye una serie de cuas a los lados de la mediana
para representar dicho estadstico con intervalos de confianza incluidos. Dicha variante se contempla en R a travs del
comando lgico notch. La utilidad de la representacin de dichos intervalos de confianza en la grfica se basa en que si
las cuas de las cajas no se solapan adecuadamente, se puede concluir que existe una evidencia clara de que ambas
medianas son significativamente diferentes.
5-. Representar en la grfica los valores de fuera de rango: outline
Las grficas de cajas se pueden representar con inclusin de los datos que quedan fuera de rango, tal y como se hace
por defecto, con outline=TRUE, y por lo tanto la escala del Eje Y se adaptar a toda la escala de valores del parmetro
representado, o tambin se pueden elaborar eliminando de la grfica dichos datos puntuales de fuera de rango, por lo
que la grfica se limitar a los valores de la caja y los whisker, con outline=FALSE.
6-. Incluir etiquetas en el Eje X: names
Cuando representamos varios conjuntos de datos se generan varias grficas de cajas, una al lado de la otra, compartiendo la escala presentada en el Eje Y. En estos casos, seguramente resultar muy til, para facilitar la interpretacin de la
grfica, disponer de los nombres correspondientes para cada conjunto de datos (para cada caja de la grfica), utilizando
para ello el Eje X, lo cual se consigue asignando una etiqueta descriptiva a cada conjunto con el comando names.
7-. Escalar los distintos elementos de la grfica: boxwex , staplewex
La existencia de un mayor o menor nmero de cajas en nuestra grfica puede dificultar la interpretacin de la misma, ya
sea porque se solapan las cajas o porque quedan muy separadas. Con el comando boxwex se puede aplicar a la grfica
una variable numrica de escala que se aplicar como un factor para hacer que todas las canas sena ms o menos anchas, en funcin de lo indicado por el usuario, respetando siempre la proporcin de las dimensiones marcadas por otros
comandos como varwidth. Por defecto este comando presenta un valor de boxwex=0.8.
A su vez, el comando staplewex hace lo mismo con la lnea superior e inferior que marca el final del bigote o whisker,
estableciendo el tamao proporcionalmente al de las cajas. Por defecto, el factor que presenta este comando es de staplewex=0.5, o lo que es lo mismo, la mitad del tamao de la caja.

Elaborado por Fernando Follos Pliego

41

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
8-. Dar formato a los distintos elementos de la grfica: box , med, whisk, staple, out + lty, lwd ,cex ,pch, bg
Para la funcin boxplot es posible configurar el aspecto esttico de todos y cada uno de sus elementos grficos. Para ello
se utilizar la combinacin del nombre del elemento grfico: box (para la caja), med (para la mediana), whisk (para el
bigote), staple (para la lnea lmite del bigote) y out (para los valores de fuera de rango); y de las distintas opciones de
configuracin grfica, segn corresponda: lty (para el tipo de lnea), lwd (para el grosor de la lnea), cex (para incrementar o disminuir el tamao del elemento), pch (para el tipo de punto), col (para el color), y bg (para el color de fondo, aunque en algunas ocasiones se mantienen la antigua denominacin fill)

Mediante la funcin y los comandos expuestos hasta el momento es posible generar grficas de cajas que presentan una completa comparativa de la distribucin de sus datos y de sus principales estadsticos, ya sea por parmetros o por estaciones de control, tal como muestra el siguiente ejemplo:

> boxplot(datoscont1$pm10, datoscont2$pm10, datoscont3$pm10, varwidth=TRUE, notch=TRUE, log="y", staplewex=0.5,


names=c("Estacin 1", "Estacin 2", "Estacin 3"), main="Distribucin de los valores de PM10 durante 2008", xlab="Estaciones
de control evaluadas", ylab="Concentracin", outcex=0.5, outpch=18,outcol="grey", boxcol="red", boxfill="orange", whiskl
ty=1, whiskcol="red", cex.lab=0.8, cex.axis=0.7, staplelwd=2, staplecol="red", medcol="brown")

Elaborado por Fernando Follos Pliego

42

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Instrucciones grficas en Openair


Ya hemos visto que R permite el manejo fcil y graficado de grandes series histricas de datos, aunque tambin
hemos podido comprobar que el diseo grfico se muestra algo limitado para determinadas funciones relacionadas con la calidad del aire. En este sentido, Openair es una librera que nos permite dar una vuelta de tuerca a R y
adaptarlo mucho ms a nuestras necesidades, ampliando con mucho las utilidades de R, sobretodo a nivel grfico.
En los prximos apartados de este manual se van a desarrollar, una a una, cada una de las grficas de Openair,
de forma individual, e indicando los principales comandos diseados para su modificacin, personalizacin y diseo. Se recomienda al lector, sobretodo si es principiante, seguir paso por paso la lectura de las distintas instrucciones grficas, de forma paralela a su experimentacin en R.
Para lectores ms avanzados y experimentados en R ya est previsto el sistema de ayudas que proporciona el
lenguaje R, con el comando help, o la consulta directa de funciones, mucho ms rpida, proporcionada por el comando ?. Adems, los distintos paquetes disponen de instrucciones que se pueden consultar sobre la marcha a la
hora de programar las funciones
En primer lugar, se debe considerar, al igual que ocurra con las grfica de R, que existen una serie de comandos
bsicos para la configuracin de las grficas de Openair que son comunes a la mayora de ellas, entre los que encontramos los siguientes:

Cambiar los colores de una grfica: cols


Openair dispone de un comando propio para configurar los colores de representacin de sus grficas. De hecho, y en un
intento por facilitar al mximo las labores de configuracin de las grficas al usuario, muchas de ellas tienen configurados
paquetes de colores que permiten la gradacin automtica de los mismos en la grfica, tales como greyscale, heat, jet,
etc. En todo caso, estos paquetes de colores no son los mismos en todas las grficas ni estn disponibles de igual forma
para todas ellas, por lo que en cada una se tratar de forma breve este apartado de la configuracin grafica.
Adems de los colores configurados de forma automtica por paquetes en Openair, es posible que el usuario quiera personalizar al mximo la grfica estableciendo sus propios colores para la escala de representacin de la grfica o los distintos elementos de la misma. Para ello se utilizar el mismo comando, con la excepcin de que, en vez de hacer referencia a un paquete de colores, lo que se har es referencia a cada uno de los colores a utilizar.
Ej. polarPlot(datoscont, pollutant=03, cols=c(green, yellow, orange,red,brown)), realizar una grfica polar para representar
las concentraciones de ozono utilizando para el escalado los colores que se muestran para el comando cols, de forma que las menores con
centraciones se colorearn de verde green, mientras que las mayores se colorearn de marrn brown.

Es posible que en ciertas ocasiones la funcin grfica permita la configuracin de colores de otros elementos grficos o aspectos de la grfica, adaptndose as a las posibles necesidades del usuario. En estos casos el presente manual har las
referencias precisas para desarrollar este tipo de configuraciones en cada apartado.

Cambiar la disposicin espacial de los grficos mltiples cuando se generan: layout


Tal y como se ver ms adelante Openair complica el desarrollo grfico para adaptarlo a las necesidades que puedan surgir en materia de calidad del aire. Dentro de este desarrollo puede ocurrir que una instruccin grfica genere una grfica mltiple (varias grficas concatenadas) frente a lo cual es posible que no nos guste su disposicin en la pantalla grfica. Para
ello Openair tiene previsto el comando layout, que permite precisar al programa el nmero de filas y columnas que se quiere
que tenga la grfica combinada.
Ej. polarPlot(datoscont, pollutant=03, type=season, layout=c(4,1), realizar una grfica polar para representar las concentraciones de
ozono en funcin de la estacin en la que se encuentre el dato, por lo que generar una grfica mltiple formada por 4 filas y 1 columna (es
decir, pondr las grficas ordenadas en una columna).

Elaborado por Fernando Follos Pliego

43

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Formatear de forma automtica los textos y leyendas de una grfica: auto.text


Por defecto Openair tiene previsto para sus grficas la opcin de incluir texto de forma automtica en la grfica
(encabezados, leyendas, anotaciones, etc), o incluso de formatear el texto que introduzcamos nosotros en funcin de las
notaciones propias de la calidad del aire (subndices, superndices, maysculas, etc.), configurando frmulas, parmetros y
unidades. Este automatismo, como casi todos en la vida, puede tanto facilitar como complicar la representacin grfica. Dado
este hecho, es posible que sea preciso indicar a Openair que no queremos esta opcin que viene por defecto, lo que le indicaremos con la orden: auto.text=FALSE.
El presente manual o libreto de apuntes pretende realizar un breve repaso sobre las principales grficas a utilizar para el
tratamiento de datos de calidad del aire, tanto en R como en Openair, as como de las funciones y variables principales que
podemos aplicar a cada una de ellas. Desarrollar la informacin ms all de lo aqu expuesto ser parte del trabajo de investigacin posterior que haga el lector sobre los diversos manuales.
Las grficas que se vayan explicando en el manual se han probado previamente, ya que estos apuntes han sido elaborados
por un nefito en R que no se hubiese aventurado nunca a poner algo que no funcionase. Prueba de ello sern los distintos
ejemplos que irn apareciendo en cada uno de los apartados de grficas, que incluirn en su parte inferior el cdigo utilizado.

Personalizar los textos y definiciones de las leyendas de una grfica: key


Openair precisa para casi todas sus grficas de una leyenda explicativa para los parmetros que representa, donde se establece la escala en la que se representan, las unidades y la definicin del propio parmetro representado. En este sentido,
Openair permite, siempre que exista esta leyenda explicativa, personalizar sus contenidos y ubicacin a travs de los comandos:
1.
2.
3.

key.header: que permite incluir un ttulo o encabezamiento para la leyenda, donde podra ir el contaminante.
key.footer: que permite incluir un pie de leyenda, donde podran ir las unidades de representacin.
key.possition: donde se le indica el lugar de la grfica donde se quiere incluir la leyenda: abajo bottom, a la izquierda left o a la derecha right
Ej. windRose(datoscont, key.header=velocidad del viento, key.footer=metros por segundo, key. position=left), realizar una rosa
de vientos en la que la leyenda se mostrar a la izquierda de la misma, con el nombre y las unidades del parmetro representado en
castellano.

Determinadas grficas de Openair, como timePlot dispondrn de leyendas distintas a las habituales, donde tan slo se detallan los parmetros representados, sin incluir ningn tipo de escala o unidades. En estos casos, la leyenda se configurar de
forma distinta a la especificada en el punto anterior, aunque su denominacin continuar siendo igual. La forma de modificar
esta leyenda se especificar en cada grfica.

Elaborado por Fernando Follos Pliego

44

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Grfica de resumen de datos:

summaryPlot

En el tercer apartado del presente manual pudimos comprobar, dentro de las instrucciones generales del lenguaje
de programacin R, que disponamos de un comando denominado summary que permite la presentacin de un
resumen estadstico bsico de los datos.
Openair ampla esta funcin de R y permite aadir grficas a este resumen de estadsticos mediante el comando
summaryPlot.
As pues, la funcin summaryPlot puede darnos una grfica completa resumen de los datos de una determinada
estacin de control que nos puede ser de enorme utilidad, sobretodo cuando se precisa comprobar los datos con
anterioridad a la realizacin de otras grficas y operaciones sobre el conjunto de datos.
Ej. summaryPlot(datoscont). Esta funcin grfica proporciona un resumen estadstico de datos en la pantalla de datos y una grfica resumen de
cada uno de los parmetros, consistente en una grfica lineal de distribucin por aos y contaminantes, as como un histograma de los datos. Si
existen fechas con todos los datos nulos podra ocurrir que esta funcin diese error de inicio.

Variaciones sobre la funcin:


1-. Eliminacin de datos fuera de rango: clip o percentile
Se puede indicar a la funcin que elimine aquellos datos que previsiblemente puedan estar fuera de rango, evitando as
que desvirten los histogramas de resumen de datos. Para ello se puede utilizar la instruccin clip o la instruccin percentile, para indicar el percentil de datos deseado a eliminar.
Ej. summaryPlot(datoscont, clip=TRUE), o summaryPlot(datoscont, percentile=0.95), donde se le indicar a la instruccin que elimine
aquellos datos que se encuentre fuera de rango (clip) o que estn por encima del percentil 95, si es que queremos tener ms control
sobre los datos eliminados.

2-. Mostrar datos nulos del conjunto de datos: na.len


En largas series de datos es muy difcil poder comprobar dnde se producen huecos de datos. Al incluir esta variable en
la funcin, se mostraran aquellos huecos de datos que cumplan con la premisa de nmero especificada, incluyendo una
barra de color en la parte inferior de la grfica de evolucin de los datos.
Ej. summaryPlot(datoscont, na.len=48), mostrar aquellos huecos de datos en los que exista un nmero superior a los 48 datos nulos de
forma continuada.

3-. Cambiar los colores de los distintos elementos de la grfica: col


Se pueden cambiar los colores de ciertas partes de la grfica utilizando el comando col que ya vimos en las grficas R,
seguido por el elemento de la grfica summaryPlot que queremos cambiar de color. Es decir:
col.trend, para la lnea de la grfica lineal.
col.data, para la barra horizontal que muestra la existencia de datos
col.mis, para definir el color de la barra cuando no hay datos,
col.hist, para definir el color del histograma.
Ej. summaryPlot(datoscont, na.len=48, col.mis=red), mostrar aquellos huecos de datos en los que exista un nmero superior a los 48
datos nulos de forma continuada coloreandolos de rojo.

4-. Establecer el periodo de clculo de la grfica: period


Las grficas y estadsticas de la funcin summaryPlot se calculan por defecto para periodos anuales, aunque es posible
cambiarlo para decirle a Openair que lo haga de forma mensual, mediante la inclusin del comando: period=month.

Elaborado por Fernando Follos Pliego

45

> summaryPlot(datoscont, percentile=0.98, na.len=12, col.trend="blue", xlab=c("Grficas de


evolucin anual", "Histogramas"), main="Grfica resumen de parmetros en inmisin")

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

> summaryPlot(subset(datoscont, select=c("date", "o3", "no2", "no")), percenti


le=0.98, na.len=24, auto.text=FALSE, xlab=c("Grficas de evolucin
anual","Histogramas"), main="Grfica resumen de NOx y Ozono")

Sin embargo, R y Openair son lenguajes de programacin, por lo que no terminan aqu. Permiten la utilizacin cruzada de funciones y expresiones, por lo que se puede combinar la grfica con otras operaciones para simplificar o
manejar mejor los datos. Por ejemplo, podra ocurrir que el exceso de carga en el nmero de parmetros dificulte
la comprensin y estudio de la grfica, como de hecho as ocurre, o que quisisemos comprobar el resumen de
determinados parmetros. Es aqu donde podemos empezar a aplicar los conocimientos adquiridos en el apartado
3 y utilizar, por ejemplo, la funcin subset, tal y como se muestra en el siguiente ejemplo grfico.

Elaborado por Fernando Follos Pliego

46

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Rosa de Vientos:

windRose

Muchas aplicaciones no disponen de la posibilidad de representar una rosa de vientos, y aquellas que estn especficamente diseadas para calidad del aire permiten la generacin de grficas polares para la representacin de
datos relativos al a velocidad y direccin del viento, pero pocas presentan la versatilidad y posibilidades de interaccin que ofrece Openair en su Rosa de Vientos.
Variaciones sobre la funcin:
1-. La designacin de los campos de velocidad y direccin del viento: ws o wd
Se puede indicar a la funcin que seleccione los campos de velocidad (ws) y direccin del viento (wd) cuando estos campos no estn denominados mediante los acrnimos previstos por openair.
Ej. windRose(datoscont, ws=VV, wd=DD), realizar una rosa de vientos para el conjunto de datos de datoscont, adoptando como
campo de velocidad de viento el denominado con el encabezado VV, y como direccin de viento el encabezado DD.

2-. Intervalos en los que se representa la velocidad del viento: ws.int


Por defecto la funcin windRose representar la velocidad en intervalos de 2 m/sg. Sin embargo, es posible indicar a la
funcin, si estos intervalos no se adaptasen a nuestro caso en concreto, que adopte otros intervalos distintos estableciendo las velocidades a las que se dispondrn.
Ej. windRose(datoscont, ws.int=1.5), realizar una rosa de vientos para el conjunto de datos de datoscont, adoptando un intervalo de
1,5 m/sg para representar la velocidad en los distintos ejes de la rosa de vientos.

3-. Intervalos en los que se representa el ngulo: angle


Por defecto la funcin windRose adopta para representar un ngulo de 30, es decir, cada 30 representa una lnea en la
que aparecer la frecuencia media ocurrida en ese intervalo y los rangos de velocidades que se detectan en el mismo. Si
queremos una mayor o menor precisin en la rosa de vientos, ser cuestin de indicarle a la funcin que el ngulo sea
menor o mayor, respectivamente.
Ej. windRose(datoscont, ws.int=1.5, angle=15), realizar una rosa de vientos de datoscont, adoptando un intervalo de 1,5 m/sg para
representar la velocidad en los distintos ejes de la rosa de vientos y representando los datos en ejes cada 15 (un total de 24).

4-. Intervalos en los que se representa la frecuencia o porcentaje de datos de la grfica: grid.line
Por defecto la funcin windRose adoptar los intervalos que mejor se adapten al rango de frecuencias de aparicin de las
distintas direcciones de viento, adaptando los crculos concntricos de la grfica a lo que mejor se adapte. Sin embargo,
es posible personalizarlo indicando a la funcin el porcentaje aplicado a cada intervalo.
Ej. windRose(datoscont, grid.line=10), realizar una rosa de vientos para el conjunto de datos de datoscont, adoptando crculos concn
tricos en intervalos del porcentaje de velocidad que vayan de 10% en 10%.

5-. Desagregar los datos a representar para elaborar distintas rosas de vientos: type
Ya habamos visto en apartados anteriores que existe una funcin cutData que nos permite clasificar los datos y cortarlos
agregando a los mismos un campo clasificatorio. Tambin comentbamos en este apartado que muchas funciones sustituyen esta instruccin por el comando type, que de forma bsica permite hacer lo mismo, y eso es precisamente lo que
ocurre con la Rosa de Vientos.
Con el comando type podemos decirle a la funcin de rosa de vientos que divida los datos y los represente en distintas
rosas de vientos en funcin de las estaciones del ao season, los aos year, los das de la semana weekday, etc.
Tambin, al igual que ocurra con la instruccin cutData, podemos indicarle a la funcin que divida la representacin de
las rosas de vientos en funcin de una de las variables del conjunto de datos, de forma que represente cuatro rosas de
vientos en funcin de los cuatro percentiles que encuentre para el rango de datos disponible.

Elaborado por Fernando Follos Pliego

47

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. windRose(datoscont, type=pm10), realizar cuatro rosas de vientos para el conjunto de datos de datoscont, cada una para un
intervalo distinto de partculas, en funcin del rango de concentracin de partculas que dispongamos y los percentiles aplicados, lo que
podra resultar extraordinariamente til si queremos ver en qu direcciones y velocidades predominantes se nos producen las mayores
concentraciones de partculas, por ejemplo.

Incluso, si quisiramos rizar el rizo, podramos indicarle al comando type que seleccionase varios criterios para la representacin de las rosas de vientos, utilizando la expresin c que veamos en anteriores apartados.
Ej. windRose(datoscont, type=c(season , pm10)), realizar diecisis rosas de vientos para el conjunto de datos de datoscont, cuatro
filas de rosas de vientos en funcin de las estaciones, y para cada una de ellas otras cuatro en funcin de los rangos de partculas.

6-. Cambiar los colores predeterminados de la funcin grfica: cols


Ya se ve al principio de este apartado la posibilidad de utilizar el comando cols para cambiar los colores de la grfica. Esta
grfica es, en este caso, una de las que mayor potencial tiene para el uso de este tipo de utilidad, junto con otras como
polarPlot, polarFreq, etc. El cambio se puede hacer por un formato de color predeterminado de Openair, como los especificados en la introduccin, o por una serie de colores fijados por el usuario.
7-. Regular la anchura con la que se presentan los rangos de velocidad en la grfica: width
En las rosas de vientos previstas por Openair las velocidad de viento representada, adems de cambiar su color, va incrementando su anchura progresivamente, para que se puedan visualizar mejor. Mediante este comando es posible indicar a
la grfica que el diferencial aplicado a esta anchura sea mayor o menor, pudiendo as ver los ejes con una mayor o menor
anchura.
Ej. windRose(datoscont, width=1.5), realizar una rosa de vientos en las que las velocidades de viento se representarn ligeramente ms
anchas de lo normal, para que se vean mejor, siempre y cuando el nmero de ejes no sea excesivo.

8-. Establecer el nmero de intervalos o puntos de ruptura de los datos de velocidad: breaks
En las rosas de vientos previstas por Openair podemos determinar con mucha exactitud cmo podemos representar los
datos de velocidad. El comando breaks establece no el tamao de los intervalos de representacin (tal y como ocurra con
el comando ws.int) sino el nmero de intervalos en los que se representa.
Ej. windRose(datoscont, breaks=6), realizar una rosa de vientos en las que las velocidades de viento se representarn utilizando para
ello 6 intervalos en funcin de las velocidades registradas para el conjunto de datos, adaptando as la distribucin de velocidades hasta
alcanzar dichos intervalos.

Es posible tambin indicarle al comando breaks los puntos de corte en lugar del nmero de intervalos. Esto se consigue si
le damos varias variables, consiguiendo as que el comando breaks interprete que los nmeros aportados con los lmites a
adoptar para los intervalos.
Ej. windRose(datoscont, breaks=c(1,2,5,7)), realizar una rosa de vientos en la que se representar la velocidad en funcin de los si
guienter intervamos: 01, 12, 25, 57, >7.

9-. Estilo de los ejes de la grfica: paddle


En los ejes la velocidad se representa por defecto en estilo cua (rectngulos que incrementan su lateral en funcin del
incremento de los intervalos, pues este estilo se encuentra activado TRUE. Si lo desactivsemos la grfica adoptara el
estilo remo (tringulos anexos distribuidos en funcin de cada eje).
10-. Tamao del agujero central de la grfica: offset
Todas las rosas de viento disponen de un agujero central de representacin que puede ser ms o menos grande en funcin de este comando, que permite disponer el tamao del mismo. Por defecto el offset de la grfica se representa con un
tamao de 10.

Elaborado por Fernando Follos Pliego

48

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

11-. Nmero de dgitos representativos utilizados para representar las cifras: dig.lab
Se puede personalizar tambin el nmero de dgitos representativos con los que aparecern las cifras de velocidad de
viento en la grfica. Por defecto la funcin de openair asigna 5 cifras significativas que, por lo general son suficientes.
12-. Presentar una pequea anotacin relativa a los estadsticos surgidos en la grfica: annotate
Se puede indicar a la instruccin que incluya un pequea notacin con los principales estadsticos de la rosa de viento,
media y porcentaje de calmas, indicando que el comando annotate sea TRUE, opcin que se presenta por defecto.
13-. Modificar el mtodo estadstico utilizado para la representacin de los ejes: statistic
La rosa de vientos utiliza por defecto la frecuencia con la que aparecen las distintas direcciones para cada uno de los
datos del conjunto analizado de forma acumulativa, por lo que las unidades obtenidas son en porcentaje sobre el total de
datos. El comando para este estadstico por defecto es el del conteo proporcional statistic=prop.count.
Sin embargo, es posible indicarle a la instruccin windRose que el mtodo estadstico se base en la contribucin a la media de la velocidad, statistic=prop.mean, o al conteo absoluto de datos para cada uno de los ejes, sin establecer la
frecuencia de aparicin sobre el total, statistic=abs.count.
Ej. windRose(datoscont, statistic=abs.count), realizar una rosa de vientos en la que los crculos concntricos representarn no el
porcentaje, sino el nmero total de datos para cada una de las direcciones previstas, representndose los distintos rangos de velocidades

> windRose(datoscont, breaks=c(1,2,3,5,7), angle=20, cols="jet", paddle=FALSE, offset=5, key.header= "velocidad del vien
to", key.footer="metros por segundo", key.position="right", main="Rosa de vientos de la estacin")

Elaborado por Fernando Follos Pliego

49

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Rosa de Contaminantes:

pollutionRose

La Rosa de Contaminantes es una variante de la rosa de viento, un desarrollo de esta ltima funcin que bsicamente sustituye la velocidad del viento por la concentracin de un contaminante determinado de que se disponga
en el conjunto de datos, por lo que resulta interesante en su uso ms bsico para conocer el tiempo que un determinado contaminante, y sus distintas concentraciones, se encuentran en una direccin de viento determinada.
Variaciones sobre la funcin:
La funcin pollutionRose utiliza prcticamente los mismos comandos que la funcin windRose, menos para
directamente relacionados con la velocidad del viento. As:

los comandos

El comando ws, que establece el campo de la velocidad del viento en la rosa de vientos, queda sustituido por el comando pollutat, que establece el contaminante a representar en la misma.

El comando ws.int, que establece el tamao de los intervalos de la velocidad del viento a representar, se elimina de la
funcin pollutionRose, que regular los intervalos a partir de otros comandos como breaks.

El resto de comandos previstos por la funcin windRose se mantiene exactamente igual para la funcin pollutionRose. Alguno
de estos comandos, de hecho, presentan mayor utilidad para la funcin pollutionRose que para la funcin windRose. Estos
comandos permitirn desarrollar la funcin pollutionRose en funcin de mltiples criterios, estadsticos y de anlisis, como por
ejemplo:
Ej. pollutionRose(datoscont, pollutant=no2, statistic=prop.mean), realizar una grfica polar en la que la concentracin del no2 se repre
sentar en funcin del porcentaje de contribucin proporcional a la media del contaminante, permitiendo as comprobar qu direccin del
viento contribuye ms a la concentracin global del mismo, a la par que proporciona informacin sobre los distintos niveles de concentracin
alcanzados.
Ej. pollutionRose(datoscont, pollutant=no2, type=so2), realizar una rosa de vientos en la que la se representa la frecuencia con la que se
producen las distintas concentraciones del contaminante no2 en cada una de las direcciones del viento, y teniendo en cuenta los distintas

> pollutionRose (datoscont, pollutant="no2", angle=40, grid.line=10, offset=0, breaks=10, key.header="NO2",


key.position="left", main="Contribucin a la media del NO2 en funcin del SO2", statistic="prop.mean", type="so2")

Elaborado por Fernando Follos Pliego

key.footer="ug/m3",

50

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Rosa de Percentiles:

percentileRose

Otra forma de representar la concentracin de los contaminantes frente a la direccin del viento, distinta a la representacin de las concentraciones que propone la grfica pollutionRose y como paso intermedio entre esta y las
grficas polares que veremos ms adelante, es la que propone la instruccin percentileRose, que lo que hace es
representar los distintos percentiles de un contaminante seleccionado frente a la direccin del viento.
La Rosa de Percentiles modelizar los niveles de percentil de los datos del contaminante seleccionado por cada
direccin del viento, consiguiendo as una mayor claridad a la hora de mostrar la distribucin de las concentraciones y su entidad real, pudiendo ayudar a detectar aquellas fuentes de origen de la contaminacin que afecten a los
percentiles ms altos, lo que resulta de gran utilidad en combinacin con otras funciones grficas.
La funcin percentileRose utilizar los siguientes comandos bsicos:
Variaciones sobre la funcin:
1-. Introducir el contaminante a graficar: pollutant
Se debe indicar a la grfica el contaminante que se desea graficar. Tambin es posible incluso indicarle a la funcin que
represente varios contaminantes, en cuyo caso la grfica se dividir en dos, elaborando una rosa de percentiles para cada
contaminante, pero con una escala comn, lo cual es importante a la hora de seleccionar los parmetros, que debern
compartir dicha escala: pollutant=c(o3,o3ref).
2-. Desagregar los datos de un contaminante para elaborar varias grficas: type
Mediante el comando type, similar a la instruccin cutData vista en anteriores apartados, es posible desagregar los datos
de un contaminante para elaborar varias grficas en las que se contemplarn los datos en funcin de la estacin del ao
season, los aos year, los das de la semana weekday, etc.
Tambin es posible dividir la grfica de percentiles de un contaminante en funcin de otro parmetro del conjunto de datos, indicando el mismo al comando type, en cuyo caso se elaborarn cuatro grficas distintas en funcin de los rangos
alcanzados por el parmetro elegido.
3-. El valor del percentil o percentiles que se desea graficar: percentile
La instruccin representa, por defecto, cinco percentiles distintos en la misma grfica: los percentiles 25, 50, 75, 90, 95.
No obstante, tendremos la posibilidad de modificar esta opcin indicndole a la grfica mediante el comando percentile
que represente el que queramos, ya sea un nico percentil o varios.
4-. Los colores a utilizar en la grfica: cols
Al igual que en grficas anteriores, es posible indicarle a la instruccin percentileRose que utilice otros colores en la grfica distintos a los que se muestran por defecto, ya sea segn los predeterminados por Openair: increment, heat o yet,
o en funcin de lo deseado por el usuario: cols=c(green, yellow, orange, red)
5-. Rellenar las reas entre percentiles: fill
Realmente la funcin percentileRose se trata de una grfica de representacin de los percentiles mediante lneas modelizadas en funcin de los ejes de direccin del viento, salvo que, por defecto, la funcin rellena las reas que tiene entre
lneas, creando rangos a los que asigna el color del percentil superior, de forma que sea ms visual la interpretacin de
los resultados que podamos obtener. fill=TRUE
Si lo que queremos es evitar este efecto grfico, predeterminado por la funcin para facilitar la interpretacin visual de la
grfica, y lo que queremos es que se muestren nicamente las lneas correspondientes a los percentiles, bastara con
desactivar la funcin mediante un fill=FALSE

Elaborado por Fernando Follos Pliego

51

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

6-. Establecer manualmente los intervalos del eje: intervals


Las direcciones del viento se dividen automticamente en la escala que la instruccin grfica considera ms adecuada
para la representacin de los percentiles obtenidos, no obstante, mediante este comando es posible modificar los intervalos dispuestos para personalizarlos en funcin de lo que el usuario considere ms conveniente para su representacin.
7-. Establecer el ngulo en el que se representa la escala: angle.scale
Por defecto, la funcin grfica representar y numerar los intervalos de la escala en el ngulo de 45 de la grfica. Sin
embargo, esta opcin podr personalizarse mediante este comando, indicndole un ngulo distinto al establecido.

> percentileRose (datoscont, pollutant=so2, percentile=c(50,75,90,95,98,99), cols=c(green, yellow, red), intervals=c


(50,100,200,300,400,500), angle.scale=20, main=Evolucin de los percentiles de so2, key.header=Percentil de so2,
key.footer=, key.position=right)

Elaborado por Fernando Follos Pliego

52

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Grfica Polar de Frecuencias:

polarFreq

Parecida a la Rosa de Vientos, la funcin polar de frecuencia incluye una serie de innovaciones para mostrar cmo
evolucionan los parmetros que seleccionemos con respecto a la distribucin de la velocidad y direccin del viento, permitiendo a su vez tratar los datos de los parmetros utilizados a travs de mltiples comandos estadsticos.
De esta forma, la funcin polar de frecuencias escala la direccin del viento en funcin de la velocidad del mismo,
disponiendo de pequeos tramos en los que representar el resultado estadstico que corresponda al conjunto de
datos incluido dentro de esa combinacin de velocidad y direccin del viento.
Usada directamente sobre un conjunto de datos meteorolgicos, sin seleccionar ningn parmetro adicional, lo
que muestra es una representacin de las frecuencias de aparicin de esa combinacin en cdigo colorimtrico (el
nmero de horas que se produce esa combinacin de velocidad y direccin del viento), representando en la leyenda una escala de colores cuya unidad ser el nmero de horas.
Si por el contrario le indicamos a la grfica que haga uso de cualquier parmetro contaminante que queramos, lo
que har ser representar el estadstico que le indiquemos de dicho contaminante para cada una de las combinaciones de velocidad y direccin del viento. Por ejemplo, la media de los datos del contaminante que se encuentren
en esa combinacin de velocidad y direccin del viento utilizando para su representacin un cdigo colorimtrico.
Variaciones sobre la funcin:
1-. La designacin del parmetro a utilizar en la grfica: pollutant
Se puede indicar a la funcin grfica polarFreq el parmetro contaminante que deseamos representar con respecto a la
distribucin de la velocidad y direccin del viento. Tal y como ya se ha visto, si no disponemos de ningn parmetro, Openair interpreta que queremos representar el tiempo (el nmero de horas o frecuencia con que se repite la combinacin de
direccin y velocidad del viento) y genera una rosa de vientos. Si le introducimos un parmetro, las casillas de direccin
y velocidad del viento se rellenarn con el estadstico que le indiquemos (ver siguiente punto).
2-. Establecer el clculo estadstico a realizar: statistic
La instruccin grfica polarFreq requiere, por definicin, de la utilizacin de un clculo estadstico concreto para el tratamiento del conjunto de los datos, de forma que se puedan representar en la grfica. Por defecto, la instruccin grfica
utilizar la frecuencias, si no se ha incluido el contaminante, o la media, si se ha incluido el contaminante pero no el estadstico a utilizar.
La funcin polarFreq dispone de las siguientes estadsticas: la media mean, la mediana median, el mximo max, la
desviacin estandar stdev, y la media ponderada weighted.mean. La media ponderada se calcula en funcin de la
frecuencia de aparicin ( se multiplica la media de la celda por el nmero de datos y se divide por el total de datos disponibles) lo que proporciona una informacin muy til sobre las medias dominantes segn las condiciones meteorolgicas.
Ej. polarFreq(datoscont, pollutant=o3, statistic=max), proporcionar una funcin polar en la que para cada cuadrante de velocidad/
direccin de viento de la grfica, se representar la mxima concentracin de ozono detectada, asignando un cdigo de color.

3-. Incrementar o disminuir la escala de velocidad: ws.int


La instruccin permite mediante este comando incrementar o disminuir el intervalo de velocidades de viento en que se
escalan las direcciones, incrementando o disminuyendo as la resolucin de la grfica.
Ej. polarFreq(datoscont, pollutant=o3, statistic=mean, ws.int=0.5), presentar la grfica anterior aumentando la resolucin al dismi
nuir el intervalo de velociades de viento a 0.5 m/sg.

4-. Modificar el espaciado existente entre las lneas radiales: grid.line


Aunque es slo un comando para la configuracin visual de la grfica, como se ha visto en anteriores grficas polares, es
posible a travs del mismo forzar a la funcin para que establezca intervalos de representacin de las lneas concntricas
de la grfica distintos a los establecidos por defecto.
Elaborado por Fernando Follos Pliego

53

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
5-. Modificar la escala de representacin de los valores: breaks
El usuario puede modificar la escala con la que se representan los valores del parmetro seleccionado con respecto al
viento (direccin y velocidad). Para ello, al igual que con otras grficas ya vistas, se puede utilizar el comando breaks, que
divide la escala de representacin de dichos datos.
Ej. polarFreq(datoscont, pollutant=o3, statistic=max, breaks=seq(0,210,10)), elaborar una grfica polar de frecuencias donde se
representarn los mximos de ozono en funcin de la velocidad y direccin del viento, siguiendo una escala de colores que irn de 0 g/
m3 a 210 g/m3 en intervalos de 10 g/m3.

6-. Aplicar una transformacin no lineal a la escala: trans


En ocasiones determinadas representaciones grficas, como la que nos ocupa, as como determinadas funciones estadsticas, como la de mximos, pueden hacer que los valores ms elevados predominen con el mismo color en la grfica, lo
que no nos permite diferenciar bien su distribucin y resta utilidad a la funcin.
El comando trans, por defecto activado en la instruccin polarFreq (trans=TRUE), lo que hace es compensar la escala en
funcin de la concentracin, haciendo sus intervalos ms grandes a bajas concentraciones y ms pequeos a las altas, lo
que permite una mejor diferenciacin de la escala a altos valores.
Si no se desea aplicar este comando basta con indicar a polarFreq que trans=FALSE, o utilizar el comando breaks para
personalizar directamente la escala.
7-. Cambiar los colores predeterminados de la grfica: cols
Como se ha visto en anteriores grficas, Openair permite personalizar los colores por otros ya programados en el paquete
de R, o personalizarlos al gusto del usuario. El comando cols se mantiene tambin en la grfica polarFreq, donde presenta el mismo funcionamiento.
8-. Desagregar los datos para hacer varias grficas: type
El comando type, similar a la instruccin cutData, ya se ha tratado en anteriores grficas, y forma parte fundamental del
estudio grfico de los datos. Mediante este comando se pueden dividir las grficas en funcin de diversas categoras como das y noche daylight, estaciones del ao season, o das de la semana weekday, etc.
Tambin se puede forzar al comando a que proceda a la divisin de los datos en funcin de otro parmetro del conjunto
de datos, o incluso se puede forzar la divisin en funcin de varios parmetros mltiples, como se ha visto en otras grficas.
9-. Cambiar el nmero mnimo de datos por combinacin: min.bin
Este comando es preferible no usarlo si no se quiere afectar al conjunto de los datos y perder determinados datos. Mediante el comando min.bin lo que se hace es indicarle a la instruccin el nmero mnimo de datos permitido para cada
conjunto o casilla de direccin / velocidad de viento, es decir, el nmero mnimo de datos que se considera representativo
que existan para hacer el clculo estadstico que le indiquemos. Por defecto el valor adoptado por la grfica es 1, por lo
que se usan todos los datos del conjunto de datos.
No obstante, el usuario puede indicar a la grfica un nmero superior, en cuyo caso, lo que hace la instruccin es contar
el nmero de datos para cada celda o rango de velocidad / direccin de viento. Si el nmero existente de datos por celda
no alcanza el nmero mnimo indicado por el usuario, los datos disponibles son eliminados del conjunto de datos asignndoles la denominacin n.a. para posteriormente realizar el clculo estadstico y graficar los datos.
En todo caso, el comando min.bin, utilizado con precaucin sobre copias del conjunto de datos que estemos manejando,
puede ser de enorme utilidad al filtras los datos y representan solo aquellas velocidades y direcciones del viento que son
ms representativas, tal y como se puede ver en el siguiente ejemplo, al que se acompaa no slo la grfica que depura
los datos mediante el comando min.bin, sino la que originalmente resultaba sin la mencionada depuracin.
Ej. polarFreq(datoscontcopia, pollutant=no2, statistic=max, ws.int=0.5, offset=5, min.bin=5), proporcionar una grfica en la que
se eliminarn aquellas celdas con velocidad y direccin del viento en las que no se encuentre ms de cinco datos de contaminantes, lo
que en la prctica viene a eliminar aquellas combinaciones de velocidad y direccin que resultan menos representativas. En la grfica
adjunta se puede ver que el comando min.bin depura en gran medida los datos, y deja tan slo aquellos ms representativos.

Elaborado por Fernando Follos Pliego

54

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

10-. Marcar un mximo para la representacin de la velocidad: ws.upper


Si bien la instruccin polarFreq disea una grfica adaptada al rango de velocidades de que dispone el conjunto de datos,
es posible que el usuario le indique a la misma un mximo de velocidades a usar distintos, ya sea mayor (para alejar la
grfica si el rango es muy pequeo) o menor (si lo que se quiere es ampliar la grfica).
11-. Cambiar el tamao del agujero central: offset
Tal y como ya se ha explicado para otras grficas polares, es posible hacer que el agujero central de la grfica cambie de
tamao mediante el comando offset.
12-. Asignar un color al borde de la celda representada en la grfica: border.col

> polarFreq (datoscontcopy, pollutant=no2, statistic=max, ws.int0.4, ws.upper=8,


min.bin=5, grid.line=2, border.col=white, main=Distribucion de maximos de NO2
segn la velocidad y direccion del viento, key.header=Escala de maximos de NO2,
key.footer=)

Una utilidad muy interesante de configuracin de esta grfica es la de dotar de color al borde de las celdas de velocidad y
direccin del viento. Por defecto los bordes son transparentes y las celdas se juntan unas con otras, lo que puede hacer
que se pierda resolucin en la visualizacin de ciertos cambios cromticos a pequea escala. Dotando de color al borde
de las celdas, sin que estos tengan que ser muy oscuros, stas se separan y la grfica adquiere una presencia muy distinta.

Elaborado por Fernando Follos Pliego

55

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Grfica Polar:

polarPlot

La grfica polar polarPlot es muy parecida en cuanto a su concepto a la grfica polar de frecuencias polarFreq vista anteriormente, por cuanto que representa un parmetro seleccionado en funcin de las distintas combinaciones
de direccin y velocidad del viento, salvo que la representacin en este caso responde a un modelizado matemtico que suaviza la cuadrcula y termina por proporcionar una superficie continua.
La utilidad de este tipo de grficas es evidente puesto que son capaces de identificar con bastante detalle fuentes
potenciales de origen de la contaminacin y su influencia respecto a los niveles globales de contaminacin detectados por una estacin.
La utilidad se incrementa tambin si se utiliza como parte del estudio por puntos de una red de estaciones prximas , o si el estudio se realiza en combinacin con un anlisis exhaustivo del entorno micro y marco escalar de la
estacin. Adems, la herramienta grfica polarPlot presenta numerosos comandos de enorme utilidad para el anlisis combinado de los niveles de contaminacin, tal y como se ver a continuacin.
Variaciones sobre la funcin:
1-. Parmetro contaminante a representar pollutant
El comando pollutant es preciso para indicarle a la grfica el parmetro que debe representar. En caso de no introducirlo,
la instruccin polarPlot acude automticamente a buscar el parmetro nox.
Tambin tenemos la oportunidad de indicar a la instruccin que represente ms de un parmetro contaminante, por ejemplo pollutant=c(pm10,pm25), que presentan concentraciones similares. Mediante esta opcin polar Plot representar
dos grficas polares, una por cada parmetro, compartiendo una misma escala. Esta opcin es muy til, por ejemplo, para
las intercomparaciones de equipos o tcnicas.
2-. Parmetro a representar en los ejes de direccin: x
Por defecto la funcin polarPlot utiliza la velocidad del viento para combinarla con la direccin, al igual que suceda con la
instruccin polarFreq. De hecho, si la velocidad del viento no tiene la denominacin estndar, es posible asignarla mediante el comando ws vista en grficas anteriores.
Sin embargo, una de las novedades ms interesantes que aporta la funcin polarPlot, es que ha sido diseada con la
capacidad de sustituir la velocidad del viento en la grfica, pudiendo disponer en su lugar de cualquier otro parmetro.
Este hecho aporta valor aadido a la grfica, ya que se puede ver la evolucin de dos parmetros en paralelo a la direccin del viento. La cuestin fundamental en este caso es que la variable a representar frente a la direccin del viento debe
ser selectiva de alguna manera frente al parmetro que se desea estudiar.
Por ejemplo, la utilizacin de una variable como
la temperatura, en sustitucin de la velocidad del
viento, puede ser muy til para estudiar la generacin de emisiones difusas de compuestos
orgnicos voltiles con el incremento de la temperatura, lo que unido a su representacin frente
a la direccin del viento, proporciona a su vez
informacin sobre su procedencia, tal y como se
observa en la siguiente grfica.
Ej. polarPlot (datoscont, pollutant=cov, x=t), proporcionar la grfi
ca que se muestra a continuacin donde se representan las concentra
ciones medias de compuestos orgnicos voltiles en relacin al incre
mento de la temperatura y la direccin del viento, pudiendo observarse
cmo existe una direccin predominante.

Elaborado por Fernando Follos Pliego

56

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

3-. Dividir los datos para generar varias grficas en funcin de los criterios dispuestos: type
El comando type, similar a la instruccin cutData, ya se ha tratado en anteriores grficas, y forma parte fundamental del
estudio grfico de los datos. Mediante este comando se pueden dividir las grficas en funcin de diversas categoras como das y noche daylight, estaciones del ao season, o das de la semana weekday, etc.
Tambin se puede forzar al comando a que proceda a la divisin de los datos en funcin de otro parmetro del conjunto
de datos, o incluso se puede forzar la divisin en funcin de varios parmetros mltiples, como se ha visto en otras grficas.
4-. Utilizar diversos parmetros estadsticos: statistic
La Grfica polarPlot puede utilizar las siguientes funciones estadsticas para la representacin de los datos: la media
mean, que se aplica por defecto, el mximo max, la mediana median, la desviacin estndar stdev y la media ponderada weighted.mean, al igual que en la funcin polar de frecuencias vista anteriormente.
Sin embargo, se debe tener en cuenta que esta instruccin grfica aplica a posteriori un sistema de modelizado matemtico a los resultados obtenidos, por lo que la utilizacin de determinados comandos estadsticos, como la media ponderada
en funcin de la frecuencia, pueden no corresponderse con la realidad de los datos y desvirtuar la grfica.
5-. Aumentar la resolucin de la grfica: resolution
Es posible indicar a la grfica que opte por dos tipos de resolucin del renderizado utilizado. La resolucin normal
normal, que se encuentra por defecto, y que suele ser suficiente en la mayora de los casos, y la resolucin de ms detalle fine, que requiere de mayores recursos para el clculo, pero que proporciona grficas ms detalladas.
6-. Establecer los valores lmite para la representacin: limits
Por defecto la instruccin polarPlot escoge sus valores lmite de forma automtica. No obstante, el usuario puede utilizar
otros valores lmite distintos, debiendo indicar a la grfica el mnimo y el mximo que tiene que aplicar el comando. Este
comando es especialmente til si queremos centralizar los resultados obtenidos para determinadas concentraciones, evitando as interferencias.
Ej. polarPlot (datoscont, pollutant=cov, x=t, limits=c(2,7)), conseguir que la grfica vista en l pgina anterior no se vea tan dispersa
a lo largo de todo el rango de temperaturas, representando aquellas medias de compuestos orgnicos voltiles que se encuentran entre
2 y 7, lo que eliminar gran parte del contorno exterior de la grfica.

7-. Limitar la modelizacin de los datos: exclude.missing


La instruccin polarPlot modeliza los datos a lo largo de todo el rango de velocidades del viento (o del parmetro que se
haya designado como x), interpolando los datos existentes a aquellas zonas donde no los hay. Sin embargo, la representacin grfica global de este modelizado est desactivada por defecto en polar Plot, exclude.missing=TRUE, de forma
que el modelizado se aplique slo a los datos existentes, evitando modelizar aquellos que no existan, lo que permite evaluar la coherencia de los datos reales y comprobar si existe discrepancias en los mismos.
Si se quiere desactivar este comando, de forma que la grfica polatPlot modelice las concentraciones en toda su extensin, basta con indicar que exclude.missing=FALSE, y la grfica se rellenar en toda su extensin.
8-. Mostrar la incertidumbre de la prediccin: uncertainty
Es posible ver la incertidumbre con la que se calcula la superficie de la grfica, indicando al comando que se active: uncertainty=TRUE. Al activar el comando se generan tres grficas que comparten la escala, donde se muestra la prediccin
o modelizacin realizada junto a la incertidumbre aplicada, tanto inferior como superior, lo que se muestra muy til a la
hora de comprobar si la grfica se corresponde o no a la realidad.
9-. Cambiar los colores predeterminados de la grfica: cols
Como se ha visto en anteriores grficas, Openair permite personalizar los colores por otros ya programados en el paquete
de R, o personalizarlos al gusto del usuario. El comando cols se mantiene tambin en la grfica polarPlot, donde presenta
el mismo funcionamiento.
Elaborado por Fernando Follos Pliego

57

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

10-. Cambiar el nmero mnimo de datos por combinacin: min.bin


Este comando es preferible no usarlo si no se quiere afectar al conjunto de los datos y perder determinados datos. Mediante el comando min.bin, tal y como se ha visto en la grfica polarFreq, lo que se consigue es indicarle a la instruccin el
nmero mnimo de datos permitido para cada conjunto o casilla de direccin / velocidad de viento, es decir, el nmero
mnimo de datos que se considera representativo que existan para hacer el clculo estadstico que le indiquemos. Por
defecto el valor adoptado por la grfica polarPlot es 1, por lo que se usan todos los datos del conjunto de datos.
No obstante, el usuario puede indicar a la grfica un nmero superior, en cuyo caso, lo que hace la instruccin es contar
el nmero de datos para cada celda o rango de velocidad / direccin de viento. Si el nmero existente de datos por celda
no alcanza el nmero mnimo indicado por el usuario, los datos disponibles son eliminados del conjunto de datos asignndoles la denominacin n.a. para posteriormente realizar el clculo estadstico y graficar los datos.
El comando es en s muy til, tal y como ya hemos visto, pero puede resultar muy peligroso para la integridad del conjunto
de datos que tengamos, por lo que es recomendable ejecutarlo sobre ventanas de datos que sean copia de las que ya
disponemos.
11-. Indicar el valor mximo de la velocidad del viento: upper
El usuario puede cambiar el lmite superior a aplicar a la velocidad del viento que se representa en la grafica, lo que es
especialmente til cuando existen unos pocos datos a latas velocidades que desvirtan la escala e impiden comprobar
con comodidad lo que ocurre a rangos de velocidad inferiores.
12-. Cambiar el ngulo en el que se representa la escala: angle.scale
Por defecto, la escala de velocidades del viento o de las unidades del parmetro seleccionado por el usuario se representan en el ngulo 315 de la grfica (cuadrante superior izquierdo). Sin embargo, pudiera ocurrir que la utilizacin de este
ngulo impidiese una correcta visualizacin de algn tipo de fenmeno de inters con respecto a las distribuciones, por lo
que es posible cambiar el mismo personalizando el ngulo mediante este comando.
13-. Establecer las unidades de la escala: units
Es posible establecer las unidades en las que se representa la escala en la grfica mediante el comando units, al que se
debe aadir entre comillas las unidades que se presentan en los ejes.
14-. Forzar los valores negativos de la modelizacin a positivos: force.positive
La modelizacin realizada por la instruccin polarPlot podra arrojar valores negativos para determinados puntos de la
grfica, lo que evidentemente sera del todo imposible, si se tratase de un parmetro contaminante (que es el normalmente utilizado en estas grficas).
Por defecto, la instruccin polarPlot tiene activada la opcin de forzar los datos positivos, force.positive=TRUE, pues en
la mayora de los casos los valores negativos no seran correctos. Sin embargo, es posible cambiar esta opcin si el usuario considera que el parmetro a representar puede tener valores negativos.
15-. Cambiar el parmetro de modelizado K: k
K es el parmetro utilizado por la ecuacin de modelizacin que utiliza polarPlot para el suavizado de la cuadrcula de
datos que forma la superficie de la grfica. La amplia experiencia de los programadores de Openair en la explotacin de
este tipo de grficas ha terminado por recomendar que el valor por defecto de esta variable sea de k=100, pues es el que
se ha demostrado ms eficiente, aunque se ha previsto la posibilidad de que el usuario de la instruccin introduzca un
valor distinto.
En cualquier caso, conviene saber que valores de K superiores a 100 generan grficas algo ms definidas en su malla
pero incrementando enormemente el tiempo de computacin, sin que realmente se afecte de forma relevante a las predicciones que arroja el modelo. Valores de K inferiores a 100 incrementan la suavidad con la que se presenta la grfica pero
pueden generar fallos en aquellos puntos en los que los datos sean mnimos, lo que an es menos recomendable.

Elaborado por Fernando Follos Pliego

58

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

16-. Normalizar los datos en funcin del promedio: normalise


En puntos anteriores hemos visto que podemos solicitar a polarPlot que represente varias grficas polares para distintos
contaminantes, indicando al comando pollutant que adopte varias variables, aunque tambin hemos precisado a este
respecto que, al compartir escala, es recomendable que las concentraciones de ambos contaminantes se muevan en
escalas muy similares.

> polarPlot (datoscont, pollutant=no2, statistic=median, exclude.missing=FALSE, an


gle.scale=135, ws.int=0.2, resolution=fine, units=m/s, main=Distribuicon de las media
nas de NO2, key.header=Medianas, key.footer=Nivel de NO2)

Con este nuevo comando, la grfica ofrece la posibilidad de normalizar los resultados una vez realizada la modelizacin,
dividiendo los resultados obtenidos por la media de concentracin del parmetro seleccionado, lo que normaliza a una
nica escala las concentraciones encontradas para los distintos contaminantes. Este comando resulta as de enorme utilidad si lo que se quiere es comparar concentraciones de parmetros que se encuentran a distintas escalas, eliminando la
limitacin que tenamos anteriormente.

Elaborado por Fernando Follos Pliego

59

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Grfica Temporal Polar o Funcin Anular:

polarAnnulus

La funcin polar temporal o funcin anular, dada su forma de anillo, es una funcin que est todava en fase de
desarrollo e investigacin, pero que ya apunta buenas maneras en cuanto a su potencial y practicidad, razn por la
que se incluye en este manual.
Dicha funcin representa la concentracin alcanzada del contaminante que se seleccione en funcin de los aspectos temporales que se precisen, actuando como si quisisemos representar las opciones temporales del comando
type o cutData en los ejes de direccin del viento. Dicho de otra forma, la funcin polarAnnulus viene a representar
en la direccin del viento las concentraciones alcanzadas del parmetro en funcin de las divisiones temporales
que indique el usuario.
De esta forma, se puede ver, por ejemplo, a qu horas del da se producen las mayores concentraciones de un
contaminante dado (la escala de las horas la darn los ejes de la grfica) y en qu direccin del viento se producen de forma mayoritaria, lo que aporta un potencial adicional a la hora de identificar las fuentes de origen de la
contaminacin.
Si bien es cierto que este mismo efecto se podra lograr con el comando type y la grfica polarPlot vista en el anterior apartado, sin perder por ello la definicin de la velocidad del viento, la instruccin polarAnnulus nos permitira
ver la evolucin un una sola grfica y de manera ms visual.
Se debe prestar especial atencin al hecho de que el conjunto de datos sea lo suficientemente grande y que exista
un correcto registro de la direccin del viento para que el programa pueda ejecutar correctamente el modelizado
de los datos sin presentar ningn error en la prediccin matemtica que realiza para la representacin grfica, o
huecos en blanco en la superficie de la grfica.
Del mismo modo, al ser una funcin grfica que representa periodos temporales en los ejes de direccin, habr
que tener en cuenta que, en el caso de que dichos periodos se integren a escala horaria, podran quedar afectados por el horario local del rea de estudio, lo que habr que tener en cuenta, llegando incluso a ser necesaria la
transformacin de datos de GMT a horario local (ver punto 3 del apartado de variaciones sobre la funcin).
Variaciones sobre la funcin:
1-. El contaminante o parmetro a representar: pollutant
Se deber indicar a la instruccin grfica el contaminante a representar mediante este comando. Tambin se le puede
indicar a la grfica, al igual que se ha visto en otras funciones polares, que represente varios parmetros que estn dentro
de la misma escala, para realizar la comparativa grfica correspondiente, generando as varias grficas de anillo con la
misma escala.
2-. Modificar la resolucin a aplicar a la grfica: resolution
Al igual que ocurra con la grfica polarPlot, es posible indicarle a la instruccin polarAnnulus el tipo de resolucin que
queremos aplicar a nuestra grfica: normal o fine. En esta ocasin, sin embargo, la opcin fine es la que encontraremos por defecto, lo que habr que tener en cuenta si lo que queremos es agilizar la generacin grfica para determinados
paquetes de datos.
3-. Corregir a horario local los datos: local.time
Es posible indicarle a esta grfica que corrija los datos del conjunto a horario local mediante este comando que, no obstante, conviene recordar que est activado por defecto TRUE, por lo que siempre realizar la mencionada correccin,
salvo que se le indique lo contrario.

Elaborado por Fernando Follos Pliego

60

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
La opcin de corregir a horario local es muy interesante para esta funcin puesto que los niveles en inmisin se detectan
en realidad en horario local, y en conjuncin con el horario que siguen las actividades generadoras de emisiones a la atmsfera (que tambin se rigen por el horario local). Adems, al mencionado horario local le afectar el cambio horario que
se produce en determinados pases de verano a invierno, al igual que a las actividades emisoras, lo que desvirtuara an
ms las grficas polares anulares si utilizsemos los datos directamente en GMT.
No obstante, conviene recordar que el paquete Openair es de origen britnico, por lo que la correccin se realiza en funcin de la franja horaria britnica (BTU), que no tiene por qu coincidir con la franja temporal local aplicable a la estacin
de inmisin sobre la que queramos realizar el estudio de datos. De darte este hecho, el comando local.time no sera prctico en nuestra funcin, y deberamos desactivarlo para evitar que desvirte la representacin, debiendo realizar el cambio
a horario local directamente sobre los datos.
4-. Establecer el periodo a representar en los ejes: period
Ya hemos comentado, al principio de esta instruccin grfica, que la principal novedad de la funcin grfica polarAnnulus
es la utilizacin de los periodos temporales como base para dividir los ejes que representan la direccin del viento. En
este sentido, mediante el comando period, la instruccin polarAnnulus permite representar las horas del da hour, las
estaciones del ao season, los das de la semana weekday, o incluso la propia evolucin de los datos a lo largo de
todo el periodo contemplado por el conjunto de datos trend.
Ej. polarAnnulus(datoscont, pollutant=no2, period=hour), representar las concentraciones de NO2 para cada una de las direccio
nes del viento, dividiendo dichas direcciones en cada una de las horas del da, lo que nos permite ver a qu horas se producen las con
centraciones medias ms altas, y en qu direcciones del viento, permitiendo as una mejor caracterizacin de las fuentes de origen.

5-. Dividir la grfica desagregando los datos: type


Este comando, visto en anteriores instrucciones grficas, consigue en el caso de la funcin polarAnnulus, dar una vuelta
de tuerca ms al concepto de desagregacin de datos al permitir una doble clasificacin de los mismos, en conjuncin
con el comando period visto anteriormente.
Si se utiliza de forma adecuada, permite aadir a la funcin un doble criterio de clasificacin de los datos, en primer lugar
el criterio temporal establecido por period y representado en los ejes de direccin del viento, y en segundo lugar el criterio
temporal o de clasificacin en el que dividir la grfica el comando type.
Ej. polarAnnulus(datoscont, pollutant=no2, period=hour, type=weekday), dividir la grfica vista en el punto anterior en siete
grficas distintas, una por cada da de la semana, y establecer para cada una de esas grficas polares las concentraciones medias detec
tadas de NO2 para cada hora y direccin del viento, lo que aporta una valiosa informacin sobre las periodicidades con las que se dan las
concentraciones ms altas, y las direcciones en las que preponderan las mismas. Un ejemplo de esta funcin grfica es el que se muestra
a continuacin, segn los criterios de desagregacin aqu expuestos, aunque en el ejemplo de final de apartado tambin se muestran los
datos desagregados mediante el comando type.

Elaborado por Fernando Follos Pliego

61

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

6-. Lmites en los que se mover la escala de colores: limits


La instruccin polarAnnulus escoge automticamente una escala de representacin del contaminante seleccionado en
funcin del rango en el que se muevan las concentraciones del mismo, optimizando la escala para representar todos los
valores. Sin embargo, en algunas ocasiones puede ser necesario indicar al programa que utilice un rango de datos distinto al originalmente indicado, para lo cual se utiliza el comando limits, al que hace falta indicarle los valores mnimo y mximo en los que se mover la representacin grfica a realizar, como por ejemplo limits=c(10,80)
7-. Cambiar la combinacin de colores a utilizar en la grfica: cols
Como se ha visto en anteriores grficas, Openair permite personalizar los colores por otros ya programados en el paquete
de R, o personalizarlos al gusto del usuario. El comando cols se mantiene tambin en la grfica polarAnnulus, donde presenta el mismo funcionamiento.
8-. Cambiar el ancho aplicado al anillo: width
Este comando afecta exclusivamente a la representacin grfica y no a las unidades o a la escala en que se presenten los
datos, permitiendo cambiar el ancho a aplicar a la representacin anular atendiendo a tres posibles variantes: thin, para
un anillo fino, normal para un grosor estandar del anillo, aplicado por defecto, o fat cuando la representacin requiere
de un grosor superior.
9-. Establecer el nmero mnimo de datos representativos: min.bin
Este comando es preferible no usarlo si no se quiere afectar al conjunto de los datos y perder determinados datos. Mediante el comando min.bin, tal y como se ha visto en las grficas polares anteriores, lo que se consigue es indicarle a la
instruccin el nmero mnimo de datos permitido para cada conjunto o casilla de direccin / velocidad de viento, es decir,
el nmero mnimo de datos que se considera representativo que existan para calcular el promedio. Por defecto el valor
adoptado por la grfica polarAnnulus es 1, por lo que se usan todos los datos del conjunto de datos.
No obstante, el usuario puede indicar a la grfica un nmero superior, en cuyo caso, lo que hace la instruccin es contar
el nmero de datos para cada celda o rango de velocidad / direccin de viento. Si el nmero existente de datos por celda
no alcanza el nmero mnimo indicado por el usuario, los datos disponibles son eliminados del conjunto de datos asignndoles la denominacin n.a. para posteriormente realizar el clculo estadstico y graficar los datos.
El comando es, en s mismo, muy til, tal y como ya hemos visto en anteriores apartados, pero puede resultar muy peligroso para la integridad del conjunto de datos que tengamos, por lo que es recomendable ejecutarlo sobre ventanas de
datos que sean copia de las que ya disponemos.
10-. Eliminar aquellas previsiones demasiado lejos del dato real: exclude.missing
La instruccin polarAnnulus modeliza los datos a lo largo de todo el anillo, en funcin del rango temporal asignado por el
comando period, interpolando los datos existentes a aquellas zonas donde no los hay. Sin embargo, la representacin
grfica global de este modelizado est desactivada por defecto en polar Plot, exclude.missing=TRUE, de forma que el
modelizado se aplique slo a los datos existentes, evitando modelizar aquellos que no existan, lo que permite evaluar la
coherencia de los datos reales y comprobar si existe discrepancias en los mismos.
Si se quiere desactivar este comando, de forma que la grfica polatPlot modelice las concentraciones en toda su extensin, basta con indicar que exclude.missing=FALSE, y la grfica se rellenar en toda su extensin.
11-. Rellenar la grfica para cubrir las fechas no disponibles: date.pad
Si utilizamos el periodo trend, que viene por defecto en la grfica polarAnnulus, y por lo tanto representamos las concentraciones a lo largo de todo el periodo de datos disponible, la grfica extender sus anillo desde la fecha de inicio del paquete de datos hasta la fecha de final del mismo.
Sin embargo, mediante el comando date.pad es posible indicar a la grfica que rellene el anillo, utilizando la modelizacin
de datos, hasta alcanzar como lmites de representacin los comienzos y finales de los aos, en funcin del rango de
datos disponible, extendiendo as sus predicciones a los periodos anuales completos, lo que facilita la comprensin de las
grficas. La activacin del comando para permitir este modelizado se realizar mediante la expresin date.pad=TRUE.
Elaborado por Fernando Follos Pliego

62

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

12-. Forzar resultados positivos en la prediccin del modelo: force.possitive


Tal y como ya se vio en la grfica polarPlot, en ocasiones el modelizado de la superficie de la grfica a travs del modelo
matemticos previsto puede terminar por dar datos de concentracin negativos. Evidentemente, al hablar de concentraciones de contaminantes, este hecho es imposible por definicin, por lo que por defecto la instruccin polarAnnulus tiene
activado el comando force.possitive=TRUE, lo que hace que los datos negativos del modelo se fuercen a positivos.

13-. Cambiar el parmetro de modelizado K: k


K es el parmetro utilizado por la ecuacin de modelizacin que utiliza polarAnnulus, al igual que en el caso de la funcin
polarPlot, para el suavizado de la cuadrcula de datos que forma la superficie de la grfica. La amplia experiencia de los
programadores de Openair en la explotacin de este tipo de grficas ha terminado por recomendar que el valor por defecto de esta variable sea de k=100, pues es el que se ha demostrado ms eficiente, aunque se ha previsto la posibilidad de
que el usuario de la instruccin introduzca un valor distinto: superior, si lo que se quiere es una grfica algo ms definida,
o inferior a 100 si se quiere incrementar la suavidad y reducir el tiempo de computacin.
14-. Normalizar los datos en funcin del promedio: normalise
En puntos anteriores hemos visto que podemos solicitar a polarAnnulus que represente varias grficas polares para distintos contaminantes, indicando al comando pollutant que adopte varias variables, aunque tambin hemos precisado a este
respecto que, al compartir escala, es recomendable que las concentraciones de ambos contaminantes se muevan en
escalas muy similares.
Con este nuevo comando, la grfica ofrece la posibilidad de normalizar los resultados una vez realizada la modelizacin,
dividiendo los resultados obtenidos por la media de concentracin del parmetro seleccionado, lo que normaliza a una
nica escala las concentraciones encontradas para los distintos contaminantes. Este comando resulta as de enorme utilidad si lo que se quiere es comparar concentraciones de parmetros que se encuentran a distintas escalas, eliminando la
limitacin que tenamos anteriormente.

> polarAnnulus (datoscont, pollutant="so2", period=hour, type=season, width=fat, exclude.missing=FALSE, cols=increment, layout=c(4,1),
key.header=Concentracin de SO2, key.footer=, key.possition=bottom, main=Evolucin horaria de las concentraciones de SO2 por estaciones)

Elaborado por Fernando Follos Pliego

63

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Grfica Polar de Particiones:

polarCluster

La Grfica Polar con clusters o particiones es una grfica complementaria a las grficas polares vistas hasta el
momento, y especficamente a la grfica polarPlot. Su uso est destinado en exclusividad al tcnico ambiental encargado del anlisis de los datos de calidad del aire, por cuanto que su misin es hacer particiones de la superficie
polar y representarla como subconjuntos de datos con caractersticas similares en una grfica polar, lo que permite
identificar as reas de estudio para un procesado posterior de los datos con el resto de grficas y funciones de
Openair.
El fundamento de uso de esta grfica consiste en eliminar el error o sesgo que pudiese existir en el estudio directo
de grficas como polarPlot, al aplicarse por parte del tcnico criterios que podran resultar arbitrarios, ya sea por
existir condicionantes previos en el estudio de los datos, o por factores de diseo que pudiesen afectar a su interpretacin (como por ejemplo el uso de determinadas escalas de colores).
La funcin polarCluster, al ejecutarse, asume para su clculo una contribucin homognea de los componentes
vectoriales del viento y de la concentracin del contaminante seleccionado por el usuario, para luego estandarizar
los datos disponibles y posteriormente aplicar una tcnica de particin de la superficie de la grfica polar basada
en un algoritmo PAM (Partition Around Medoids), uno de los ms usados en el anlisis de clusters por particin
basada en centroides (k-means) . De esta forma, a nivel prctico lo que conseguimos es disponer de reas en las
que los datos disponen de caractersticas muy parecidas y sobre las que se podr realizar un anlisis con fundamentos cientficos slidos.
A pesar de que podra resultar accesoria, la grfica polarCluster es esencial a la hora de realizar una prospeccin
correcta de grandes series de datos de calidad del aire (tambin conocida como minera de datos) y evitar un tratamiento arbitrario de los mismos.
La funcin polarCluster se ejecutar bajo los siguientes comandos bsicos:
Variaciones sobre la funcin:
1-. Parmetro contaminante a representar pollutant
El comando pollutant es preciso para indicarle a la grfica el parmetro que debe representar. En caso de no introducirlo,
la instruccin polarCluster acude, al igual que polarPlot, automticamente a buscar el parmetro nox. Sin embargo, y al
contrario que en la grfica polarPlot, la funcin polarCluster no admitir para la representacin ms de un parmetro.
2-. Parmetro a representar en los ejes de direccin: x
Por defecto la funcin polarCluster, al igual que polarPlot, utiliza la velocidad del viento para combinarla con la direccin
del viento representada en los ejes. Sin embargo, es posible sustituir la velocidad del viento en la grfica, pudiendo disponer en su lugar de cualquier otro parmetro, tal y como ya se contemplaba con polarPlot. Este hecho permite ampliar el
estudio por reas a los mismos niveles que en la funcin polarPlot.
3-. Nombre del campo que representa la direccin del viento: wd
En ocasiones es posible que el campo de direccin del viento no aparezca en nuestro conjunto de datos como wd (su
abreviatura en ingls), por lo que con el comando wd deberemos indicar a la funcin polarCluster el nombre del campo de
nuestro conjunto de datos que dispone de los datos sobre direccin de viento para que sea capaz de representarlos en
una grfica polar.

Elaborado por Fernando Follos Pliego

64

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
4-. Establecer el nmero de clusters a representar: n.clusters
Uno de los parmetros a configurar en la funcin polarCluster de mayor importancia es el que establece el nmero de
clusters o particiones a realizar en la grfica, ya que un nmero bajo de particiones diluir las reas de inters al presentar
pocas superficies, por lo que ser imposible interpretar el inters surgido en las distintas reas de estudio, y un nmero
muy elevado puede hacer impracticable la interpretacin y posterior estudio de los datos al existir demasiadas divisiones.
En ocasiones puede ser interesante indicar a la funcin que utilice un rango de variables, del tipo n.clusters=a:b , para
utilizar varios clusters distintos a la vez. De esta forma la grfica se dividir para representar tanta grficas polares como
clusters se le hayan indicado en el rango, y el usuario podr comprobar qu nmero de clster se adapta mejor a la descripcin de las zonas de estudio ms representativas.
5-. Cambiar el ngulo en el que se representa la escala: angle.scale
Por defecto, la escala de velocidades del viento o de las unidades del parmetro seleccionado por el usuario se representan en el ngulo 315 de la grfica (cuadrante superior izquierdo). Sin embargo, pudiera ocurrir que la utilizacin de este
ngulo impidiese una correcta visualizacin de algn tipo de fenmeno de inters con respecto a las distribuciones, por lo
que es posible cambiar el mismo personalizando el ngulo mediante este comando.
6-. Cambiar los colores predeterminados de la grfica: cols
Como se ha visto en anteriores grficas, Openair permite personalizar los colores por otros ya programados en el paquete
de R, tales como Accent, Dark2, Paired, etc. o personalizarlos al gusto del usuario. El comando cols se mantiene
tambin en la grfica polarCluster, donde presenta el funcionamiento habitual.
7-. Establecer las unidades de la escala: units
Es posible establecer las unidades en las que se representa la escala en la grfica mediante el comando units, al que se
debe aadir entre comillas las unidades que se presentan en los ejes.

Se muestra a continuacin la ejecucin de una Grfica polar de clusters sobre el mismo conjunto de datos y el
mismo parmetro contaminante, en este caso el SO2, que una grfica polarPlot. Se puede observar como las particiones calculadas muestran fielmente las reas de estudio que presentan los datos, sirviendo as como fundamento matemtico para la realizacin de estudios posteriores centrados en las reas de mayor inters.

> polarCluster ( datoscont, pollutant="so2", main="Grfica polar de particiones para el estudio del SO2", n.cluster=6).
> polarPlot ( datoscont, pollutant="so2", main="Grafica Polar del SO2")

Elaborado por Fernando Follos Pliego

65

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Funcin Grfica de Tiempo:

timePlot

La funcin grfica de tiempo se corresponde con la funcin grfica clsica, similar al Plot que anteriormente hemos
visto que utilizaba R, en la que se representa la evolucin de las concentraciones de un determinado parmetro,
representado en el eje Y, frente al tiempo, representado en el eje X.
La funcin grfica de tiempo es en s misma una grfica tpica, ampliamente utilizada en calidad del aire, y disponible a travs de muchas de las actuales herramientas de clculo del mercado. Sin embargo, Openair dota a esta
funcin grfica de unas peculiaridades y una versatilidad que la acaban convirtiendo en algo nico, muy til y prctico para el estudio de la evolucin temporal de la contaminacin.
As, la funcin timePlot diseada en Openair nos permitir graficar el nmero de parmetros que deseemos, indicarle el periodo de tiempo que queramos, para graficar con mayor o menor detalle, en una sola grfica o en varias,
entre otras muchas opciones de configuracin que se estudiarn a travs de los siguientes comandos.
Variaciones sobre la funcin:
1-. Los contaminantes a representar en la grfica: pollutant
A la grfica timePlot se le puede indicar que represente uno o varios contaminantes mediante el comando pollutant, ya
visto en anteriores grficas, al que podremos indicar distintas variables: pollutant=c(no2, no), que podrn compartir
o no la misma escala, tal y como veremos en posteriores comandos.
2-. Agrupar los contaminantes en una sola grfica: group
Por defecto, la grfica timePlot, segn le vayamos pidiendo parmetros a representar los ir agregando en grfica nuevas,
uno debajo del otro, sin agrupar y con su propia escala de representacin. Esto es debido a que la opcin de agrupamiento de datos est, de inicio, desactivada: group=FALSE. Si activamos esta opcin, todos los contaminantes que le indiquemos se representarn en la misma grfica compartiendo escala.
3-. Elaborar grficas por aos: stack
Al elaborar grficas de un conjunto de datos muy extenso en el tiempo, podemos encontrarnos con dificultades a la hora
de visualizar los datos, por lo que una de las herramientas ms tiles podra ser la de dividir el conjunto de datos en aos,
activando el comando stack=TRUE.
Si seleccionamos varios contaminantes para su representacin grfica, e indicamos a la instruccin timePlot que divida la
grfica en aos, con el comando stack, nos encontraremos con que la funcin agrupar dichos contaminantes en una sola
grfica, para representarlos por aos, aunque el comando group establezca lo contrario.
4-. Normalizar los datos graficados: normalise
La grfica timePlot dispone de la opcin de normalizar los datos, que por defecto estar desactivada, pero que puede ser
muy til para realizar comparativas entre distintos datos y periodos temporales. La normalizacin de los datos se lleva a
cabo mediante el comando normalise, que podr ejecutarse de dos maneras muy distintas:
a)
b)

Elaborado por Fernando Follos Pliego

p.e. normalise=mean, en cuyo caso proceder a dividir todos los datos de los contaminantes seleccionados por
la media obtenida para el mismo, en lo que sera la normalizacin habitualmente ms usada para el contraste de
los datos.
p.e. normalise=01/08/2011, utilizando la fecha que mejor considere el usuario en el formato dd/mm/AAAA, en
cuyo caso la concentracin obtenida para dicha fecha ( en nuestro caso el primero de agosto de 2011), se fija en
el valor 100, y el resto de datos se escala en funcin de dicha normalizacin. Este tipo de normalizacin resulta
muy til para poder ver mejor la evolucin de un parmetro en el tiempo y referida a una fecha en concreto.

66

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
5-. Cambiar el tiempo de agregacin de los datos: avg.time
Probablemente, an con periodos de tiempo relativamente cortos, la representacin grfica de los datos horarios no termine de verse claramente, ms an cuando se busca representar ms de un parmetro, o incluso el usuario prefiera la representacin de los datos en otro periodo de integracin que no sea el utilizado por el conjunto de los datos.
Para estos casos la funcin timePlot, al igual que otras grficas temporales que veremos ms adelante, integra en sus
comandos a la instruccin timeAverage, vista en otros captulos de este manual, y permite con el comando avg.time seleccionar distintos periodos de tiempo para la agregacin o desagregacin de los datos por segundos sec, minutos min,
horas hour, das day, semanas week, meses month, estaciones del ao season, cuatrimestres quarter, o incluso
por aos year.
Adems, cabe recordar que la variable seleccionada para el comando avg.time podr venir precedida de un nmero que
modificar el comando seleccionado, lo que aporta una mayor versatilidad todava al mismo.
Ej. a) timePlot (datoscont, pollutant=c(no2, o3), group=TRUE), que graficar los datos de nuestro conjunto de datos en el periodo
horario en el que viene de orgen. // b) timePlot (datoscont, pollutant=c(no2, o3), group=TRUE, avg.time=day), que graficar los
datos de nuestro conjunto de datos utilizando las medias diarias resultantes, lo que clarifica mucho ms la relacin existente entre el O3
y el NO2 a lo largo del ao. // c) timePlot (datoscont, pollutant=c(no2, o3), group=TRUE, avg.time=week), que graficar los datos
de nuestro conjunto de datos utilizando las medias semanales.

6-. Utilizar diversos estadsticos para el periodo de agregacin: statistics


Cuando se integran los datos de que disponemos en un periodo de integracin mayor al original, el programa utiliza por
defecto como clculo estadstico la media de los datos en el periodo seleccionado mean, tal y como se puede observar
en las grficas anteriores.
No obstante, el estadstico a utilizar puede ser este o el mximo max, el mnimo min, la mediana median, al frecuencia frequency, la desviacin estandar sd o el percentil percentile, siempre que se indique mediante el comando statistic.
Si utilizamos el estadstico percentile ser preciso que le indiquemos a la grfica el percentil que queremos utilizar , en
porcentaje, mediante el comando percentile. Tambin ser posible indicar a la grfica la posibilidad de calcular ms de un
percentil, por ejemplo percentile=c(99,95), en cuyo caso la grfica se realizar para cada uno de los percentiles indicados.

Elaborado por Fernando Follos Pliego

67

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
7-. Establecer el nmero mnimo de datos necesarios: data.thresh
Dado que la grfica se basa en la realizacin de clculos estadsticos, podra resultar preciso contemplar un cierto grado
de representatividad en los datos graficados, tal y como ocurra con la instruccin timeAverage vista anteriormente. Mediante el comando data.thresh es posible indicar a la funcin el porcentaje mnimo de datos necesarios para considerar un
periodo como representativo en el clculo del estadstico.
8-. Extraer los huecos de datos de la grfica: date.pad
Cuando un conjunto de datos est compuesto por periodos de datos inconexos temporalmente, con huecos de datos entre s, pueden presentarse problemas en la representacin grfica que realice la funcin. Activar este comando de la funcin , date.pad=TRUE, permite tratar adecuadamente los huecos de datos evitando la generacin de lneas de conexin
entre datos.
9-. Desagregar los datos a representar en la grfica: type
Mediante el comando type , visto en grficas anteriores, se le puede indicar a la instruccin que desagregue los datos a
representar en funcin de variables ya vistas como las estaciones del ao season, los aos year, o incluso cualquier
otro parmetro del grupo de datos, entre otros. El comando type terminar dividiendo la grfica para representar la lnea
temporal en funcin de lo indicado en el mismo.
10-. Cambiar los colores de la representacin: cols
El comando cols permite cambiar los colores de las lneas que representan los datos, ya sea asignando los paquetes de
colores predeterminados de que dispone Openair, como brewer1, heat o increment, o disponiendo por parte del propio usuario de los colores que se consideren ms oportunos para la representacin.
11-. Modificar el tipo de smbolo a utilizar en la grfica: plot.type
Otro comando de utilidad para personalizar la representacin grfica es el comando plot.type, equivalente al comando
type que pudimos ver al prinicipio en las grficas plot genricas de R. Este comando permite asignar distintos tipos de
representacin de datos, entre los que encontramos lneas que unen puntos l (establecido por defecto), puntos sin lneas
p, lneas verticales h, puntos unidos por lneas o, o escalones s. Tambin se le puede indicar que no represente los
datos, mediante la variable n, ocultndolos para, por ejemplo, permitir la mejor visualizacin de las lneas suavizadas
que veremos ms adelante.
12-. Modificar la leyenda de la grfica: key
En el caso de las grficas timePlot la leyenda no se configura ni gestiona con en las grficas vistas hasta el momento, y
segn se establece al principio de este apartado sobre instrucciones grficas, puesto que dicha leyenda no sirve para
representar la escala de datos, sino que simplemente ilustra los parmetros representados en la grfica.
En el caso de la funcin grfica timePlot el comando key es un comando lgico que permite la visualizacin o no de la
leyenda. As, key=FALSE eliminar la leyenda de la grfica.
Adems, la funcin contempla la posibilidad de configurar la leyenda en la grfica, permitiendo indicar a la misma el nmero de columnas a utilizar cuando se dispone de ms de un contaminante a representar. El comando previsto en este
sentido es key.columns, al que le asignaremos el nmero de columnas que debern componer la leyenda.
13-. Dividir el Eje Y en escala logartmica: log
Cuando representamos ms de un contaminante en la misma grfica, con group=TRUE, y estos presentan valores que
se encuentran en distintas escalas numricas, como habitualmente ocurre por ejemplo con el SO2 y el O3, es muy probable que la escala lineal habitualmente utilizada en la grfica haga que uno de los parmetros representados (el de menor
escala) pierda resolucin y, en algunas ocasiones, quede prcticamente plano sin posibilidad de observar su evolucin.
Para estos casos est previsto el comando log, que una vez activado con log=TRUE, sustituye la escala lineal que divide
el eje Y por una escala logartmica que permite un mejor contraste de los datos, tal y como se puede ver a continuacin
para el ejemplo propuesto.
Elaborado por Fernando Follos Pliego

68

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
Ej. a) timePlot (datoscont, pollutant=c(no2, o3), group=TRUE, avg.time=week), que graficar los datos de nuestro conjunto de
datos utilizando las medias semanales y en una escala lineal // b) timePlot (datoscont, pollutant=c(so2, o3), group=TRUE,
avg.time=week, log=TRUE), que graficar los datos de nuestro conjunto de datos utilizando las medias semanales y en una escala
logartmica que se adaptar mucho mejor a las escalas de ambos contaminantes.

14-. Graficado de datos con lneas suavizadas y marcadores: smooth


Tambin es posible aplicar un algoritmo a los datos representados en la grfica para suavizar su representacin, modificando la posicin de alguno de sus puntos para eliminar las perturbaciones que existan y representar las tendencias bsicas de la curva.
El ajuste de la curva para su suavizado est desactivado por defecto, pero es posible activarlo mediante el comando
smooth=TRUE.
Por otro lado, y dado que la grfica suavizada no se ajusta a los datos reales, el algoritmo calcula a su vez la dispersin
de los datos reales respecto a las lneas suavizadas, y la representa en esta mediante un coloreado traslucido que el
usuario puede optar por mantener o por eliminar de la misma mediante el comando ci=FALSE.
Ej. timePlot (datoscont, pollutant=c(no2, o3), group=TRUE, avg.time=week, log=TRUE, smooth=TRUE, ci=FALSE), esta grfica es
igual que la grfica del punto anterior a excepcin de que en esta ocasin hemos pedido a timePlot que represente la lnea suavizada de
la grfica pero eliminando de la representacin la dispersin, lo que dar lugar a la grfica que podemos ver a continuacin.

15-. Aadir lneas de referencia a la grfica: ref.y / ref.x


El usuario puede aadir a la grfica lneas de referencia adicionales a la cuadrcula sombreada que por defecto presenta
siempre la grfica. Estas lneas de referencia se presentarn como lneas marcadas de rayas, trazadas en aquellos puntos que indique el usuario, como por ejemplo ref.y=c(20,50).
16-. Cambiar el nombre de los parmetros utilizados: name.pol
El ocasiones puede ser preciso cambiar los nombres de los parmetros que aparecen en la leyenda de la grfica, que por
defecto provienen del encabezamiento del conjunto de datos utilizado. Esto se consigue mediante el comando name.pol,
al que habr que asignar, siempre entre comillas, el nombre o nombres que deseamos utilizar para los parmetros, como
por ejemplo: name.pol=c(SO2equipo nuevo, O3 Quimiluminiscencia).
Elaborado por Fernando Follos Pliego

69

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
17-. Cambiar la configuracin de fechas del Eje X: date
El eje de las X se configura automticamente en funcin del formato y de los tramos que ms fcilmente se adaptan al
periodo de representacin seleccionado por el usuario, pero la funcin timePlot permite personalizar tambin estos aspectos de la grfica.
Mediante el comando date.breaks, se puede incrementar o disminuir el nmero de particiones realizadas ene l eje de las
X por la instruccin grfica timePlot, indicando al comando el nmero de particiones deseadas: date.breaks=5.
Mediante el comando date.format, se puede cambiar el formato de la fecha representada en el eje X, indicando a la funcin el formato deseado, segn los formatos previstos por Openair (ver los formatos que establece strptime y que se tratan al principio de este manual), como por ejemplo: date.format=%m%Y.

La funcin timePlot es una grfica basada en la instruccin plot de R, con representacin de datos en dos ejes, por
lo que adems de poder cambiar la representacin de los puntos, tal y como se ha visto con el comando plot.type,
tambin podemos aadir los ttulos a los ejes o establecer sus lmites de representacin, tal y como se observar
en el ejemplo siguiente.
Llegados a este punto, la funcin timePlot y el ejemplo que normalmente se incluye en estos casos, son una muy
buena oportunidad para recordad que R y Openair son lenguajes de programacin y que se utilizan para realizar
clculos estadsticos y funciones de grandes series de datos. Decir esto en este punto del manual puede parecer
obvio, pero es importante si queremos entender que su potencial aumenta exponencialmente si aprendemos a
combinar las funciones e instrucciones entre si de una manera provechosa.
Por ejemplo, consideremos que el conjunto de datos datoscont es enorme, y lo que realmente nos interesa es saber qu pas con el ozono y sus precursores en el periodo de verano de 2010, comprobando as su evolucin en
esas fechas. La grfica a usar es timePlot pero, con qu instruccin podemos combinarla?, Cmo?.
La instruccin a utilizar sera selectByDate, pero no sera necesario establecer distintas lneas de comando, como
seguramente se pueda pensar en un primer momento, generando nuevos conjuntos de datos y concatenando instrucciones, sino que bastara con introducir selectByDate en el preciso lugar donde ira el nombre del conjunto de
datos a utilizar con timePlot, tal y como se observa en el siguiente ejemplo, y como ya hemos visto en otras ocasiones:
Ej. timePlot (selectByDate(datoscont, year=2010, month=c(5,6,7,8,9,10)), pollutant=c(no2, no, o3), group=TRUE, avg.time=day, cols=c
(orange, red, blue), smooth=TRUE, date.breaks=6, date.format=%B, ylab=Concentracin en ug/m3 de NOx y O3, main=EVOLUCION ME
DIAS DIARIAS NOX Y O3VERANO DE 2010, ylim=c(0,140)).

Elaborado por Fernando Follos Pliego

70

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Grfica de Calendario:

calendarPlot

En ocasiones la utilizacin de grficas lineales y polares puede que no resulten asequibles al pblico en general, o
que se precise de un formato ms visual para comprender la evolucin de los parmetros.
Una herramienta muy til en este sentido es la funcin calendarPlot, que lo que hace bsicamente es representar
la evolucin en el tiempo de un parmetro, tal y como haca timePlot, pero en vez de usar como base una grfica
lineal de puntos x-y, utiliza un calendario para representar el parmetro en escala de colores.
Dicho de otra forma, lo que hace calendarPlot es calcular las medias diarias de un ao determinado y para un parmetro, establecer una escala de colores para dichas medias, y pintar con el color resultante cada uno de los das
de un calendario de ese ao.
Esto permite, en un vistazo rpido, comprobar la evolucin de las concentraciones, su estacionalidad y su distribucin segn los das de la semana.
La grfica esta, a fecha de elaboracin de este manual, en fase de desarrollo y experimentacin, no disponiendo
de la posibilidad de desagregar datos (type) o de establecer el clculo estadstico a realizar (statistic), que ser
nicamente la media diaria, pero dispone de otras muchas opciones de configuracin interesantes:
Variaciones sobre la funcin:
1-. Introducir el contaminante a graficar: pollutant
La grfica permite indicar el parmetro a representar mediante el comando pollutant, como en ocasiones anteriores. Sin
embargo, en esta ocasin, slo estar permitido representar un contaminante, y no varios a la vez.
2-. Ao en el que se quiere la grfica: year
La funcin grfica requiere siempre que se introduzca un ao, sobre el cual se dispondr el calendario y se graficarn los
datos.
3-. Variable a representar en las celdas del calendario: annotate
Por defecto, el parmetro que se utiliza en las celdas del calendario es la fecha del conjunto de datos date, incluyendo
en las celdas el nmero del da correspondiente, como en cualquier calendario clsico.
Sin embargo, calendarPlot permite tambin utilizar para las celdas la direccin del viento wd, en cuyo caso lo que representa es la media vectorial de la direccin cada da (mediante una flecha), o la velocidad del viento ws, en cuyo caso se
representa la misma media vectorial de la direccin, pero escalada en funcin de la velocidad registrada.
La ltima versin evaluada de Openair en este manual permite adems anotar en las celdas del calendario el valor promedio diario alcanzado por el parmetro designado por el usuario para representar, para lo cual habr que indicar al comando que annotate=value. Al seleccionar esta opcin el usuario podr adems configurar las cifras representadas por la
grfica, tal y como se ver con posterioridad.
4-. Establecer los colores de la grfica: cols
El comando cols permite cambiar los colores de las lneas que representan los datos, ya sea asignando los paquetes de
colores predeterminados de que dispone Openair, como brewer1, heat o increment, o disponiendo por parte del propio usuario de los colores que se consideren ms oportunos para la representacin.

Elaborado por Fernando Follos Pliego

71

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

5-. Indicar a la grfica los lmites de representacin: limits


Por defecto la grfica busca el intervalo de representacin del parmetro por colores que mejor se adapte a los datos de
que disponemos, pero puede ser preciso que dichos lmites los establezca el propio usuario, por ejemplo, si lo que se
desea es mostrar la evolucin respecto a determinados valores lmite o valores objetivo de carcter legal.
Para estas ocasiones la funcin calendarPlot dispone del comando limits, al que se le debern indicar los valores mnimo
y mximo a tener en cuenta en la grfica: limits=c(0,180).
6-. Diferenciar en la grfica la superacin de los valores lmite diarios que se indiquen: lim
La ltima versin evaluada de Openair incluye un comando de gran utilidad para representar de forma distinta aquellos
das que superen el valor lmite diario que se le indique mediante el comando lim, siempre y cuando el comando annotate
tenga como valor asignado value.
Al establecer un lmite con el comando lim, como por ejemplo lim=50 para el caso de parmetros como PM10, nos ser
posible diferenciar los valores representados que estn por encima o por debajo de dicho lmite. De hecho, la propia funcin calendarPlot por defecto aplica una configuracin determinada a la grfica que permite destacar los das que superan
dicho valor lmite.
No obstante, la funcin permite personalizar la configuracin de las cifras cuando estn por encima o por debajo del lmite
marcado por el usuario mediante los siguientes comandos adicionales, a los que se les deber indicar un vector compuesto por dos variables, teniendo en cuenta que la primera se referir al valor de los promedios por debajo del lmite, y la
segunda al valor de los promedios por encima del mencionado lmite:

col.lim, que establecer el color de las cifras numricas representadas en cada cuadro, en funcin de que se
encuentren por debajo o por encima del valor lmite.
font.lim, que establecer el tipo de fuente aplicable a las variables representadas en el cuadro, siendo 1 si la
fuente es normal, o 2 si la fuente es en negrita. Por defecto la variable por encima del valor lmite se presenta en
negrita, es decir, con font.lim=c(1,2).
cex.lim, que establece la relacin de tamao aplicable a las variables, como factor al tamao normal de la fuente
que representa el valor en el grfico, segn se encuentren estas variables por debajo o por encima del valor lmite.

7-. Establecer el nmero mnimo de datos necesarios: data.thresh


Puesto que la grfica de calendario realmente incluye de forma implcita una agregacin de datos en periodos de integracin diarios, la ltima versin evaluada de Openair inclua ya la posibilidad de contemplar la representatividad del dato a
graficar, tal y como ocurra con la instruccin timeAverage. Esto se consigue mediante el comando data.thresh, con el que
es posible indicar a la funcin el porcentaje mnimo de datos necesarios para considerar un periodo como representativo
en el clculo del de la media diaria realizado.
En aquellos casos en los que el nmero mnimo de datos disponibles para el parmetro a representar en el da no supere
el porcentaje indicado, la funcin calendarPlot eliminar el dato y no se representar en la grfica, dejando vaca completamente la celda de la misma.
8-. Nmero de decimales a utilizar en la cifra que se representa en el calendario digits
Al realizar el promedio diario del parmetro indicado para representarlo en el calendario mediante annotate=value, es
posible que las cifras obtenidas presenten un mayor nmero de decimales del que sera deseable para representar la
cantidad en el calendario, dificultando su dimensionamiento o perjudicando su visibilidad. Mediante el comando digits se le
puede indicar a la grfica el nmero de decimales que queremos que acompaen a la grfica para representar las cantidades medias diarias del parmetro.

Elaborado por Fernando Follos Pliego

72

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La funcin grfica calendarPlot aporta al tcnico una herramienta muy prctica a la hora de elaborar grficas que
resulten ms asequibles al pblico en general, y que sirvan para detectar ms detalladamente la evolucin de las
medidas diarias de un contaminante, que quedan ahora recogidas de una forma ms comprensible, tal y como se
puede observar en la siguiente grfica para la evolucin del Ozono en nuestro conjunto de datos datoscont durante el ao 2011.

> calendarPlot ( datoscont, pollutant="pm10", year=2011 , annotate="value", cols=c("white", "yellow", "orange", "red",
"black"), limits=c(0,90), lim=50, col.lim= c("black", "white"), font.lim= c(1,2), digits=0, cex.lim= c(0.9,1.2),
main="EVOLUCIN de las partculas PM10 en 2011" )

Elaborado por Fernando Follos Pliego

73

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Grfica de densidad de Kernel para las superaciones de las medias diarias:

kernelExceed

Probablemente recordemos an el concepto de densidad de kernel para el estudio de la distribucin de los datos
que se contemplaba en el apartado de histogramas de las grficas en R. En este caso, Openair aprovecha la gran
capacidad para el suavizado y la estimacin de la probabilidad de aparicin de la funcin de densidad de kernel
para elaborar grficas que permiten caracterizar determinados das en los que se supera el valor lmite de un contaminante.
La funcin kernelExceed utiliza la densidad de Kernel para estudiar las condiciones que llevan a la superacin de
los valores lmite diarios en inmisin de los contaminantes que se precisen. As, con la grfica de densidad de kernel lo que se hace es destacar las condiciones que se dan durante los das en los que se supera el valor lmite
para que sean ms visibles, estableciendo la densidad que se da del parmetro contaminante por condicin en
estudio.
Actualmente la grfica est preparada para el estudio de la superacin de las medias diarias, por lo que es especialmente til para el caso de la superacin de los niveles medios diarios de partculas PM10, que son los que disponen de lmite diario legalmente establecido, pero puede ser aplicada a otros parmetros contaminantes, siendo
el usuario el que establece el valor lmite diario que considere oportuno.
Variaciones sobre la funcin:
1-. Introducir el primer parmetro o condicionante a estudiar: x
A la grfica se le debe indicar un primer parmetro o condicionante a estudiar en relacin a la superacin del valor lmite
diario del parmetro contaminante que se requiera. Normalmente se asigna a este parmetro cualquier condicionante
climatolgico, y especialmente frecuente es que se le asigne la direccin del viento.
2-. Introducir el segundo parmetro o condicionante a estudiar: y
A la grfica se le debe indicar un segundo parmetro o condicionante a estudiar en relacin a la superacin del valor lmite
diario del parmetro contaminante que se requiera, y que sera complementario con el primero. Normalmente se asigna a
este parmetro cualquier condicionante climatolgico, y especialmente frecuente es que se le asigne la velocidad del viento.
3-. Introducir el contaminante del que se desean analizar las superaciones de los valores lmite diarios: pollutant
Tambin resulta obligatorio indicarle a la funcin kernelExceed el parmetro contaminante del que se desea representar la
densidad de datos para los condicionantes establecidos. Tal y como se ha comentado anteriormente, la grfica est especialmente diseada para estudiar las superaciones del valor lmite diario de partculas PM10, pero puesto que es el usuario el que establece el umbral a superar, podr incluirse cualquier otro contaminante.
4-. Desagregar los datos para estudiar las superaciones por tramos: type
Mediante el comando type , visto en grficas anteriores, se le puede indicar a la instruccin que desagregue los datos a
representar en funcin de variables ya vistas como las horas del da hour, los das de la semana weekday, los meses
del ao month, los aos year, o incluso cualquier otro parmetro del grupo de datos. El comando type terminar dividiendo la grfica para representar una grfica de densidad por cada divisin establecida por type.
5-. Concentracin media diaria que se considera como valor lmite: limit
La grfica necesitar que se establezca la concentracin media diaria que se considera como valor lmite diario, a partir
de la cual se seleccionarn los das para realizar el estudio de densidad de kernel para las condiciones establecidas.
En este sentido, conviene destacar la utilizacin del comando lgico more.than, que permite indicar a la funcin si tiene
que seleccionar los das que estn por encima del valor lmite, opcin establecida por defecto con more.than=TRUE, o
seleccionar aquellos das que estn por debajo, de forma que el anlisis se realizar para aquellos das que no se supere,
con more.than=FALSE.
Elaborado por Fernando Follos Pliego

74

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

6-. Establecer cmo se deben seleccionar los datos: by


Para aquellos das en los que se supera el valor lmite diario establecido por el usuario, la seleccin de los datos puede
realizarse de varias maneras, y quedar definida por el comando by. En primer lugar, si establecemos que by=day, se
seleccionarn todos los datos del contaminante en aquellos das que se supere el valor lmite establecido, superen o no
ellos de forma individual dicho valor lmite. Sin embargo, si indicamos que by=dayhour, entonces se seleccionarn tan
slo aquellos datos que hora tras hora superen tambin el valor lmite indicado por el usuario, descartando aquellos que
no lo superen.
7-. Establecer el nmero mnimo de datos necesarios: data.thresh
Dado que la grfica se basa en la realizacin de clculos estadsticos diarios para comprobar si se supera o no el valor
lmite diario establecido, podra resultar preciso contemplar un cierto grado de fiabilidad en los datos utilizados para dicho
clculo, asegurando as siempre que se utilizan das lo suficientemente representativos. Mediante el comando data.thresh
es posible indicar a la funcin el porcentaje mnimo de datos necesarios para considerar un periodo como representativo
en el clculo de la media diaria.
8-. Nmero de celdas usadas para la estimacin de la densidad: nbin
Se puede modificar el nmero de celdas utilizadas a lo largo de los ejes X e Y para representar la densidad, modificando
as el ancho de banda de la funcin de densidad de Kernel utilizada, lo que influir sustancialmente en la resolucin que
finalmente disponga la grfica. Por defecto, la grafica adopta la definicin que considere ms adecuada para el nmero de
datos disponible. Sin embargo, el usuario podr asignar cualquier variable numrica al comando nbin para cambiar esta
seleccin automtica.
9-. Cambiar los colores de la representacin: cols
El comando cols permite cambiar los colores de las lneas que representan los datos, ya sea asignando los paquetes de
colores predeterminados de que dispone Openair, como defaul, heat o increment, hue o brewer1, o disponiendo
por parte del propio usuario de los colores que se consideren ms oportunos para la representacin.

> kernelExceed ( datoscont, x="wd", y="ws", pollutant="pm10",


by="day", limit=50, data.thresh=75, ylab="Velocidad del viento",
xlab="Direccin del Viento", main="Grfica de densidad para la
superacin del valor lmite diario de PM10" )

Haciendo una utilizacin clsica de la funcin kernelExceed, podemos obtener grficas como la que se adjunta
como ejemplo final, en la que se analizan las condiciones de direccin y velocidad del viento que predominan en
aquellos das en los que se produce una superacin del valor lmite diario de partculas.

Elaborado por Fernando Follos Pliego

75

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Funcin de Regresin Lineal:

TheilSen

La funcin TheilSen grafica los datos de un parmetro dado en funcin del tiempo y calcula su regresin lineal o
tendencia temporal, estimando su pendiente, lo que convierte a la funcin TheilSen en una funcin de enorme inters y utilidad para el anlisis de la calidad del aire con Openair, por cuanto que nos permitir, entre otros aspectos,
tener una idea general de cmo cambian las concentraciones de un contaminante con el tiempo, ms all de comportamientos cclicos y estacionales propios, o conocer cmo de significante es una tendencia observada, atendiendo a un modelo matemtico preciso.
La funcin TheilSen, utilizada en las ltimas versiones de Openair (desde la verson 0.5-11), sustituye a la funcin
MannKendall, frente a la que presenta alguna diferencia leve, aunque contina calculando los parmetros propios
de una regresin lineal, tales como la pendiente, la incertidumbre de la misma o la correlacin.
Matemticamente se puede decir que el mtodo Theil-Sen, utilizado por esta funcin de Openair, es un mtodo
estadstico de estimacin de lneas de regresin robustas muy eficiente, insensible a los valores fuera de rango
outliers, y significativamente ms exacto que los mtodos de clculo simples, permitiendo adems desestacionalizar los datos para calcular la regresin, por lo que se convierte en el mejor mtodo para el estudio de
tendencias globales en datos ambientales.
El funcionamiento de TheilSen a grandes rasgos consiste en, dado un grupo de pares de datos, con n pares, calcular todas las pendientes para todos los pares de datos, y luego calcular la media de dichas pendientes para dar
con la recta de regresin final.
Este mtodo, si bien confiere a la funcin sus caractersticas de eficiencia y exactitud vistas con anterioridad, requiere de bastante potencia de computacin para su clculo, por lo que la funcin programada en Openair calcula
la media mensual del parmetro a partir de valores con resoluciones iguales o superiores, y luego aplica el mtodo
estadstico descrito.
La funcin TheilSen dispondr de las siguientes opciones de programacin.
Variaciones sobre la funcin:
1-. Introducir el contaminante a graficar: pollutant
La grfica requiere que le sea indicado el parmetro sobre el que se desea realizar el clculo estadstico.
2-. Des-estacionalizar los datos del parmetro: deseason
Algunos parmetros presentan un carcter claramente estacional, modificando su concentracin media en funcin de la
poca del ao en la que se encuentren, como por ejemplo el ozono.
Por otro lado, dado que el promedio utilizado por la funcin es mensual, este factor estacional podra afectar considerablemente al clculo de la recta de regresin. En este sentido, la funcin timeVariation que veremos ms adelante puede
ayudarnos a calcular si existe un comportamiento cclico estacional o no para un determinado parmetro que debera
corregirse antes de calcular la recta de regresin.
Por defecto la des-estacionalizacin est desactivada, pero si la activamos, deseason=TRUE, la funcin TheilSen aplica
otra funcin de forma previa, la funcin STL (descomposicin de tendencias estacionales, en ingls) que elimina dichas
tendencias estacionales con anterioridad a la realizacin de los clculos estadsticos. En este sentido, habr que tener en
cuenta que la funcin STL requiere interpolar linealmente los datos nulos para poder manejarlos, lo que podra afectar al
resultado final de TheilSen.

Elaborado por Fernando Follos Pliego

76

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. a) TheilSen (datoscont, pollutant=o3), calcula la pendiente para el ozono de que disponemos en nuestro conjunto de datos, inclu
yendo en dicho clculo los datos brutos con todas sus fluctuaciones cclicas. El resultado obtenido muestra una pendiente baja con un
intervalo de confianza muy amplio que aporta demasiada incertidumbre a la funcin, por lo que no se puede obtener ningn tipo de
conclusin fiable.. // b) TheilSen (datoscont, pollutant=o3, deseason=TRUE), se trata de la misma funcin grfica y los mismos datos
que la anterior, salvo que ahora desestacionaliza los datos antes de calcular la pendiente, consiguiendo que estos se muestren de una
manera ms coherente. La pendiente aparece ahora ms marcada y, lo que es ms importante, el intervalo de confianza es ahora mucho
ms estrecho y se mueve siempre en rangos positivos, lo que permite concluir, ahora s, que existe una tendencia al incremento progresi
vo de los niveles de ozono en la zona.

3-. Desagregar los datos para representar varias grficas: type


Al igual que ocurre con otras muchas funciones grficas de Openair, con TheilSen tambin tenemos la posibilidad de desgregar los datos en funcin de la fecha, por ejemplo por estaciones season o aos year, lo cual puede ser muy til para
analizar la correspondencia de unos periodos con otros respecto al clculo de cada tendencia, o incluso en funcin de otro
parmetro del conjunto de datos, lo cual tambin puede resultar muy til si queremos analizar la existencia de interacciones adicionales a la propia estacionalidad del parmetro.
4-. Disponer el periodo de agregacin de la funcin: avg.time
Por defecto, tal y como ya se ha comentado con anterioridad, la funcin utiliza la media mensual para el establecimiento
de los pares de datos, pero se le podra exigir que utilizase periodos de integracin de datos mayores, siempre y cuando
el conjunto de datos de que disponemos nos lo permitiese, tales como periodos estacionales season o anuales year.
5-. Cambiar el estadstico a calcular para la funcin: statistic
La funcin TheilSen utiliza por defecto la media mensual de los datos del parmetro que le hayamos indicado. Sin embargo, esta funcin nos permite cambiar esta media por el clculo de los percentiles, lo que puede resultar de enorme utilidad, por ejemplo, a la hora de estudiar la evolucin experimentada de un parmetro en sus mximas concentraciones,
teniendo en cuenta que son estas las que finalmente provocan la superacin del valor lmite, objetivo o umbral legalmente
establecido.
Si utilizamos como estadstico el percentil, statistic=percentile, ser necesario indicar a la funcin el percentil deseado,
disponiendo para ello del comando percentile, al que le indicaremos de 0 a 100 el porcentaje del percentil que se precisa.
6-. Establecer el porcentaje de datos mnimo: data.thresh
Al utilizar un clculo estadstico para establecer los pares de datos que se usan en la funcin TheilSen, puede ser preciso
indicarle a la funcin que tenga en cuenta un porcentaje mnimo de datos para considerar el clculo realizado como representativo, lo que se consigue mediante el comando data.thresh.
Si alguno de los periodos indicados para el clculo de los puntos no llegase al porcentaje mnimo de datos establecido por
el usuario, el clculo no se realizara y el dato se registrara como NA.

Elaborado por Fernando Follos Pliego

77

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
7-. Establecer el valor de alfa de la funcin TheilSen: alpha
La probabilidad de que la funcin acierte el dato real con la tendencia calculada es lo que en estadstica se llama nivel de
confianza, y se representa matemticamente como 1-, donde (alfa) es lo que se llama error aleatorio o nivel de significancia, o lo que sera lo mismo, la posibilidad de fallar en la estimacin.
El intervalo de confianza calculado y mostrado por la funcin grfica que nos ocupa, tiene realacin directa con este nivel
de confianza ya que varan conjuntamente, calculndose el uno a partir del otro. Es decir, a mayor intervalo de confianza
(mayor margen en el que se pueda encontrar el dato), mayor ser el nivel de confianza (ms probabilidades de acierto
existirn), aunque la estimacin realizada ser menos precisa.
De forma prctica, a la hora de programar la funcin grfica TheilSen, se puede decir que a mayor alfa () que dispongamos en la funcin, ms pequeo ser el nivel de confianza (1-), as como el intervalo de confianza calculado y, por lo
tanto, pese a ganar en precisin, perderemos en exactitud.
Por defecto la funcin TheilSen establece un alpha=0.05, ms que vlido para la mayora de las ocasiones en que precisemos de esta funcin, sin embargo, es posible modificarlo para incrementarlo o disminuirlo en funcin de lo que se precise en cada caso, poniendo cualquier valor que vaya del 0 al 1.
8-. Aplicar la autocorrelacin al clculo de la incertidumbre: autocor
La autorcorreacin se da comnmente en series temporales y consiste en la existencia de una correlacin serial de las
perturbaciones o, lo que es lo mismo, surge cuando los trminos de error del modelo calculado no son independientes
entre s.
Este efecto de autocorrelacin puede darse bien porque exista un comportamiento estacional o cclico del parmetro no
contemplado en la funcin, bien porque existan otros factores que esten correlacionados a travs del tiempo y que no se
tienen en cuenta en la regresin calculada.
En definitiva, lo que hacemos al tener en cuenta la autocorrelacin en el clculo de nuestra pendiente es incluir en la incerdibumre asociada a la misma la interferencia estadstica por la que se ven afectados los datos de nuestra serie temporal, incrementando as los mrgenes del intervalo de confianza mostrado, pero asegurando por otro lado la fiabilidad de
los resultados obtenidos.
Por defecto Openair descarta esta correcin en los clculos, pero puede ser tenida en cuenta si se activa el comando
autocor=TRUE. En todo caso, habr que tener en cuenta que esta correccin puede afectar gravemente al intervalo de
confianza mostrado.
9-. Dar formato a la pendiente resultante:
Al aplicar la funcin TheilSen no slo se elabora una grfica y se representa la recta de regresin en la misma, sino que
se ofrecen al usuario los datos precisos sobre la pendiente obtenida y los intervalos de confianza aplicados, disponindolos tambin en la parte superior central de la grfica. No obstante, existen diversos comandos que nos permitirn la personalizacin del formato de dicha pendiente y del intervalo para su presentacin en la grfica, segn se expone a continuacin:

dec.place: Comando que establece el nmero de decimales con que se muestra la pendiente y su intervalo de confianza en la grfica, por defecto 2.

lab.frac: Comando que permite ubicar la pendiente dentro de la vertical del rea de la grfica, en tanto por uno. Por
defecto el valor es 0.99, lo que sita el resultando en la parte superior de la grfica.
lab.cex: Comando que permite cambiar el tamao de la fuente que se utiliza para disponer de la pendiente en la grfica. Por defecto en 0.8.
text.col: Comando que sirve para establecer el color de los nmeros y letras que representan la pendiente en la grfica.
slope.percent: Por defecto la pendiente se muestra en la grfica como un valor numrico que se expresa como unidades del parmetro por unidad de tiempo. sin embargo, activando el comando slope.percent=TRUE, se permite mostrar la pendiente y el intervalo en porcentajes.
Elaborado por Fernando Follos Pliego

78

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
10-. Dar color a los otros elementos de la grfica: cols
Al igual que en otras grficas de Openair, es posible dar color a los diferentes elementos de la grfica, ms all del formato de la pendiente que hemos visto en el punto anterior. No obstante, en la actualidad el nico formato de colores predefinido activado para esta funcin es el de greyscale, lo que no concede mucho juego al usuario.
Si queremos dar color a los elementos de la grfica y personalizarlos, podemos utilizar los siguientes comandos:

line.col: que permite personalizar el color de la lnea de tendencia graficada.


data.col: que permite personalizar el color de los datos que se grafican como base a la lnea de tendencia.
11-. Nmero de intervalos a usar en el Eje X: date.breaks
De forma automtica la funcin TheilSen divide el Eje X en los intervalos que mejor se adaptan al rango de fechas de que
disponga el conjunto de datos. No obstante, el usuario podra personalizar el nmero de intervalos al alza o a la baja mediante la asignacin del nmero que corresponda al comando date.breaks.
12-. Modificar la relacin entre ejes de distintas grficas: x.relation , y.relation
En algunas ocasiones podemos necesitar dividir una grfica en varias para comprobar la tendencia presentada en distintas situaciones, lo que podemos lograr con el comando type. En estas ocasiones las grficas generadas comparte la escala original tanto para el eje x como para el eje y, lo que puede perjudicar la representacin.
Podemos evitar esto utilizando indistintamente los comandos x.relation o y.relation, a los que podemos indicarles que la
escala utilizada por las grficas sea siempre la misma, con la variable same (por ejemplo, x.relation=same) que es lo
que la funcin hace por defecto, o que se utilicen escalas distintas adaptadas a cada una de las nuevas grficas generadas con la variable free (por ejemplo: y.relation=free).

Cabe recordar que la funcin TheilSen continua siendo en esencia una derivacin de la instruccin plot de R, con
la representacin de los datos en dos ejes. En este sentido, es posible utilizar ciertos comandos de R como ylim,
ylab o xlab. En el caso del comando xlab, conviene tener en cuenta que la pendiente calculada refiere sus unidades a la denominacin que hagamos en la grfica del Eje X.

> TheilSen (datoscont, pollutant=o3, deseason=TRUE, autocor=TRUE, lab.cex=1, text.col=darkblue, data.col=green, line.col=blue,
main=EVOLUCIN DEL OZONO EN LOS LTIMOS 8 AOS, ylab=Concentracin media de O3, xlab=Ao).

Elaborado por Fernando Follos Pliego

79

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Funcin de Tendencias Suavizadas:

smoothTrend

Similar a la funcin TheilSen de regresin lineal vista en el apartado anterior, la funcin de tendencias suavizadas
smoothTrend va ms all, y sustituye los parmetros de regresin lineal utilizados para calcular la tendencia por
funciones de suavizado que van adaptando la lnea de tendencia a la evolucin del parmetro.
Desde el punto de vista prctico, y en su configuracin ms bsica, la funcin smoothTrend lo que hace es generar una grfica de concentraciones medias mensuales de un parmetro seleccionado, dando lugar al diagrama de
dispersin de pares de datos sobre el que construye una lnea de tendencia suavizada, y finalmente muestra el
intervalo de confianza al 95%.
Para hacer esto la funcin smoothTrend utiliza un modelo de regresin adicitivo denominado GAM (de sus siglas
en ingls General Additive Model) proporcionado por otra librera de R especializada en el modelizado aditivo de
datos que se llama mgcv. El modelizado GAM sustituye los coeficientes o parmetros de clculo de la regresin
lineal habitual por funciones de suavizado (de funcionamiento similar a la media mvil) que van adaptando la pendiente a la respuesta de la variable.
Este modelo matemtico es muy til, como ya se puede deducir, cuando la relacin entre dos variables va ms
all del modelo establecido por una regresin lineal como TheilSen, y la pretensin es calcular una forma ms
compleja que se adapte mejor a los datos.
En la siguiente grfica adjunta se puede comprobar claramente la diferencia prctica que existe en una funcin de
regresin lineal como TheilSen, y una funcin de tendencia suavizada como smoothTrend, pues ambas grficas
han sido elaboradas con los mismos datos del parmetro seleccionado.

La funcin smoothTrend hereda muchas de las opciones de personalizacin de la fucin TheilSen, aplicables a la
misma, pero tambin incorpora otras de gran utilidad como las simulaciones bootstrap, que veremos ms adelante. Los comandos de desarrollo de la funcin smoothTrend son:
Variaciones sobre la funcin:
1-. Introducir el contaminante a graficar: pollutant
La funcin grfica smoothTrend requiere que se asigne un parmetro de un conjunto de datos con fechas para realizar la
estimacin de la pendiente suavizada. En este caso, a diferencia de TheilSen, es posible adems la seleccin de ms de
un parmetro, lo que da un valor aadido a esta funcin para comparar parmetros.

Elaborado por Fernando Follos Pliego

80

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
2-. Des-estacionalizar los datos del parmetro: deseason
Al igual que ya pudimos comprobar con la funcin TheilSen, algunos parmetros contaminantes presentan un claro comportamiento estacional que podra afectar a la estimacin de la pendiente.
Este efecto de desvirtuacin de la tendencia calculada es an ms relevante en el caso de la funcin smoothTrend por
cuanto que la estacionalizacin de un parmetro afecta a las medias mensuales (estadstico de base utilizado por el diagrama de dispersin), y la lnea de tendencia de la funcin smoothTrend depende de dichas medias, lo que podra originar
problemas como el expuesto en las siguientes grficas de ejemplo para el ozono.
Por ello es importante que, antes de proceder a ejecutar la funcin smoothTrend tengamos claro si el parmetro o parmetros utilizados tienen algn tipo de comportamiento estacional, y en caso de que as sea, activemos el comando deseason=TRUE para permitir a la funcin grfica aplicar la instruccin de desestacionalizacin de los parmetros.
Ej. a) smoothTrend (datoscont, pollutant=o3), calcula la tendencia suavizada del ozono sin desestacionalziar. El problema es que este
contaminante presenta un comportamiento estacional tan marcado y evidente que la funcin smoothTrend termina por generar siem
pre una lnea recta, no teniendo posibilidad de adaptar la tendencia a las fluctuaciones. // b) smoothTrend (datoscont, pollutant=o3,
deseason=TRUE), desestacionaliza antes el parmetro para calcular luego la tendencia. El efecto que finalmente se consigue es que se
obtiene una lnea de tendencia clara para los datos.

3-. Desagregar los datos para representar varias grficas: type


La funcin smoothTrend tambin tiene la posibilidad de desagregar los datos en funcin de la fecha , por ejemplo por
estaciones season o aos year, o tambin en funcin de otros parmetros del conjunto de datos, lo cual puede resultar
de enorme inters si se quiere analizar la existencia de interacciones adicionales.
4-. Disponer el periodo de agregacin de la funcin: avg.time
Por defecto, y al igual que ocurra con la fguncn TheilSen, la funcin smoothTrend utiliza la media mensual para el establecimiento de los partes de datos, pero se le podra exigir que utilizase periodos de integracin mayores, como season
o year, siempre que nuestro conjunto de datos sea lo suficientemente extenso en su periodo temporal.
5-. Cambiar el estadstico a calcular para la funcin: statistic
La estimacin de la funcin smoothTrend se realiza, por defecto, sobre un diagrama de dispersin que responde a las
medias mensuales. No obstante, el comando statistic nos permitir cambiar este estadstico por el clculo de percentiles,
statistic=percentile.
Como en anteriores ocasiones, si finalmente optamos por utilizar los percentiles como base de clculo para nuestra grfica de tendencias suavizadas, deberemos indicar a la funcin el porcentaje que queremos que se calcule mediante el comando percentile.
A este respecto, la diferencia fundamental de la funcin smoothTrend sobre la funcin TheilSen es que ahora s que estara permitido el clculo de la tendencia suavizada para distintos percentiles, lo cual puede ser de enorme utilidad para
observar la evolucin del parmetro a distintas concentraciones. Lo que no resulta posible hacer con la funcin es el clculo de distintos percentiles cuando previamente se han seleccionado varios contaminantes a graficar.
Elaborado por Fernando Follos Pliego

81

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. smoothTrend (datoscont, pollutant=o3, deseason=TRUE, statistic=percentile, percentiles=c(50,75,99)), calcula hasta tres per
centiles distintos para nuestro conjunto de datos para el ozono, una vez desestacionalizado, y representa las distintas lneas de tenden
cia suavizadas de forma que se puede comprobar que para las medianas (percentil 50), existe una tendencia alcista en los datos, mien
tras que para los percentiles de datos ms elevados (percentiles 75 y 99) y sobretodo para los valores mximos de este parmetro
(percentil 99) existe una marcada tendencia a la baja desde el ao 2010.

6-. Establecer el porcentaje de datos mnimo: data.thresh


Como en todas las funciones de Openair en las que se pueden establecer distintos periodos de integracin de datos, puede ser recomendable que para realizar el clculo del estadstico indiquemos a la funcin el porcentaje mnimo de datos
que consideramos representativo. Esto se consigue indicando al comando data.thresh, con un nmero del 1 al 100, el
porcentaje de datos vlidos que se requerirn para cada periodo.
7-. Realizar simulaciones bootstrap sobre la funcin: simulate
La funcin smoothTrend permite realizar sobre la grfica simulaciones bootstrap o simulaciones de remuestreo. Dichas
simulaciones se realizan sobre los propios datos y estn orientadas a obtener una estimacin emprica de la distribucin
muestral, lo que permitir valorar el sesgo y el error muestral, realizar una prueba de hiptesis respecto a nuestra funcin
basada en la simulacin y, lo que es ms importante y prctico para nosotros, proporcionar un mtodo alternativo para
recalcular un intervalo de confianza adaptado a la tendencia calculada.
De hecho, es esto ltimo lo que ocurre cuando activamos el comando simulate=TRUE, ya que entonces las simulaciones
bootstrap se asumen a la propia grfica recalculando un nuevo intervalo de confianza (zona sombreada de la grfica).
Los mrgenes del intervalo de confianza irn variando en funcin del nmero de simulaciones que le digamos a la funcin
que tiene que ejecutar sobre la tendencia, fijadas mediante el nmero que se le asigne al comando n, como por ejemplo
n=100.
Dado que el comando simulate afecta a la estimacin de la incertidumbre, recalculando los intervalos de confianza, es
preciso tener en cuenta este hecho a la hora de aplicar otros comandos como el de autocorrelacin , ya que se podran
ver muy afectados los mrgenes de confianza finalmente calculados con su combinacin.
8-. Aplicar la autocorrelacin al clculo de la incertidumbre: autocor
Tal y como ya se explicaba para la funcin TheilSen anterior, las series temporales de datos como las que se utilizan en
calidad del aire, son susceptibles de presentar una correlacin serial de las perturbaciones, tambin denominada autocorrelacin.

Elaborado por Fernando Follos Pliego

82

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
Sin embargo, es posible tener en cuenta esta autocorrelacin en el clculo de nuestra pendiente incluyendo la incertidumbre asociada a la funcin la interferencia que se dara por la autocorrelacin, lo cual incrementara los mrgenes del intervalo de confianza, pero incrementara tambin la fiabilidad de los resultados obtenidos.
El comando lgico, autocor=TRUE, permite la activacin de esta correccin en los datos del intervalo de confianza, aunque habr que tener en cuenta que esta correccin puede afectar gravemente al intervalo mostrado, mas an si este se
ha calculado mediante herramientas alternativas como la simulacin bootstrap.
9-. Mostrar el intervalo de confianza en la grfica: ci
Por defecto, la grfica muestra el intervalo de confianza como una zona sombreada que acompaa a la lnea de tendencia . No obstante, es posible que no nos interese que aparezca dicho intervalo en la grfica, en cuyo caso bastara con
indicar a la funcin que ci=FALSE.
10-. Personalizar los colores de la grfica: cols
Como en grfica anteriores, la funcin smoothTrend permite personalizar los colores utilizados en las pendientes y en el
diagrama de dispersin, ya sea utilizando una de las combinaciones predefinidas de Openair, o personalizando la grfica
con los colores que el usuario considere ms adecuados.
11-. Cambiar el nmero de columnas de la leyenda: key.columns
Si para ejecutar la funcin smoothTrend utilizamos como estadstico los percentiles, o seleccionamos ms de un contaminante para graficar, la funcin forzar una leyenda en la parte interior de la grfica donde se dispondr la tipologa del
estadstico utilizado.
Si por ejemplo, indicamos a la funcin smoothTrend que realice el clculo para varios estadsticos, veremos que la leyenda va amplindose a los estadsticos programados, disponindolos en lnea (tantas columnas como estadsticos se le
indiquen). En este caso sera posible indicarle a la funcin el nmero de columnas en las que queremos que se dispongan
los percentiles en la leyenda, asignando el nmero que corresponda al comando key.columns.
12-. Modificar la transparencia de los intervalos de confianza: alpha
El intervalo de confianza, adems de poder ocultarse o mostrarse a criterio del usuario mediante el comando lgico ci, que
hemos visto anterioremente, puede ser modificado en cuanto a su transparencia mediante el comando alpha, segn el
cual se podr conseguir que el intervalo sea totalmente transparente, alpha=0, o totalmente opaco, alpha=1.
13-. Personalizar las divisiones del Eje X: date.breaks
La funcin smoothTrend ya establece por defecto el nmero de divisiones del eje X que mejor se adapta al intervalo temporal que se desea representar. En todo caso se podr indicar a la funcin que utilice un nmero de divisiones distintas
mediante el comando date.breaks.
14-. Modifica la relacin del Eje Y entre distintas grficas: y.relation
Tal y como ya pudimos comprobar en la funcin TheilSen, cuando representamos varias grficas dividiendo la original, al
utilizar comandos como type, podemos comprobar que las grficas generadas comparten la misma escala para el eje Y, lo
cual en ocasiones puede dificultar la interpretacin de la grfica.
Mediante el comando y.relation podemos hacer que las grficas compartan la misma escala, y.relation=same, situaciones que se presenta por defecto, o que se presenten en escalas distintas adaptadas a cada una de las grficas, con
y.relation=free, lo que puede resultar muy til cuando alguna de las grficas presenta una distribucin dispar.

Cabe recordar que la funcin smoothTrend, al igual que ocurra con la funcin TheilSen, continua siendo en esencia una derivacin de la instruccin plot de R, con la representacin de los datos en dos ejes. En este sentido, es
posible utilizar ciertos comandos de R como ylim, ylab o xlab para personalizar an ms determinados detalles de
la grfica.

Elaborado por Fernando Follos Pliego

83

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La funcin smoothTrend presenta una amplia variedad de aplicaciones para el anlisis de la evolucin temporal de
la contaminacin, siendo de hecho la base sobre la que se disean otras funciones grficas de Openair como la
que podremos ver en el siguiente apartado, dedicado a la funcin timeVariation.

> smoothTrend (datoscont, pollutant=c(o3, no2, no), desea


son=TRUE, simulate=TRUE, n=100, cols=c(blue, red, orange),
main=Evolucin de las medias de O3 y NO2 desde 2006,
ylab=Concentracin en ug/m3, xlab=)

La funcin grfica smoothtrend puede servir, como se presenta en el primer ejemplo grfico de final de apartado,
para comprobar la evolucin experimentada por dos parmetros como el Ozono y los xidos de Nitrgeno en
nuestro conjunto de datos a lo largo de los aos, una vez desestacionalizados los datos.

> smoothTrend (datoscont, pollutant=o3, deseason=TRUE, statis


tic=percentile, percentiles=c(20,50,75,99), cols=c(green, orange,
red, black), autocor=TRUE, main=Evolucin de los percentiles de
O3 desde 2006, ylab=Concentracin de O3, xlab=)

O tambin puede servir para descomponer los datos de un mismo parmetro, como se hace en la segunda grfica
de ejemplo con el Ozono, comprobando as como evolucionan los distintos percentiles del mismo contaminante, lo
que nos permitir, por ejemplo, hacernos una idea de cuales son las concentraciones del contaminante (definidas
por los percentiles) que estn subiendo o bajando, y en qu medida podra afectar la subida generalizada de un
parmetro a la aparicin de un mayor nmero de superaciones de los valores lmite legales.

Elaborado por Fernando Follos Pliego

84

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Funcin de Matrices de Correlacin:

corPlot

En calidad del aire los distintos contaminantes encontrados suelen presentar relaciones ms o menos fuertes entre
s, y entre ellos y los parmetros meteorolgicos de la zona, en muchas ocasiones registrados en paralelo por la
misma estacin de control. Para un tcnico ambiental dedicado a la calidad del aire resulta muy importante conocer y entender en su mxima extensin estas relaciones. Sin embargo, puede resultar difcil teniendo en cuenta las
sinergias, relaciones cruzadas, e interferencias que suelen existir, adems de la complejidad de enfrentarnos al
tratamiento de largas series de datos.
Una de las tcnicas ms usadas para ayudar al estudio de las relaciones entre parmetros es la de graficar en una
matriz la correlacin existente entre todos los pares de parmetros disponibles, contrastndolos de uno en uno
entre el Eje X y el Eje Y de la matriz.
En elc aso de Openair esta tcnica se puede llevar a cabo mediante la funcin corPlot , que representa una matriz
cruzada con los parmetros de nuestro conjunto de datos que deseemos, estableciendo su correlacin por pares,
pero mejorando las opciones de representacin normales de forma que la interpretacin de la grfica sea mucho
ms sencilla e intuitiva. Para ello utiliza tres elementos:
a)

La Elipse, que se asemeja al dibujo de la recta de


regresin, ya que ser ms o menos achatada en
funcin de ms o menos fuerte que sea la correlacin. De hecho, en la diagonal, donde se cruza el
mismo dato (y por tanto la correlacin es perfecta)
la elipse es realmente una lnea recta. La orientacin de la elipse tambin marcar si la relacin es
directamente proporcional / o indirectamente
proporcional \ .

b)

El color, que se utiliza para rellenar las elipses, y


que se escala para representar tambin la fortaleza y el sentido de la correlacin. Si bien el color de
la representacin se puede personalizar, por defecto, la funcin corPlot marca unos colores que
tienden al rojo cada vez ms intenso para las relaciones directas, mientras que utiliza el azul para
aquellas que se acercan a la relacin inversa.

b)

El nmero, que se establece como el coeficiente de correlacin de Pearson en escala centesimal, de forma
que una relacin directamente proporcional perfecta equivaldr a 100, tal y como ocurre en la diagonal de la
matriz, mientras que una relacin inversamente proporcional perfecta equivaldra a 100.

La funcin puede ejecutarse directamente slo con el nombre del conjunto de datos, en cuyo caso cruzar todos
los parmetros existentes y calcular la matriz completa, tal y como se muestra en el anterior ejemplo. Sin embargo, dispone de los siguientes comandos para ayudar a su configuracin ms bsica.
Variaciones sobre la funcin:
1-. Introducir los contaminantes que se desea contrastar: pollutant
Por defecto, si no se le indica nada al respecto, la funcin corPlot representa en los Ejes X e Y todos los campos / parmetros de los que disponga nuestro conjunto de datos. Sin embargo, con el comando pollutant es posible limitar esta matriz a los parmetros que el usuario considere ms relevantes.

Elaborado por Fernando Follos Pliego

85

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
2-. Desagregar la correlacin dividiendo as la grfica: type
Como en muchas grficas de Openair, el comando type permite que desagreguemos el conjunto de datos para representar diversas matrices de correlacin. Dicha divisin puede llevarse a cabo para diversos periodos de tiempo como estaciones season, aos year, o das de la semana weekday, entre otros, o puede llevarse a cabo para otros campos de
nuestro conjunto de datos.
3-. Ordenar los ejes en funcin de la correlacin entre datos: cluster
La funcin corPlot es capaz de organizar los parmetros dispuestos en los Ejes X e Y para aproximar en la matriz los
pares de datos que presenten una correlacin ms fuerte, tanto positiva como negativa. Por defecto, esta opcin est
activada, por lo que ser el usuario el que tendr que indicar a la funcin si desea desactivarla con el comando lgico
cluster=FALSE.
4-. Cambiar los colores de representacin de la matriz: cols
Los valos de la matriz vienen coloreados con el pack por defecto de Openair default. Sin embargo, es posible indicar a
la grfica otros colores predeterminados como hue, increment, heat, brewer1, o definirlos de forma personalizada de
forma que gradualmente se pase por todos los colores indicados con el comando, de menor a mayor.
5-. Destacar en negrita los nmeros de la matriz: r.thresh
Con el comando r.thresh es posible indicarle a la funcin a partir de qu coeficiente se considera por parte del usuario que
conviene destacar las correlaciones remarcando en negrita su nmero. Esto permite que visualmente sean ms evidentes
aquellas correlaciones que superan el coeficiente indicado por el usuario. Destacar, sin embargo, que el comando tan slo
permite configurar la relaciones positivas o directamente proporcionales.
6-. Cambiar el color de los nmeros en funcin de la correlacin: text.col

> corPlot (datoscont, type=season, layout=c(2,2), cluster=FALSE, main=MATRIZ DE


CORELACIN DE PARMETROS, xlab=Parmetros, ylab=Parmetros, au
to.text=FALSE, text.col=c(darkblue, brown))

Tambin es posible indicar a la funcin el color que deben adoptar los nmeros en la representacin de la matriz en funcin de que la correlacin observada sea positiva o negativa. Con el comando text.col podemos indicar a la funcin los
colores a utilizar, debiendo tener siempre en cuenta que el color negativo va primero y despus el positivo, tal y como se
puede observar en el ejemplo final.

Elaborado por Fernando Follos Pliego

86

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Funcin de Variacin Temporal:

timeVariation

Poder analizar la variacin que presentan uno o ms parmetros con respecto a distintos periodos temporales de
carcter cclico (das, semanas, aos, etc), estableciendo as patrones de evolucin en el comportamiento de dichos parmetros en la zona de estudio es, evidentemente, una herramienta de enorme utilidad para el anlisis de
la calidad del aire.
Esta herramienta la proporciona Openair a travs de la funcin timeVariation, basada en la funcin smoothTrend, y
que en su ejecucin lo que presenta al usuario es un conjunto de grfica, como el que se muestra a continuacin
como modelo bsico explicativo, entre las que encontramos:
a)

b)
c)
d)

Una grfica compuesta, con la evolucin semanal del parmetro o parmetros seleccionados, dividida por
das de la semana y, a su vez en horas del da. Esta grfica nos permitir ver los das de la semana en los
que se producen las principales concentraciones contaminantes y la distribucin en horas del da de las mismas, dibujando as un patrn semanal detallado de la evolucin horaria de las concentraciones.
Una grfica resumen donde se establece la evolucin del parmetro en las horas del da, por lo que podremos ver en qu horas predominan las mayores concentraciones, y si el perfil obtenido se repite de la misma
forma en la grfica anterior para todos los das de la semana.
Otra grfica resumen donde se establece la evolucin del parmetro en funcin de los meses del ao, con
la que se podr ver la evolucin a lo largo del ao y comprobar, por ejemplo, si existe algn tipo de estacionalidad en el dato.
Una ltima grfica resumen de evolucin de las concentraciones por das de la semana, que vendr a resumir las concentraciones por cada da, pudiendo observarse cmo evolucionan a lo largo de la semana.

Descrita la funcin timeVariation, y vistos sus resultados en la anterior grfica, es evidente que esta instruccin
resulta ser una interesante y potente herramienta para, entre otras funciones:

Elaborado por Fernando Follos Pliego

87

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

a)
b)

c)

Fijar escenarios de calidad del aire en las distintas zonas de estudio y para un amplio rango de parmetros.
A travs de dichos escenarios, se descubre tambin como una potente herramienta para el estudio comparativo de zonas o la evolucin ene l tiempo de la calidad del aire en una misma zona.
Completar a otras funciones de Openair, tales como polarPlot o smoothTrend, siendo una herramienta adicional muy til por cuanto que permite caracterizar la evolucin de las concentraciones y, por lo tanto, focalizar con posterioridad la ejecucin de otras funciones, o proceder a tratar los datos con anterioridad a su graficado (como por ejemplo desestacionalizndolos).
Proporcionar informacin de utilidad sobre las posibles fuentes de origen de la contaminacin en una zona
determinada y de su contribucin a los niveles de calidad del aire de la zona en estudio.

La instruccin timeVariation descrita hasta el momento podr ejecutarse bajo los siguientes comandos y opciones
de configuracin y desarrollo:
Variaciones sobre la funcin:
1-. Introducir el contaminante a graficar: pollutant
Como en todas las funciones grficas de Openair, lo primero que se le debe indicar a la instruccin timeVariation, una vez
sealado el conjunto de datos a usar, es el contaminante o contaminantes que se desea representar en la grfica. En este
caso la instruccin timeVariation permitir la introduccin de uno o ms parmetros para su representacin.
2-. Cambiar los datos a horario local: local.time
Teniendo en cuenta que uno de los periodos clsicos a representar con timeVariation es el de horas al da, distribuido
incluso por das de la semana, puede ser muy recomendable hacer que los datos a utilizar sean en horario local, antes
que en GMT.
Este aspecto ya se trataba en otras funciones de similar problemtica, tales como polarAnnulus, y se comentaba que la
utilizacin de datos en horario local para el estudio de distribuciones temporales es especialmente interesante si queremos poder comparar dicha evolucin con ciertas actividades de orgen antropognico, que podran presentar cierta distribucin segn el horario local, que es el que rige el horario oficial (como por ejemplo el trfico rodado en das laborales).
Sin embargo, tambin hemos de recordar que el comando lgico local.time est preparado por ingleses, por lo que de
forzar la conversin, esta se producira como si estuvisemos en la franja horaria inglesa (BTU) lo que no se correspondera seguramente con nuestro conjunto de datos. Ser pues recomendable realizar el cambio a horario local utilizando otras
herramientas de manera previa a la ejecucin de esta funcin, o en su caso, contemplar el posible error de trabajar en
horario GMT.
3-. Normalizar las variables de la grfica: normalise
Tal y como hemos podido ver en otras funciones, en ocasiones puede ser necesario representar sobre las grficas diversos parmetros de calidad del aire que difieran considerablemente en cuanto al rango en el que se mueven sus datos, lo
que dificulta su interpretacin una vez graficados.
Una tcnica que puede utilizarse para representar ambos parmetros sin perder la entidad de sus fluctuaciones es la normalizacin del dato o, lo que es lo mismo, dividir cada valor del parmetro por el promedio resultante para el mismo.
Esta tcnica de normalizacin, cuya activacin se lleva a cabo mediante el comando normalise=TRUE, permite intercomparar los parmetros de inters y su evolucin, aunque se pierde la representacin con respecto a las unidades reales.
4-. Incluir los ttulos de los Ejes X: xlab
Al igual que se hace en las grficas R y alguna de las grficas de Openair, se puede cambiar el ttulo por defecto dispuesto para el eje X y personalizarlo. En el caso concreto de la funcin timeVariation, tambin se puede hacer, aunque habr
que tener en cuenta que en esta ocasin se cuenta con cuatro grficas y, por lo tanto, con cuatro ejes que habr que personalizar, tal y como se puede ver en el siguiente ejemplo.
Elaborado por Fernando Follos Pliego

88

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. timeVariation(datoscont, pollutant=o3, xlab=c(Distribucin horaria por das de la semana, Distribucin Horaria, Distribucin
mensual, Distribucin por das de la semana), dispone los ttulos de las cuatro grficas que forman timeVariation.

5-. Establecer los nombres de los contaminantes: name.pol


Por defecto la funcin timeVariation proporciona, entre las grficas elaboradas, una leyenda de los parmetros representados. Con el comando name.pol se puede personalizar dicha leyenda cambiando las denominaciones dadas por defecto
a los parmetros por aquellos que se consideren ms adecuados por el usuario.
6-. Desagregar los datos de la grfica: type
Como en grficas anteriores, es posible desagregar los datos para dividir la representacin grfica en distintos periodos
temporales, tales como estaciones season, aos year, etc., o en funcin de los intervalos de un determinado parmetro. Se debe tener en cuenta que en esta ocasin, ejecutar el comando type producir la subdivisin de cada una de las
cuatro grficas, lo que podra complicar la representacin e interpretacin de los datos.
7-. Graficar la diferencia entre parmetros: difference
En ocasiones puede ser til aprovechar la grfica timeVariation para graficar dos parmetros relacionados entre s y representar la diferencia, como por ejemplo, cuando se quiere realizar una intercomparacin de equipos midiendo en paralelo o, cuando se quiere comprobar la relacin existente entre dos parmetros vinculados (PM10 y PM2,5, por ejemplo). Activando el comando lgico difference=TRUE, la funcin grfica timeVariation calcula una tercera lnea de tendencia que se
corresponder con la diferencia entre el segundo y el primer parmetro dispuestos en pollutant.
Ej. timeVariation(datoscont, pollutant=c(pm10,pm25), difference=TRUE), activa, tal y como se puede observar en la grfica si
guiente, el clculo de una tercera lnea de tendencia destinada a establecer la evolucin en la diferencia entre PM2,5 y PM10.

8-. Agrupar los datos de un parmetro dentro de un conjunto de datos con divisin: group
Recordaremos que entre las instrucciones disponibles en Openair para el manejo de datos existan algunas como splitByDate que generaban un nuevo campo en el conjunto de datos y dividan el mismo en funcin de un criterio establecido,
proporcionando dos o ms escenarios de calidad del aire para el mismo conjunto de datos.
Pues bien, dado que la instruccin timeVariation es una buena herramienta para el anlisis de escenarios, dispone de un
comando que nos permite comparar distintos escenarios para una misma estacin agrupndolos dentro de la misma grfica. Esto se consigue mediante el comando group, al que se le deber asignar el campo que se utiliza en el conjunto de
datos para definir el escenario, por ejemplo split.by (denominacin por defecto utilizada en splitByDate).

Elaborado por Fernando Follos Pliego

89

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. timeVariation(datoscontsplit, pollutant=pm10, group=carretera), si recordamos el ejemplo que utilizbamos en la explicacin


del comando splitByDate (si no lo recuerda, este es el mejor momento para realizar un repaso), dividamos un conjunto de datos dado en
tres escenarios: antes, durante y despus. Mediante el comando group=carretera, lo que hace la funcin timeVariation es repre
sentar en la misma grfica los tres escenarios producidos para las partculas, generando tres lneas suavizadas para cada uno de ellos,
pudiendo atsi comparar en cada una de las grficas la evolucin de las concentraciones de PM10, antes, durante y despus de la cons
truccin de la circunvalacin.

La opcin group tambin se puede utilizar sealando a un campo del conjunto de datos que contenga una variable numrica cualquiera, y no slo una variable de texto que divida el conjunto, tal y como hemos visto hasta ahora. En este ltimo
caso, el comando group buscar los escenarios a representar en las grficas de forma conjunta, dividiendo los datos disponibles en cuantiles, de igual manera a como hace el comando type cuando apunta tambin a una variable numrica del
conjunto de datos.
9-. Modificar el nmero de simulaciones bootstrap: B
La funcin timeVariation se basa en el diseo de lneas suavizadas a partir del estudio estadstico de los datos en funcin
de los distintos periodos temporales requeridos en la misma, por lo que su ejecucin es similar a la de otras funciones
como smoothTrend, presentando una lnea de tendencia y un intervalo de confianza, calculndose este ltimo en funcin
de simulaciones bootstrap realizadas sobre la propia tendencia.
Es posible que, por razones de economa en los tiempos de ejecucin, al querer representar varios parmetros a la vez, o
por las propias necesidades de clculo, precisemos personalizar el nmero de simulaciones bootstrap que terminarn
dando valor al intervalo de confianza. Con el comando B, podremos indicar de forma numrica el nmero de simulaciones
que se considera ms conveniente aplicar.
10-. Mostrar el intervalo de confianza: ci
Por defecto la grfica timeVariation muestra el intervalo de confianza como un sombreado que acompaa a la lnea de
tendencia suavizada. No obstante, en ocasiones puede ser til eliminar esta representacin grfica, dejando solamente la
lnea de tendencia, lo cual se puede llevar a cabo mediante el comando lgico ci=TRUE.
11-. Personalizar los colores de la grfica: cols
Como en la mayora de las grficas de Openair, el comando cols dentro de la grfica timeVariation permite la personalizacin de los colores de la representacin en funcin de una serie de colores estandarizados de Openair, o de los colores
que el propio usuario considere ms convenientes.
12-. Aadir una leyenda a cada una de las grficas: key
Por defecto, y al considerar que la utilidad de la funcin timeVariation se basa en la representacin de las cuatro grficas
elaboradas por la instruccin grfica, la misma establece una slo leyenda compartida para las cuatro que se ubica en el
centro de la representacin.
No obstante, y por si el usuario quisiese con posterioridad desagregar las grficas para su uso individualizado, la funcin
permite aadir la misma leyenda a cada una de las cuatro grfica, para lo cual ser preciso indicar que key=TRUE.
13-. Cambiar el nmero de columnas de la leyenda: key.columns
En aquellos casos en los que se representen varios parmetros, puede ser til indicar a la funcin que los distribuya en la
leyenda por medio de distintas columnas, que podremos personalizar con el comando key.columns. De no disponer nada
en contrario la funcin establecer todos los parmetros en una fila (tantas columnas como parmetros existan).
14-. Modificar la transparencia de los intervalos de confianza: alpha
El intervalo de confianza, adems de poder mostrarse u ocultarse a criterio del usuario mediante el comando ci, pueden
modificarse en cuanto a su transparencia mediante el comando alpha, que se establece como alpha=1, para un intervalo
totalmente opaco que se confundir con la lnea de tendencia, o alpha=0, totalmente transparente, que equivaldr al comando ci.
Por defecto, el intervalo de confianza en la grfica est establecido en un alpha=0.4, aunque en ocasiones puede ser
recomendable incrementar su transparencia para, por ejemplo, permitir la visualizacin de otras lneas de tendencia graficadas en paralelo para varios parmetros.
Elaborado por Fernando Follos Pliego

90

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Dado que la funcin timeVariation presenta su mayor ventaja y desarrollo en la descripcin de escenarios de contaminacin, como ejemplo final se mostrar el escenario resultante para los niveles en inmisin de los contaminantes primarios presentes en nuestro archivo de datos datoscont. Las conclusiones que se pueden adoptar en este
caso son varias, segn se expone a continuacin:
a.

b.

c.
d.

Las concentraciones medias diarias de SO2 se mantienen constantes a lo largo de toda la semana, y los
picos diarios se producen a la misma hora aproximadamente durante todos los das, por lo que se puede
deducir que existe detrs de estos niveles la influencia de algn tipo de foco de emisin industrial de funcionamiento constante.
Las emisiones de NO2 parecen sin embargo vinculadas al trfico rodado, presentando picos a primera hora
de la maana 8 a 10 y ltima de la tarde 20 a 23. Esta conclusin queda adems apoyada por el hecho de
que las concentraciones medias diarias descienden considerablemente los fines de semana, adquirindose
incluso un perfil distinto de distribucin los sbados y domingos.
Las emisiones de partculas van vinculadas siempre a la evolucin de NO2, por lo que se deduce una fuente
comn.
Por otro lado, la distinta evolucin de las concentraciones medias mensuales de partculas con respecto a
los NOx hacen prever la contribucin de otra fuente de origen a los niveles medios globales. El hecho de
que el pico sea en los meses de julio, agosto y septiembre, hace previsible la contribucin de una fuente de
origen natural.

> timeVariation (datoscont, pollutant=c(pm10, so2, no2), cols=c(darkorange, red, blue), alpha=0.2, main=EVOLUCION DE LOS CONTAMINAN
TES PRIMARIOS EN LA ZONA, ylab=Concentracin en ug/m3, xlab=c(Evolucin de las concentraciones horarias durante la semana,Concentraciones
horarias, Concentraciones mensuales, Evolucin por das de la semana))

Elaborado por Fernando Follos Pliego

91

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

El Diagrama de Dispersin:

scatterPlot

Los diagramas de dispersin son ampliamente utilizados en estadstica para comprobar cmo se relacionan dos
variables entre s, y en materia de calidad del aire son tambin una herramienta muy til para la intercomparacin
de datos de dos parmetros relacionados, as como la correlacin de equipos y tcnicas de determinacin de contaminantes, o la realizacin de ejercicios de intercomparacin.
Sin embargo, con R y Openair los diagramas de dispersin adquieren nuevas posibilidades y una dimensin superior ya que entre las habituales funciones, tambin permiten:
a.
b.
c.
d.
e.

Incluir una tercera variable z al diagrama de dispersin de pares de puntos mediante la inclusin de una
escala de color aplicada a los pares.
Utilizar tcnicas adicionales de modelizado de los datos, muy tiles cuando existe un exceso de pares de
datos en la grfica (over-plotting) que impide comprobar de forma realista la relacin existente entre las dos
variables, algo que suele ser muy habitual en largas series de datos.
Aadir al diagrama de dispersin tanto una lnea de regresin como una lnea de tendencia suavizada, muy
til cuando no se presente una relacin lineal estricta entre dos variables, pero se observe una relacin entre ellas en el sentido estricto.
Utilizar distintos periodos temporales de agregacin de los datos, facilitando as el estudio de las mismas sin
necesidad de llevar a cabo el pretratamiento de los datos de forma manual.
Sustituir la variable utilizada en el eje X por la fecha, lo que proporciona al usuario algo muy parecido a la
funcin timePlot pero con mejoras aadidas.

La funcin scatterPlot, en combinacin con otras funciones de Openair como timePlot o timeVariation, permite una
buena caracterizacin de la calidad del aire en relacin a parmetros previamente definidos. Para conseguir una
adecuada configuracin de esta funcin grfica, Openair tiene previstos los siguientes comandos:
Variaciones sobre la funcin:
1-. Parmetro a incluir en el eje X: x
Se debe indicar mediante este comando el parmetro a representar en el eje X, como parte del par de datos, pudiendo en
este eje sustituir el parmetro que originalmente debera ir por la variable temporal, para obtener una funcin similar a
timePlot.
2-. Parmetro a incluir en el eje Y: y
Las grficas de dispersin son , por definicin, representaciones de pares de datos de dos variables relacionadas entre s,
por lo que ser necesario incluir mediante este comando la segunda variable a representar.
3-. Incluir una tercera variable en la representacin: z
Si bien las dos anteriores variables eran obligatorias, tal y como se ha comentado en la introduccin, es e posible incluir
en la representacin una tercera variable, asignada por el comando z, que se integrar en la funcin mediante la asignacin de colores a los pares de datos atendiendo a la escala que se establezca para la tercera variable.
Dicho de otra manera, cada uno de los pares de datos obtenidos por x e y quedar coloreado por la escala proporcionada
por z. Esta novedad grfica proporciona al usuario una herramienta de inestimable utilidad para el anlisis de los partes
de datos y/o diversas variables, tal y como se puede ver en el siguiente ejemplo grfico.
Ej. a) scatterPlot (datoscont, x=no2, y=pm10) , muestra una grfica de dispersin para los datos de NO2 y PM10, donde se puede
ver que el grueso de los datos de estos contaminantes primarios presentan una cierta correspondencia (a excepcin de ciertos datos de
PM10 elevados que seguramente se correspondan con episodios naturales propios de la zona), lo que permite concluir que comparten
las mismas fuentes de origen. b) scatterPlot (datoscont, x=no2, y=pm10, z=ws) , muestra la grfica de dispersin de datos ante
rior, asociada a un tercer parmetro, que en este caso es la velocidad del viento, lo que proporciona una informacin valiosa al observar
que los parmetros PM10 y NO2 adquieren sus valores ms elevados a velocidades de viento bajas y viceversa, lo que confirma la proce
dencia comn, y hace suponer que se trata de una fuente cercana a la estacin de control.
Elaborado por Fernando Follos Pliego

92

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

4-. Mtodo de representacin de la dispersin: method


La representacin de pares de datos mediante puntos en una grfica de dispersin tipo x-y puede generar, en funcin del
nmero de puntos disponible, un exceso de puntos que impida la correcta interpretacin de la grfica, o lo que se conoce
como over-plotting, razn por la que la funcin scatterPlot contempla diversos modos de representacin de la dispersin.
Cuando representamos tres variables en el diagrama de dispersin, de similar manera a como veamos en la grfica anterior, podemos hacerlo mediante puntos, method=scatter, establecido por defecto en la funcin, o mediante una superficie escalonada dividida por niveles medios, method=levels, de forma que se conserve siempre la representacin de
esa tercera variable y su evolucin.
Sin embargo, si las variables disponibles son slo dos, la representacin en superficie puede contemplar el conteo de
datos, y por lo tanto podemos proceder a la representacin por puntos scatter, establecida por defecto, o forzar al programa a que represente en superficie la distribucin de los puntos, ya sea mediante el method=hexbin, que consiste
bsicamente en cortar los pares de datos que caen en cada celda hexagonal y colorear su contenido en funcin del nmero (para lo cual se utiliza el paquete hexbin de R), o mediante el comando method=density, que utiliza una herramienta
de estimacin de la densidad kernel mostrando una superficie continua donde se presenta la distribucin en la densidad
de los puntos en escala de colores.
5-. Agrupar la representacin de datos por escenarios: group
El comando group de la funcin scatterPlot permite la representacin de varias series de datos (una por cada escenario
representado) dentro de una misma grfica, sealando el campo del conjunto de datos que dispone de los escenarios a
representar en la grfica.
De esta forma, tal y como ya se describa para la funcin timeVariation, si el comando apunta a un campo de la base de
datos que consiste en una variable de texto (variable descriptiva procedente, por ejemplo, de la aplicacin de una instruccin tipo splitByDate), la grfica representar los pares de datos que seleccione el usuario en funcin de los distintos escenarios dispuestos en dicho campo de texto.
Por el contrario, si el comando group apunta a un campo del conjunto de datos con variables numricas, generar sus
propios escenarios dividiendo los datos en cuantiles que luego representar en la grfica como si fuesen distintos escenarios de contaminacin. Cabe destacar que, en este ltimo caso, al seleccionar una variable numrica del propio conjunto
de datos para el agrupamiento, no podremos utilizar otros comando importantes para la grfica como el que nos permite
cambiar el periodo de agregacin de los datos: avg.time.
6-. Disponer de otro periodo de agregacin de los datos: avg.time
La grfica scatterPlot dispone los pares de datos de la dispersin tal y como se presentan en nuestro conjunto de datos,
por lo que tal y como se comentaba en el punto cuarto, es muy probable que exista over-plotting (o exceso de puntos
graficados) ante la representacin de histricos de datos muy prolongados en el tiempo.
Por ello, adems de disponer de las herramientas descritas en el comando method, es muy posible que sea recomendable representar los datos en periodos de agregacin temporal mayores a los originalmente dispuestos, razn por la que se
dispone del comando avg.time.
Elaborado por Fernando Follos Pliego

93

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Mediante este comando, que en scatterPlot podemos usar en toda su extensin, podemos promediar los datos en periodos que van desde el segundo sec, hasta el minuto min, la hora hour, el da day, la semana week, el mes month,
el cuatrimestre quarter, o incluso el ao year, pudiendo adems agregar un nmero a la definicin del periodo de agregacin, lo que le aporta an ms flexibilidad al comando.
7-. Establecer el porcentaje de datos mnimo: data.thresh
Ya hemos visto en funciones grficas anteriores que, al cambiar el periodo de integracin del dato, es muy posible que
precisemos indicar al clculo el nmero mnimo de datos vlidos que se requerirn para considerar el dato obtenido estadsticamente como vlido, lo cual lograremos indicando al comando data.thresh el porcentaje mnimo previsto.
8-. Estadstico a utilizar para agregar los datos: statistic
Por defecto, la instruccin scatterPlot utiliza como estadstico para la agregacin de los datos la media mean, pero podra ser igualmente interesante indicarle que utilice otros clculos estadsticos como el mximo max, el mnimo min, la
mediana median, la frecuencia de aparicin (conteo de datos) frequency, la desviacin estndar sd, o el percentil
percentile.
Si utilizamos este ltimo comando estadsticos, scatterPlot calcular por defecto el percentil 95, por lo que deberemos
usar el comando percentile si queremos indicarle a la funcin un porcentaje distinto al dispuesto por defecto.
9-. Desagregar los datos para hacer varias grficas: type
Tal y como hemos visto para grficas anteriores, con el comando type podemos dividir las grficas en funcin de diversas
categoras como das de la semana weekday, estaciones season, aos year, etc. de similar forma a como se haca
con la instruccin cutData.
Tambin se puede forzar al comando a que proceda a la divisin de los datos en funcin de otro parmetro del conjunto
de datos, en cuyo caso dividir la grfica en cuatro cuartiles, o incluso puede forzar la divisin en funcin de parmetros
mltiples.
10-. Incluir en la grfica distintos modelizados de la tendencia en los datos: smooth, spline, linear
Por defecto la grfica scatterPlot slo muestra los pares de datos dispuestos por el usuario, pero en ocasiones es preciso
conocer de forma matemtica cul es la tendencia bsica que siguen dichos datos, bien para comprobar su comportamiento bsico, o para prever cuales pueden ser las concentraciones a futuro, o incluso para establecer la existencia o no
de correspondencia matemtica entre ellos. Para ello scatterPlot dispone de tres opciones bsicas, segn se expone a
continuacin:
a)

Lnea de tendencia suavizada. Al igual que se utilizaba en grficas como smoothTrend, pero aplicada a una distribucin de pares de datos. Esta lnea de tendencia se activa mediante el comando lgico smooth=TRUE, con el
que se activar la representacin de la lnea de tendencia junto a un margen de confianza del 95%, tal y como se
puede ver a continuacin.

b)

Interpolacin de datos con funcin spline. En aquellas ocasiones en las que el nmero de pares de datos es muy
bajo, o se corresponden a una secuencia dada para la que se requiere de una lnea ajustada a los pares, es posible indicarle a la funcin scatterPlot que realice una interpolacin por splines. De esta forma, al activar el comando lgico spline=TRUE, lo que se consigue es generar una curva diferenciable dividida en distintos tramos para
los que se aplican distintos polinomios, tal y como se puede ver en la siguiente grfica.

b)

Recta de regresin. Por ltimo, en cuanto al modelizado de los datos, es posible ajustar a la grfica de dispersin
una lnea de regresin a la que se aadir un intervalo de confianza del 95%. Tay y como se puede comprobar en
la siguiente grfica, adems en esta ocasin se muestran dentro de la propia grfica la ecuacin de regresin
lineal y el coeficiente de determinacin R2. Esto se consigue activando el comando lgico linear=TRUE.

El usuario deber tener siempre en cuenta que en la actual versin de Openair el modelizado de la tendencia en los datos
no es compatible con la utilizacin de una tercera variable, motivo por el que deber decantarse en todo caso por una u
otra opcin.
Elaborado por Fernando Follos Pliego

94

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

11-. Mostrar el intervalo de confianza: ci


Tanto el comando smooth como el comando linear incorporan por defecto a la grfica de tendencia un intervalo de confianza al 95% que se muestra sobre la misma con un sombreado. Con el comando l+gico ci=FALSE, es posible desactivar este sombreado, haciendo que en la grfica se represente slo la tendencia.
12-. Agregar lneas de interrelacin de variables: mod.line
Dado que los ejes x e y seguramente se encuentren en rangos distintos (salvo que personalicemos sus lmites), y puesto
que en ocasiones puede ser til disponer de algn tipo de herramienta que nos permita comprobar la exactitud y/o precisin con la que una dispersin de pares de datos se aproxima a la correlacin perfecta 1:1, la funcin scatterPlot tiene
previsto el comando lgico mod.line.
Este comando, una vez activado mediante mod.line=TRUE, traza una lnea recta que une los puntos en los que x es igual
que y o, dicho de otra manera, la relacin entre variables es unitaria 1:1, sirviendo as como lnea de referencia. Adems
de la lnea de referencia 1:1 que muestra en la grfica este comando, se dibujan otras dos lneas secundarias, en formato
de lnea discontinua, que establecen las relaciones 2:1 y 0.5:1 de las variables x e y, completando as las referencias.
El comando mod.line puede ser muy til, por ejemplo, para facilitar la interpretacin visual de ciertas grficas elaboradas
por la funcin scatterPlot para la intercomparacin de equipos o la realizacin de estudios de correlacin.
13-. Establecer los colores de la grfica: cols
Al igual que otras grficas en Openair, a travs del comando cols se pueden personalizar los colores de la grfica, ya sea
usando paquetes de colores ya estandarizados, tales como increment, heat o hue, o disponiendo de los colores personalizados por el propio usuario.
14-. Cambiar el tipo de representacin de los pares de datos: plot.type
Los pares de datos de la dispersin se presentan por defecto como puntos p, pero pueden tambin representarse como
lneas l, o como lneas y puntos b, segn se asigne cada variable entre comillas al comando plot.type. Las dos ltimas
pueden ser especialmente tiles cuando se representa la fecha en el eje de las x.
15-. Cambiar la escala de los ejes: log.x , log.y
Por defecto la escala de los ejes x e y es una escala aritmtica, lo que podra ocasionar que la representacin de los puntos no fuese del todo adecuada cuando las concentraciones de alguno de los parmetros presenta fluctuaciones muy
fuertes. De esta forma, la funcin scatterPlot permite transformar los ejes a escala logartmica (en logaritmo 10) para el eje
x o el eje y, indistintamente, utilizando los comandos lgicos log.x=TRUE y/o log.y=TRUE.
Transformar los ejes a escala logartmica puede ser tambin una buena idea si queremos comprobar la existencia real de
una relacin lineal calculada entre dos parmetros, ya que la utilizacin de este tipo de escala exacerba las discrepancias
que pudieran existir en la dispersin, alejndolas de una forma mucho ms visual de la relacin lineal.

Elaborado por Fernando Follos Pliego

95

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

16-. Modificar el tamao de cuadrcula del mtodo level: x.inc , y.inc


Ya hemos visto que cuando presentamos en una grfica tres variables, podemos utilizar el mtodo de pares de datos
clsico scatter o utilizar un mtodo de niveles levels en el que se modeliza la distribucin en una cuadrcula dada en
funcin de los pares de datos encontrados y la concentracin media del tercer parmetro z.
Mediante los comandos x.inc e y.inc , a los que se les debe asignar el tamao en funcin de las unidades de parmetro
representado, podemos personalizar el tamao de esa cuadrcula en sus dos dimensiones, ajustando la grfica a una
mayor o menor resolucin en funcin de lo que ms nos convenga.
17-. Modificar la relacin entre ejes de las distintas grficas: x.relation , y.relation
Al utilizar el comando type y dividir la grfica original en varias grficas en funcin del parmetro indicado, podemos comprobar cmo las grficas generadas comparten por defecto la misma escala, tanto para el eje x como para el eje y. Este
hecho hace que en aquellos casos en los que la grfica no presente una distribucin uniforme, se pueda presentar un
problema en la representacin que dificulte su interpretacin.
Para solventar esta situacin la funcin scatterPlot dispone de los comandos x.relation e y.relation, que permiten utilizar la
misma escala same (opcin por defecto), o disponer de escalas independientes y adaptadas a cada grfica para los ejes
que el usuario quiera, con la opcin free.
18-. Dibujar encabezados a las grficas divididas: strip
Cuando dividimos una grfica scatterPlot en varias grficas, con el comando type, la funcin presenta por defecto una
banda superior con la que titula e identifica cada una de las grficas elaboradas en funcin del parmetro seleccionado
por el comando type.
En esta ocasin, la funcin scatterPlot permite al usuario eliminar este encabezado individual para cada grfica, debiendo
para ello desactivarse el comando con strip=FALSE.
19-. Aadir lneas divisorias de referencia: ref.x , ref.y
La funcin smoothTrend permite aadir a la grfica, adems de la cuadrcula de fondo que presenta por defecto, lneas
destacadas que sirvan de referencia en la cuadrculas por las razones que el usuario considere ms convenientes. Al
utilizar los comandos ref.x y/o ref.y, el usuario tan slo tendr que indicar el punto concreto del eje correspondiente desde
el que se desea trazar la lnea destacada.
Estas lneas son muy tiles, por ejemplo, para la representacin en la grfica de la distribucin de los partes de un determinado parmetro en funcin de sus valores lmite, valores objetivo o umbrales de referencia., tal y como se muestra en el
ejemplo dispuesto al final de este apartado.
20-. Utilizar una escala lineal o una escala comprimida para z: trans
Cuando representamos una tercera variable z en la grfica scatterPlot, puede suceder que la escala de color que utilicemos no se adapte correctamente a los valores de la tercera variable, pudiendo predominar los valores muy bajos cuando
nos interesara conocer la evolucin a valores ms elevados.
Este efecto, ocasionado en muchas ocasiones por utilizar una escala lineal, puede solventarse activando el comando
lgico trans=TRUE, en cuyo caso se utilizar una transformacin de raz cuadrada que permitir distribuir mejor la escala
de colores utilizada para incluir mayoritariamente los valores de la parte superior de la escala.

Por ltimo, se debe tener en cuenta que la funcin scatterPlot sigue siendo un desarrollo de la funcin bsica de R
denominada plot, por lo que muchos de sus comandos de configuracin son utilizables tambin en scatterPlot,
siendo de enorme inters alguno de ellos , tales como:

El comando pch, que modifica el smbolo utilizado para el marcador del par de datos.
Los comando ylim y xlim, que permiten modificar los rangos en los que se movern los ejes de la grfica.
Los comandos ylab y xlab, que permiten aadir ttulos a los ejes x e y para describir las variables.

Elaborado por Fernando Follos Pliego

96

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

En la siguiente grfica de ejemplo, se muestra la evolucin de las concentraciones horarias de dos equipos de
ozono funcionando en paralelo para su intercomparacin. El primer equipo, denominado O3 en la grfica, es el
equipo habitual de la estacin de control, mientras que el equipo denominado O3 referencia, es un equipo previamente calibrado y supervisado por organismo externo que hemos tenido en intercomparacin con el anterior durante un periodo superior al ao, y del cual se han adquirido los datos en paralelo para, con la funcin merge, incorporar los datos a nuestro conjunto de datos datoscont.
El estudio de intercomparacin, dada la estacionalidad del parmetro, finalmente se divide por estaciones del ao,
siendo el resultado el que se muestra a continuacin. En l se puede observar que:

La evolucin de ambos parmetros es prcticamente paralela confirmndose que existe una clara correlacin entre ambos equipos.
La correlacin, sin embargo, atendiendo al coeficiente R2, se ve ligeramente afectada en la poca de verano, donde parece que pueden darse factores que generan interferencias sobre alguno de los equipos, aunque se encuentran por encima de una R2 de 0,9 en cualquier caso.
La grfica presenta las lneas de referencia de 180 g/m3 y 240 g/m3 para que el lector pueda comprobar
adems la evolucin de las superaciones de los umbrales horarios de informacin y alerta para los equipos
y su correlacin.

> scatterPlot ( datoscont, x=O3R, y=O3, linear=TRUE, type=season, pch=18, y.relation=free, ref.y=c(180,240), trans=TRUE, layout=c(2,2), xlab=O3
referencia, ylab=O3, main=EVOLUCIN DE LOS NIVELES DE OZONO SEGN LA ESTACIN DEL AO)

La funcin scatterplot es una funcin ampliamente utilizada en R y dispone de paquetes de desarrollo de la misma
muy potentes, dato que es interesante que conozca todo aquel usuario que est interesado en conocer o utilizar
con mayor profusin esta herramienta grfica. Especialmente interesantes para la representacin de datos de calidad del aire podran resultar paquetes de representacin como scatterplot3d, disponible como siempre en el recurso CRAN de R.

Elaborado por Fernando Follos Pliego

97

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Funcin de relacin lineal:

linearRelation

La funcin de relacin lineal representa grficamente cmo evoluciona la relacin entre dos parmetros contaminantes. Para ello analiza la variacin de la pendiente de su regresin lineal con el tiempo (obviando el trmino independiente) mediante un modelo lineal que calcula dicha pendiente para el periodo temporal seleccionado con un
intervalo de confianza del 95%.
De forma prctica, a la hora de evaluar y estudiar la calidad del aire, podemos decir que segn hemos ido avanzando con este manual:

Primero tenamos la funcin scatterPlot con la que podemos comprobar qu tipo de relacin existe entre dos
parmetros, incluso adoptando un tercer parmetro de referencia.
En segundo lugar podamos comprobar sobre dicha funcin grfica cmo de estrecha era esa relacin, utilizando el comando linear para calcular la recta de regresin y comprobar la correlacin entre ambos parmetros.
Y por ltimo, surge la funcin linearRelation, que va ms all y analiza cmo evoluciona dicha correlacin en
funcin del tiempo, e incluso en funcin de distintos periodos temporales.

Bsicamente la grfica linearRelation supone que entre dos parmetros dados existe una relacin lineal que se
corresponde con la ecuacin bsica y=ax + b, que se ha podido estudiar y comprobar a travs de funciones anteriores, para luego comprobar y estudiar como evoluciona la pendiente de esta ecuacin a en funcin de distintos
periodos temporales.
Para llevar a cabo la funcin linearRelation, y estudiar en toda su extensin la evolucin de la regresin lineal de
dos parmetros con el tiempo, disponemos de los siguientes comandos:
Variaciones sobre la funcin:
1-. Parmetro a incluir en el eje X: x
Se debe indicar mediante este comando el parmetro de referencia, o contaminante que deseamos que aparezca en el
eje x.
2-. Parmetro a incluir en el eje Y: y
Se deber indicar con este comando el parmetro que deseamos que aparezca en el eje y.
3-. Periodo para el que se realiza el anlisis de la pendiente: period
La grfica de evolucin de la pendiente puede realizarse para el anlisis de distintos periodos de tiempo, y en distintos
formatos, segn se expone a continuacin:
a)

b)

De forma lineal en el tiempo, representando los pares de datos en funcin de la fecha, de principio a fin, se puede
analizar la evolucin de la pendiente en promedios mensuales, period=monthly, o incluso tambin en promedios semanales, period=weekly. Para este tipo de grficas la funcin linearRelation aade adems una lnea de
tendencia suavizada que permite comprobar la evolucin de la pendiente de forma ms visual.
Tambin podemos pedir a la grfica que grafique ciertos ciclos temporales en los que se considere que pueden
existir variaciones en la pendiente, pudiendo realizar un anlisis de la evolucin promedio durante las horas del
da, period=hour, los das de la semana, period=weekday, o una incluso utilizando una combinacin de ambos, period=day.hour.

En las grficas expuestas a continuacin se trabaja sobre la base de la correlacin existente entre el O3 y el O3R visto en
el anterior apartado, destinado a la funcin scatterPlot. En este caso el ejemplo tratar de establecer las dos posibilidades
de representacin por periodos que establece la funcin linearPlot, utilizando los pares de datos del ozono tratados con
anterioridad.
Elaborado por Fernando Follos Pliego

98

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. a) linearRelation (datoscont, x=o3R, y=o3, period=monthly) , muestra una grfica de evolucin de la pendiente para la correla
cin existente entre los dos equipos de ozono vistos con anterioridad, durante todo el periodo de estudio contemplado para la intercom
paracin de los equipos. b) linearRelation (datoscont, x=o3R, y=o3, period=hour) , muestra la grfica de evolucin de la pendien
te como promedio en las 24 horas de un da, pudiendo observarse como la pendiente se acerca a la unidad durante las horas centrales
del da, cuando mayor radiacin solar neta se observa.

4-. Dividir la grfica por aos: condition


Cuando solicitamos a la funcin linearRelation que nos elabore una grfica en la que haga un anlisis de la evolucin
promedio durante los das de la semana, las horas del da o ambos, segn se ha visto en el apartado anterior para el anlisis de los ciclos temporales, es posible que ante largas series temporales el promedio realizado enmascare la evolucin
a lo largo de los aos.
Dado que la funcin no dispone del comando type, para poder desagregar los datos de la grfica, como si que ocurre en
otras grficas de Openair, dispone del comando lgico condition, que una vez activado mediante condition=TRUE, dividir la grfica en aos, mostrando la evolucin deseada para cada ao.
5-. Nmero mnimo de pares de datos para cada periodo: n
En ocasiones puede ocurrir que el nmero de pares de datos completos (x-y) para un determinado periodo, y en especial
para aquellos que son ms reducidos, sea tan pequeo que pueda restar representatividad al modelo lineal calculado.
Mediante el comando n, al que se deber asignar el nmero mnimo de pares de datos completos que se desea, se puede
actuar sobre la representatividad del modelo lineal. De esta forma, aquellos periodos que no lleguen al nmero mnimo
establecido por el usuario como representativo sern sencillamente ignorados en el clculo del modelo lineal.
Cabe destacar en este caso, que la variable que requiere el comando n es una variable numrica que se refiere al nmero
total de pares de datos que debern estar disponibles, y no as al porcentaje sobre el total que se requieren como representativos, tal y como hasta el momento hemos visto en comandos como data.thresh.
6-. Coeficiente de correlacin mnimo exigido: rsq.thresh
En ocasiones la correlacin existente para dos parmetros puede que no sea muy buena en determinados periodos de
tiempo, ya sea porque no existe una relacin efectiva, o porque se ve afectada por condicionantes externos o imprevistos.
Con el comando rsq.thresh es posible imponer a la funcin un lmite de aceptacin al coeficiente de correlacin (R2) que
se presente, de forma que cualquier recta de regresin cuya correlacin sea menor que el nmero indicado por el usuario,
ser ignorada y no se representar.
El valor que podr adquirir el comando rsq.thresh podr ir de 0 a 1, aunque se deber tener en cuenta que valores muy
elevados de este comando podran ocasionar que el nmero de rectas de regresin calculadas sea muy bajo y no se pueda obtener una evolucin lgica de la tendencia. En cualquier caso, este comando aplicado a los distintos periodos previsto por la funcin puede ser muy til para comprobar la evolucin temporal y/o cclica de la correlacin, ms all de la propia pendiente.
7-. Establecer los mrgenes de representacin de la escala del Eje Y: ylim
Por defecto la funcin ajustar los mrgenes de representacin del eje Y a los valores con que se presentan las pendientes calculadas por el modelo. No obstante, resulta posible modificar este aspecto mediante un comando bsico de R como
ylim, con el que podemos personalizar los valores mnimo y mximo a utilizar.
Elaborado por Fernando Follos Pliego

99

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

8-. Cambiar el ajuste de la lnea de tendencia suavizada: span


La lnea de tendencia suavizada que dibuja la funcin cuando seleccionamos un periodo de representacin temporal lineal, de principio a fin segn la fecha, puede ajustarse en mayor o menor grado modificando el valor del comando span,
de forma que sea una lnea de tendencia ms o menos ajustada a los puntos representados.
Este comando se hereda de la funcin de R scatter.smooth, y permite fijar el grado de ajuste de una curva de tendencia
del tipo LOESS para la dispersin de puntos establecida. De esta forma, valores de span=0.2 generarn un mayor ajuste
de la curva de tendencia suavizada que valores de span=1 que prcticamente la acercarn a una recta.

Por ltimo, se debe recordar que para la funcin linearRelation es posible tambin utilizar los comandos propios de
etiquetado de los ejes, como ylab o xlab, o de titulacin de la grfica, como main.
Como ejemplo ilustrativo de esta funcin grfica de Openair se ofrece a continuacin un ejemplo que contina con
los datos de la regresin lineal obtenida en el anterior apartado para la grfica scatterPlot y los dos equipos de
ozono de que dispone nuestro conjunto de datos datoscont. En esta ocasin se estudia la evolucin de la pendiente existente en la correlacin de los dos equipos con respecto a las horas del da y los distintos aos de datos.

> linearRelation ( datoscont, x=o3r, y=o3, period=hour, condition=TRUE, rsq.threash=0.85, n=320, ylab=Evolucin de la pendiente entre ozonos,
xlab=Horas del da, mainEstudio de la correlacin existente entre ozonos a lo largo del da, ylim=c(0.8, 1.2))

Elaborado por Fernando Follos Pliego

100

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Funcin de datos condensados:

trendLevel

La funcin grfica trendLevel proporciona una manera muy prctica y visual de condensar grandes bloques de
datos de calidad del aire en una sola grfica en la que adems podremos comprobar cmo evolucionan las tendencias globales, diarias e incluso estacionales para los distintos contaminantes.
La propiedad fundamental que tiene trendLevel, y que la diferencia del resto de funciones de Openair, es precisamente la capacidad de poder condensar la informacin al ofrecer diversas combinaciones para calcular el estadstico deseado del contaminante o parmetro que se le indique. Esto se consigue al definir los ejes x e y de la grfica como funciones de desagregacin de datos, similares al comando type o la instruccin cutData, permitiendo a
su vez desagregar la grfica en varias.
De esta forma, la funcin trendLevel se limita a calcular el estadstico que corresponda, para un parmetro dado,
en el nivel de desagregacin que se le indique, que generalmente es de carcter temporal (horas del da por meses del ao, das de la semana por estaciones, etc), para luego representarlo en la grfica mediante una escala de
colores.
En su versin ms simple, donde las variables bsicas de la funcin se adoptan por defecto, la funcin trendLevel
muestra ya su gran capacidad de condensacin, tal y como se puede observar en el siguiente ejemplo:
Ej. trendLevel(datoscont, pollutant=pm10) , donde se calcula el promedio de un parmetro de nuestro conjunto de datos, en este caso de PM10, para
cada hora del da (desagregacin por defecto en el Eje Y) en cada mes del ao (desagregacin por defecto en el Eje X), y esto elaborado en una grfica
para cada ao de nuestro histrico de datos (condicin por defecto del comando type), tal y como se puede observar en la grfica adjunta.

Aunque se encuentra todava en fase de desarrollo, la funcin trendLevel proporciona las siguientes opciones de
configuracin:
Variaciones sobre la funcin:
1-. Seleccionar el parmetro a representar: pollutant
Se debe indicar a la funcin el contaminante o parmetro del conjunto de datos que se desea representar en la grfica.

Elaborado por Fernando Follos Pliego

101

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
2-. Seleccionar los criterios de desagregacin de los datos: x, y, type.
La funcin trendLevel calcula la estadstica solicitada para un parmetro dado usando para ello la combinacin de los tres
criterios de desagregacin que dispongamos, asignados mediante los comandos type, que divide la grfica, y los comandos x e y que definen los ejes.
La funcin trendLevel siempre har uso de estos tres niveles de desagregacin de los datos, asignando valores por defecto a aquellos que el usuario no defina personalmente, tal y como hemos visto en la grfica de ejemplo anterior. Evidentemente, un requisito a cumplir en cualquier caso es que los niveles de desagregacin definidos no deben coincidir nunca
unos con otros, si an siquiera con los asignados por defecto. En caso contrario la funcin devolver un error.
Las variables a aplicar a cada uno de los niveles de desagregacin de la funcin son los ya vistos para el comando type,
en toda su extensin, pudiendo pedirse que se dividan los ejes o la propia grfica, en funcin de las horas del da hour,
las horas de luz daylight, los das de la semana weekday, o por fines de semana y das laborables weekend, por meses del ao month, por meses y aos monthyear, por estaciones del ao season, o incluso por aos year.
La desagregacin con que se defina cada comando de la funcin, adems de las variables predefinidas vistas con anterioridad, puede tambin tener en cuenta campo numricos de nuestra base de datos, tal y como vimos para la instruccin
cutData. Para ello, tan slo habr que indicar al comando el nombre del campo al que debe referirse.
Los niveles de desagregacin aplicados se definen mediante los siguientes comandos:
a) Desagregacin a aplicar en el Eje X: x.
Aplica cualquier tipo de desagregacin de las vistas anteriormente al Eje X de la grfica. Por defecto aplica la desagregacin month (meses del ao). Si se utilizase una variable numrica de nuestra base de datos, y ello fuese posible, se realizara una divisin de los datos en 10 niveles o cuantiles.
b) Desagregacin a aplicar en el Eje Y: y
Aplica cualquier tipo de desagregacin de las vistas anteriormente al Eje Y de la grfica. Por defecto se aplica la desagregacin hour (horas del da). Si se utilizase una variable numrica de nuestra base de datos, y ello fuese posible,
se realizara una divisin de los datos en 10 niveles o cuantiles.
c) Desagregacin a aplicar en la propia grfica: type.
Aplica cualquier tipo de desagregacin de las vistas anteriormente a la propia grfica, dividiendo la misma en varias.
Por defecto se aplica la desagregacin ms genrica year (aos). Si se utilizase una variable numrica, la grfica se
dividir en funcin de sus cuatro cuartiles.
Destacar adems que el comando type, al igual que en otras grficas de Openair, se puede utilizar combinando varios
de los criterios vistos hasta el momento para segregar los datos.
3-. Nmero de niveles en los que dividir los ejes: n.levels
Cuando la variable seleccionada para los comandos de desagregacin x, y, o type es numrica, correspondindose a uno
de los campos de nuestro conjunto de datos, ya hemos visto anteriormente que por defecto la funcin procura dividir en
10 niveles o cuantiles los ejes x e y, y en los cuatro cuartiles habituales a la propia grfica, en lo que sera por defecto
n.levels=c(10,10,4). No obstante, se podra indicar a la funcin que utilizase un nmero distinto de divisiones modificando
los valores preestablecidos para el comando n.levels.
4-. Dar inclinacin a la rotulacin de los ejes: rotate.axis
En ocasiones, y al objeto de favorecer una mejor rotulacin de los ejes de la grfica, es preciso modificar la inclinacin de
las variables incluidas en los ejes. Por defecto la grfica optimiza la representacin, dando a las variables del eje X una
orientacin vertical, mientras que las del eje Y mantienen una orientacin horizontal, en lo que sera la configuracin del
comando como rotate.axis=c(90,0). No obstante, el usuario podr disponer de la configuracin que considere ms adecuada o mejor se adapte a las especiales circunstancias de su grfica.

Elaborado por Fernando Follos Pliego

102

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

5-. Lmites en los que se mover la escala de colores: limits


Por defecto, la grfica acomoda la escala de colores establecida al rango de valores disponible para el contaminante o
parmetro seleccionado. Sin embargo, en ocasiones puede ser preciso indicar a la funcin los valores mnimo y mximo
que debe escoger el comando limits.
6-. Colores a utilizar para la escala: cols
Como hemos visto en mltiples ocasiones, la grfica podr hacer uso de combinaciones de colores predeterminadas, o
incluso establecer combinaciones personalizadas por el usuario a travs del comando cols.
7-. Clculo estadstico a realizar: statistic
La funcin trendLevel utiliza por defecto para el clculo estadstico de los datos la media mean, aunque mediante el
comando statistic podra tambin solicitar a la funcin que realizase el clculo del mximo max, o del nmero de datos o
frecuencia de aparicin frequency.
El clculo estadstico de los datos es uno de esos comando de trendLevel que se encuentra en la actualidad an en desarrollo. No obstante, permite la asignacin directa de aquellas funciones que codifique el propio usuario previamente, para
lo cual habr que tener un especial cuidado. En todo caso esto sera objeto de un desarrollo ms completo de la programacin en R que escapa a los objetivos de este manual.

Una correcta utilizacin de la funcin trendLevel permite obtener interesantes grficas como la expuesta a continuacin para la evolucin del NO en nuestro conjunto de datos. En ella se puede observar la afeccin del trfico
rodado en los das laborales, as como la estacionalidad del contaminante debido a los condicionantes meteorolgicos dados en la zona.

> trendLevel (datoscont, pollutant=no, x=hour, y=weekday, type=season, rotate.axis=c(0,45), cols=heat, xlab=Horas del da,
ylab=Das de la semana, main=Evolucin de las concentraciones de NO segn las estaciones del ao)

Elaborado por Fernando Follos Pliego

103

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Funcin de Representacin Geogrfica:

GoogleMapsPlot

Como ltima herramienta grfica de especial inters para el trabajo diariamente desarrollado por los tcnicos en
materia de calidad del aire, este manual quiere presentar la funcin de representacin geogrfica, cuyo propsito
bsico es permitir al usuario utilizar los mapas de Google para realizar representaciones espaciales de la calidad
del aire.
La funcin GoogleMapsPlot se basa en mapas estticos simples de Google (API de Google Maps), lo que comparado con cualquier Sistema de Informacin Geogrfica (GIS) convencional har que resulte bastante limitado. Sin
embargo, no por ello deja de ser muy interesante para la representacin de localizaciones por puntos. As, la funcin GoogleMapsPlot resulta muy til para representar datos sobre distintos tipos de planos, permitiendo comprobar la distribucin geogrfica de las concentraciones de un determinado contaminante.
El modo de funcionamiento de la funcin es muy sencillo, siguiendo el concepto de otras funciones de grficas de
Openair. La funcin GoogleMapsPlot representa, como si fuese un grfico X-Y habitual, las coordenadas de latitud
y longitud geogrfica que le demos en nuestro conjunto de datos, siendo para esta funcin la informacin aportada
algo similar a la funcin ScatterPlot de representacin de pares de datos. Una vez representados los pares de coordenadas en la grfica, lo que hace es aadir de fondo el mapa de Google Maps que se adapte a las coordenadas que tengamos en nuestros ejes X e Y. De esta forma, slo con un conjunto de datos que disponga de la ubicacin de las estaciones y los comandos bsicos de la funcin, se representara la ubicacin de los puntos de control, tal y como se puede comprobar en el siguiente ejemplo adjunto.
Ej. GoogleMapsPlot(datoscontub, latitude=lat, longitude=long) , donde lo que hace la funcin es representar los distintos pares de
coordenadas de las estaciones de la Comunidad Autnoma de Madrid de que disponga el archivo de datos que hemos modificado, da
toscontub para que disponga de las coordenadas de ubicacin.

Si a esta configuracin bsica de representacin le aadimos a cada punto de ubicacin la posibilidad de que represente un parmetro, solicitando a la funcin que lo obtenga desde nuestro conjunto de datos, como por ejemplo
el ozono, nos encontramos que para cada punto de la grfica (par de datos de longitud y latitud), Openair modifica
Elaborado por Fernando Follos Pliego

104

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

la representacin del punto de ubicacin, varindolo de color y tamao para representar la concentracin dada del
parmetro solicitado en el punto de coordenadas establecido, tal y como podemos ver en el siguiente ejemplo:
Ej. GoogleMapsPlot(datoscontub, latitude=lat, longitude=long, pollutant=o3) , donde lo que hace la funcin es representar los distintos pares de
coordenadas de las estaciones de la Comunidad Autnoma de Madrid de que disponga el archivo de datos que hemos modificado, datoscontub para que
disponga de las coordenadas de ubicacin, modificando los puntos en tamao y color para incluir la representacin de la concentracin de Ozono dada
para cada punto.

Un aspecto importante a tener en cuenta, tal y como puede comprobarse en el ejemplo adjunto, es que GoogleMapsPlot no dispone actualmente de ninguna capacidad de clculo estadstico o integracin de los datos por lo
que representa para cada punto todos los datos que encuentre del parmetro.
Esto supone que no basta con aadir las coordenadas geogrficas a nuestro conjunto de datos sino que, tal y como podemos imaginar, debemos tratar previamente los mismos, antes de ejecutar la funcin de representacin
geogrfica, de forma que la representacin se haga para los datos pretendidos tanto desde el punto de vista de
integracin temporal como desde el punto de vista de su desagregacin, si queremos aplicar el comando type.
Variaciones sobre la funcin:
1-. Introducir las coordenadas geogrficas a representar: latitude, longitude
La funcin requiere obligatoriamente que se le indiquen los campos de conjunto de datos que disponen de las coordenadas geogrficas que posicionan cada uno de los puntos a representar para lo cual utiliza los comandos latitude y longitude, a los que habr que indicarles los campos que disponen de los datos de latitud y longitud, respectivamente.
En este sentido, conviene tener en cuenta que Google puede posicionar y representar cualquier punto en el planeta, siempre que se tenga en cuenta que las coordenadas que usa se corresponden con un sistema de proyeccin cilndrica simple
con un Datum WGS84. Si disponemos de nuestras coordenadas en otro sistema de ubicacin geogrfica, como por ejemplo UTM (Universal Transversal de Mercator) deberemos de proceder previamente a su transformacin. As mismo, la
coordenada se puede proporcionar a Openair en formato numrico decimal, no siendo necesaria su transformacin a
grados, minutos y segundos.
Elaborado por Fernando Follos Pliego

105

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
2-. Aadir un parmetro o contaminante al punto: pollutant
Con la funcin GoogleMapsPlot, tal y como hemos visto anteriormente, es posible suministrar un campo adicional relativo
a un parmetro o contaminante que se representar para cada punto de ubicacin dispuesto. La representacin de dicho
parmetro se llevar a cabo modificando el tamao y/o color del punto en cuestin, en funcin de los comandos que establezca el usuario para la funcin.
3-. Modificar los mrgenes de la grfica: xlim, ylim
La funcin GoogleMapsPlot adopta automticamente los valores de los Ejes X e Y que mejor se adapten a la representacin de los puntos que se hayan suministrado, ajustando los lmites superior e inferior de ambos ejes a un cuadrado que
contenga todos los puntos con la mxima resolucin posible del plano de fondo.
En cualquier caso, como en otras grficas de Openair, el usuario podr modificar dichos valores con los comandos xlim o
ylim, a los que tendr que dotarse con los valores mnimo y mximo que se desea para las coordenadas de longitud (para
el Eje X) o de latitud (para el Eje Y). Se debe tener en cuenta que, en la actual versin de Openair, el rea de representacin de la grfica es siempre cuadrada, por lo que el usuario slo podr modificar el Eje X o el Eje Y, adaptndose automticamente el otro eje a los valores que correspondan.
4-. Desagregar los datos para representar distintas grficas: type
Al igual que con otras grficas de Openair, la funcin GoogleMapsPlot dispone del comando type que le permite desagregar los datos para representarlos en distintas grficas. Si bien esta funcin conserva todas las caractersticas del comando type, vistas en grficas anteriores, se debe recordar al usuario que el conjunto de datos a utilizar debe encontrarse
previamente tratado, lo cual incluye tambin las posibles desagregaciones que se vayan a hacer con dicho comando. De
lo contrario, la grfica realizar para el mismo punto y la misma grfica varias representaciones (tantas como valores
adopte el parmetro para dicha ubicacin), tal y como ocurra en la grfica de la pgina anterior.
Es importante recordar siempre que la funcin GoogleMapsPlot basa su representacin en los pares de coordenadas y no
en el campo date, como otras grficas. Se trata de representar coordenadas con la posibilidad de incluir una tercera variable, y no de representar slo parmetros contaminantes.
5-. Etiquetar los puntos geogrficos representados: labels
Si el conjunto de datos, adems de las coordenadas geogrficas, aporta un campo de texto descriptivo de los puntos, es
posible indicar a la grfica, mediante el comando labels, el campo a utilizar para identificar y etiquetas cada uno de los
puntos.
6-. Personalizar los colores de la grfica: cols
Al igual que en otras grficas de Openair, el comando cols permite personalizar los colores de representacin del parmetro o contaminante, ya sea utilizando cualquiera de los paquetes de colores predeterminados de Openair, o los colores
que el usuario considere ms adecuados.
En caso de utilizar el paquete predeterminado greyscale, no slo se afectar a la escala de colores de representacin
del parmetro o contaminante, sino que se transformar toda la grfica a escala de grises, con inclusin del plano de fondo de Google.
7-. Cambiar los lmites de la escala de colores: limits
Por defecto la escala de colores para representar el parmetro o contaminante en el plano se adecua automticamente al
rango de valores a representar. Sin embargo, el usuario podra precisar modificar dicho rango para adaptarlo a sus propias necesidades (como por ejemplo referir el mismo a valores lmite), en cuyo caso puede utilizar el comando limits para
modificar los limites inferior y superior de dicho rango de representacin.
8-. Modificar el smbolo a utilizar para representar los puntos: pch
En el fondo de su diseo, la funcin GoogleMapsPlot no deja de ser una grfica bivariable normal, similar a la grfica plot
vista para R en su apartado correspondiente. As, los puntos de la funcin se representan atendiendo a los cdigos ya
comentados en el apartado de grficas R correspondiente al comando pch. Por defecto, la funcin utilizar el smbolo equivalente a pch=20, pero podra utilizar cualquier otro que el usuario considerase ms conveniente.
Elaborado por Fernando Follos Pliego

106

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
9-. Tamao con que se representa el punto en la grfica: cex, cex.range
Si representamos en la grfica tan slo ubicaciones, el valor por defecto del tamao del punto es NULL y se establece en
funcin del rango de representacin geogrfica que se obtenga en la grfica. En todo caso, se puede formar a los puntos
a un tamao distinto, utilizando para ello el comando cex, al que se le podr asignar el tamao que el usuario estime ms
adecuado, mediante un nmero entero.
Si el punto a representar en la grfica busca a su vez representar el valor o concentracin de un parmetro del conjunto
de datos, la funcin GoogleMapsPlot vara por defecto su tamao y color en funcin de la concentracin o valor que adquiera el parmetro en cada caso. En este caso, el valor de cex es igual al valor de la concentracin, lo cual puede afectar
a la calidad de la representacin, especialmente en aquellos casos en los que la ubicacin de los puntos es muy prxima.
En estos casos, el usuario puede optar por anular la representacin del valor por tamaos, estableciendo un valor nico
con el comando cex, o escalar el valor de representacin del punto mediante el comando cex.range, al que se le asignar
el valor de escala que se quiera en funcin de las concentraciones a representar, como por ejemplo: cex.range=c(1,3).
10-. Eliminar la representacin de los ejes en la grfica: axes
Mediante el comando lgico axes es posible forzar a la grfica a que represente los Ejes X e Y, opcin por defecto, o
hacer que los elimine de la grfica, mediante el comando axes=FALSE.
11-. Incluir el mapa como un objeto o imagen rasterizada: map.raster
Por defecto la generacin del plano se realiza como una imagen rasterizada (imagen matricial o en mapa de bits), por ser
esta generacin la ms gil y la que mejor facilita la elaboracin de la grfica. En cualquier caso, puede ser necesario
indicarle a GoogleMapsPlot que no rasterice la imagen, siempre que nos est permitido a nivel de software, en cuyo caso
se deber utilizar el comando map.raster=FALSE.
12-. Modificar el tipo de mapa que se muestra en la grfica: maptype
Por defecto, la funcin GoogleMapsPlot utilizar el plano del terreno de que dispone Google como mapa de base en funcin de las coordenadas que se disponga. Sin embargo, la opcin de terreno terrain no es la nica disponible, y el usuario podra precisar del uso de otros planos como: los mapas de satlite o fotografa area satellite, muy tiles cuando la
representacin se va a hacer para redes de calidad del aire de ncleos urbanos, los mapas de carreteras o vas de trfico
roadmap o mobile, o un plano hbrido entre el de terreno y el de carreteras hybrid.
13-. Realizar un zoom al plano representado: zoom
En un punto anterior hemos visto cmo se puede actuar sobre las dimensiones del plano actuando sobre los lmites de las
coordenadas dispuestas por los ejes con el comando tpico de R xlim o ylim. Sin embargo, el paquete RgoogleMaps sobre
el que se basa la funcin GoogleMapsPlot de Openair, tambin permite modificar el tamao de la imagen sin actuar directamente sobre los ejes, sino sobre el propio plano, haciendo que con el comando zoom se pueda ampliar o reducir la imagen de una forma sencilla y rpida.
Por defecto la funcin aplicar el zoom que mejor se adapte a la representacin solicitada y a los mrgenes de coordenadas disponibles, tal y como podemos ver en el resumen de parmetros que sobre la consola arrojar la funcin una vez
ejecutada. Sin embargo, el usuario podr actuar para mejorar o adaptar estos parmetros mediante comandos como
zoom, center o size, que veremos en los siguientes puntos.
14-. Establecer el centro del plano: center
De forma automtica, uy en funcin de las coordenadas por puntos que le hayamos dado, la funcin GoogleMapsPlot
establece el centro de la imagen del plano para ubicarla dentro del cuadrado que sirve para representar los puntos de
coordenadas de la grfica. Sin embargo, el usuario podra requerir de dicha imagen est desplazada del centro del cuadrado, por lo que podr personalizar las coordenadas que sirven para centrar la imagen con el comando center, al que se
deber asignar tanto la latitud como la longitud, en este orden, tal y como marca el siguiente ejemplo: center=c(40.2,-4.5)
15-. Cambiar el tamao del plano descargado: size
En combinacin con otros comandos de la grfica ya vistos, el usuario puede cambiar el tamao en pixels del plano descargado a la grfica. Se debe recordar siempre que los valores disponer deben ser siempre iguales para el tamao marcado, tanto para x como para y, de forma que se correspondan con el cuadrado que representa el grfico.

Elaborado por Fernando Follos Pliego

107

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
16-. Cambiar el aspecto o proporcin de la grfica: aspect
Se puede cambiar el aspecto de una grfica modificando las proporciones con las que se representa. De esta forma, si
aspect=1 la proporcin de la grfica es la normal, mientras que si el valor es menor la grfica se ensancha, y si es mayor
se alarga. Esta funcin permite al usuario deformar la grfica para adaptarla a las necesidades futuras de representacin.
17-. Modificar el nivel de transparencia de la representacin: plot.transparent
El comando plot.transparent nos permite regular el nivel de transparencia con que se representa el punto geogrfico en la
grfica, pudiendo adoptar valores que vayan de plot.transparent=0, para hacer el punto invisible, a plot.transparent=1,
para hacer la representacin totalmente opaca.

> GoogleMapsPlot ( o3mes, latitude=lat, longitude=long, pollutant=o3, type=month, zoom=9, size=c(450,450), mapty
pe=mobile, axes=FALSE, strip=FALSE, cex.range=c(1,9), cols=c(green, yellow, orange, red), main=Evolucin de las concen
traciones mensuaeles de ozono en la Comunidad de MadridAo 2011, auto.text=FALSE, plot.transparent=0.7, layout=c(3,4))

Adems de las opciones de configuracin vistas hasta el momento, la funcin grfica GoogleMapsPlot permite el
uso de las opciones de configuracin clsica de R para grficas plot, tales como xlab, ylab, main, sub, etc. e incluso opciones de configuracin vistas en otras grficas como strip o layout, para influir sobre el modo de representacin de la grfica cuando se procede a su desagregacin con type, tal y como podemos ver en el ejemplo final.

Elaborado por Fernando Follos Pliego

108

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

INSTRUCCIONES PARA LA EVALUACIN DE MODELOS :


En calidad del aire es muy habitual que tanto organismos oficiales como entidades privadas utilicen modelos que
permiten establecer la calidad del aire en un sitio determinado a partir de un clculo matemtico complejo basado
en una serie de datos de partida como puedan ser focos de emisin, histrico disponible de datos, datos meteorolgicos, etc.
La modelizacin de la calidad del aire para la prediccin de niveles en inmisin puede deberse a la necesidad de:
a)
b)
c)

Evaluar la calidad del aire en zonas no controladas de forma automtica y que, en funcin de lo establecido
en la normativa aplicable, pueden ser evaluadas mediante este tipo de modelos.
Complementar las mediciones de control en continuo de determinadas zonas mediante modelos matemticos que establezcan la dispersin de la contaminacin en la zona.
Disponer de una previsin de los niveles de la calidad del aire en una zona determinada, con anterioridad a
su registro efectivo, de cara a procurar la adopcin de las medidas preventivas que corresponda.

En cualquier caso, el objetivo fundamental de cualquiera de estos modelos de calidad del aire es ofrecer un dato
de uno o varios parmetros contaminantes en un punto o zona determinada y una fecha en concreto, buscando en
todo momento que el dato calculado sea lo ms fiel posible al dato real o esperado para esa zona.
El resultado final de estos modelos es pues un conjunto de datos brutos, referidos a una serie de fechas determinadas, que de por s podran ser en cuanto a su estructura, formato y contenidos a los propios conjuntos de datos
procedentes del control en continuo, pudiendo incluso gestionarse y tratarse de idntica manera.
Sin embargo, estos datos son fruto de un modelo matemtico y, en muchas ocasiones, uno de los aspectos de
mayor inters y complejidad en materia de calidad del aire es la evaluacin de su efectividad, contrastando los
datos procedentes del modelizado con los datos reales que se obtengan mediante determinacin in situ.
La evaluacin de modelos no est todava estandarizada, y en muchas ocasiones la evaluacin realizada se limita
a un estudio cualitativo de los resultados obtenidos o, como mucho, a la realizacin de un estudio simple con estadsticos bsicos como el error cuadrtico medio, el error absoluto o el sesgo.
Por otro lado, la normativa actualmente vigente en esta materia tan slo exige que se cumplan una serie de incertidumbres mximas en cuanto a los distintos periodos de integracin de los datos, por lo que tampoco apunta mayor
informacin al respecto.
Sin embargo, una buena evaluacin de un modelo de calidad del aire debe venir acompaada siempre por un anlisis estadstico serio y riguroso de sus resultados, que permita medir la precisin de la simulacin, y que complemente el anlisis cualitativo realizado, garantizando as sus conclusiones y su reproducibilidad.
Openair pone a disposicin del tcnico una serie de herramientas de enorme utilidad para la realizacin del anlisis estadstico de los modelos y su evaluacin con datos reales, aun cuando dichos datos provengan de grandes
series histricas. Dichas herramientas permiten al tcnico simplificar al mximo el clculo estadstico por un lado,
reducindolo a una simple programacin de una instruccin, y por otro a disponer de funciones grficas especficas que faciliten la visualizacin e interpretacin de los resultados.
Tan slo se requerir un tratamiento previo de los datos para ubicar en un nico conjunto de datos los datos correspondiente al modelo y a los datos reales utilizados para contrastarlo. A partir de ah, Openair ofrece instrucciones de gran utilidad como la siguiente:
Elaborado por Fernando Follos Pliego

109

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Clculo de las variables estadsticas ms comunes en evaluacin de modelos: modStats


Mediante una nica instruccin Openair permite al usuario realizar el clculo de los estadsticos ms habituales en la evaluacin
de un modelo predictivo, atendiendo a los siguientes comandos bsicos de configuracin.
1-. Introducir el nombre del campo que contiene los datos del modelo: mod
Mediante el comando mod se indica a la instruccin el campo de nuestro conjunto de datos que dispone de los datos del
modelo.
2-. Introducir el nombre del campo que contiene los datos reales: obs
Mediante el comando obs se introduce el nombre del campo de nuestro conjunto de datos que contiene los datos observados , o datos reales, frente a los que se quiere comparar los datos del campo correspondiente al modelo.
3-. Desagregar los datos estadsticos calculados: type
El comando type nos permite desagregar el conjunto de datos disponible en funcin de distintos periodos temporales de
inters, como season, weekday, year, etc.
El comando type tambin se puede asignar a cualquier otro campo de nuestro conjunto de datos, en cuyo caso la funcin
modStats elaborar los estadsticos en funcin de los contenidos de dicho campo.
Esta ltima propiedad, por ejemplo, resulta de enorme inters para la evaluacin de diversos modelos, ya que si caracterizamos previamente un campo de nuestro conjunto de datos (con una funcin del tipo splitByDate), clasificando los datos
del campo del modelo (mod) en funcin de los distintos modelos utilizados, o de las configuraciones adoptadas para un
mismo modelo a lo largo del tiempo, podemos calcular las estadsticas para cada modelo.
Por otro lado, si utilizamos el comando type, y dividimos los clculos desagregando los datos del modelo, es posible indicarle a la funcin que elabore un ranking de los mejores modelos en funcin de su ndice de Ajuste (IOA) utilizado como
indicador, lo que puede ser de gran utilidad si el nmero de modelos o configuraciones es muy elevado. Este ranking se
consigue dando al comando rank.name el mismo valor que al comando type.
Ej. modStats ( datosconmod, mod=o3mod, obs=o3, type=modelo, rank.name=modelo) , va a seleccionar los datos de ozono
del modelo (o3mod) , para calcular los estadsticos obtenidos frente a los datos de ozono reales (o3), teniendo en cuenta que el modelo
corri en el tiempo utilizando tres configuraciones bsicas distintas, segn queda caracterizado en el campo (modelo) de nuestro conjun
to de datos. El resultado en nuestra consola de R nos ofrece los datos estadsticos calculados para estas tres configuraciones, ordenando
los modelos del mejor (modelo 1) al peor (modelo 2), tal y como se puede ver a continuacin.

Tal y como podemos comprobar por el ejemplo adjunto, al ejecutar la funcin modStats , junto con los comandos bsicos descritos , R devuelve a la consola los siguientes resultados estadsticos:

n, o nmero total de pares de datos completos (modeloreal) de que consta la muestra utilizada para el clculo de los
estadsticos.
FAC2, prediccin fraccionada, o factor de predicciones dentro de un factor de dos de las observaciones.
MB, el sesgo medio, nos proporciona informacin til sobre la tendencia del modelo a subestimar o sobreestimar el valor
de un parmetro sobre el valor real, cuantificando as el error sistemtico del modelo. Recomendaciones de la US.EPA
establecen un sesgo recomendado medio (BIAS) de entre 5 y 15%.
RMSE, o error cuadrtico medio, que nos da la medida del promedio de las diferencias entre los valores pronosticados y
los observados, aportando informacin sobre la precisin del modelo.

Elaborado por Fernando Follos Pliego

110

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

NMB, el sesgo medio normalizado, que se utiliza para tener en cuenta el peso del error sistemtico encontrado frente al
valor de la variable de medida.
MGE, o error relativo normalizado, que es el cociente entre el error absoluto y el valor exacto de cada medida en su media
aritmtica, permitiendo as comprobar la existencia y entidad de errores aleatorios.
NMGE, o error relativo normalizado, que se utiliza para comprobar el pesos del error aleatorio frente a la variable de medicin. Recomendaciones de la US.EPA establecen un error relativo de entre el 30 y el 35% con un umbral de 60 ppb.
r, o coeficiente de correlacin de Pearson, que es un ndice que mide la relacin lineal existente entre dos variables, dando una idea del grado de relacin existente entre ambas, de forma que r=1 implica que existe una relacin directa perfecta, y r=0 que no se puede comprobar que exista relacin lineal entre las variables.
IOA, conocido como ndice de ajuste o concordancia, complementa la informacin aportada por el resto de estadsticos, al
informar con un ndice general sobre el comportamiento del modelo al compararlo con datos reales.

La herramienta modStats se encuentra actualmente en fase de desarrollo, por lo que probablemente en un futuro incorpore nuevos estadsticos de relevancia para la evaluacin de modelos que en la actualidad quedan fuera de la herramienta.

FUNCIN de CUANTILES CONDICIONALES

DIAGRAMA de TAYLOR

Por otro lado, adems de las funciones matemticas y estadsticas vistas hasta el momento, Openair dispone de
tres funciones grficas adicionales que permiten analizar y evaluar grficamente los modelos, proporcionando as
una herramienta fundamental de apoyo para el trabajo de evaluacin de modelos de prediccin de la calidad del
aire. Las grficas proporcionadas por Openair se basan en el Diagrama de Taylor y en la funcin de cuantiles condicionales, derivada de la Grfica Q-Q, tal y como veremos a continuacin con ms detalle.

Elaborado por Fernando Follos Pliego

111

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

El Diagrama de Taylor:

TaylorDiagram

Una de las herramientas de mayor utilidad para evaluar el rendimiento de un modelo es el conocido como Diagrama de Taylor. Este diagrama utiliza la ley de cosenos para representar en una sola grfica cmo varan simultneamente los tres estadsticos ms representativos del rendimiento de un modelo, como son:
a)

El error cuadrtico medio, que matemticamente es la raz cuadrada de la media aritmtica de los cuadrados de los errores calculados, y que permite obtener una idea de la media del error detectado para el modelo, en la unidad de medida original, y sin tener en cuenta los efecto del signo del error, lo cual resulta muy
til para comprobar la precisin del modelo.

b)

La desviacin estndar, que permite comprobar cul es la variabilidad existente en ambas muestras de datos, pudiendo ver adems si dicha variabilidad se conserva o vara en el modelo respecto a lo observado
para los datos reales.

c)

El Coeficiente de Correlacin de Pearson, r, que muestra cmo de estrecha es la relacin lineal existente
entre los pares de datos formados por el modelo y las determinaciones reales.

Grficamente los datos reales y del modelo, junto con los datos estadsticos comentados, se representan en el
Diagrama de Taylor segn se muestra en el siguiente ejemplo explicativo.
a)

En la parte inferior de la grfica se representa el valor real o valor observado, correspondindose con el valor cero del error cuadrtico medio, la unidad para el coeficiente de correlacin de Pearson, y la desviacin
estndar que se corresponda al conjunto de datos reales, que en nuestro ejemplo ser de 38,6, que es el
valor que finalmente adquiere el punto de datos observados en el Eje X.

b)

Los valores del modelo o modelos evaluados se representan con puntos de distintos colores, dentro del Diagrama de Taylor, de forma que a ms prximo que se encuentre el punto del modelo a la ubicacin del punto de observacin, dicho modelo presenta una mayor exactitud, precisin y reproducibilidad con respecto a
los datos observados.
A efectos de interpretacin, se debe tener en cuenta que el punto que representa los datos del modelo se
ubica en la grfica atendiendo a los estadsticos calculados, tal y como se detalla en el ejemplo grfico explicativo:

El Error Cuadrtico Medio, que se representa como crculos concntricos elaborados a partir del punto de observacin (valor real), y que se corresponde con la distancia radial desde el punto de observacin hasta el punto del modelo.

La Desviacin Estndar de los datos del modelo, que se corresponde con la distancia radial desde el
origen de la grfica (cruce de los ejes x e y) hasta el punto del modelo (que en nuestro ejemplo sera
de 35,26).

El Coeficiente de Correlacin de Pearson, r, que se representa con un escalado semicircular, frente al


cual se ubica el punto del modelo, que adopta como punto de origen radial el origen de la grfica. De
esta forma, cuanto ms cercano se encuentre el punto del modelo al eje X ms fuerte ser la correlacin existente entre los datos.

Elaborado por Fernando Follos Pliego

112

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

Ej. TaylorDiagram ( datoscontmod, obs=o3, mod=o3mod) , donde vamos a confrontar los datos de ozono que arroja un modelo
frente a los que disponemos de nuestra estacin de control en continuo. Sobre la grfica resultante se ha aadido en esta ocasin un
esquema que muestra la interpretacin de los estadsticos vista anteriormente.

La Funcin TaylorDiagram dispone, al igual que otras funciones grficas de Openair, de comandos adicionales
que incrementan su flexibilidad y aaden utilidades que pueden resultar de inters para el estudio realizado del
modelo.
Variaciones sobre la funcin:
1-. Campo de datos que se corresponde con los datos reales: obs
Una vez indicado el conjunto de datos a la funcin, es necesario sealar a la misma qu campo de dicho conjunto dispone
de los datos reales u observados, frente a los cuales se desea contrastar los datos del modelo. Esto se consigue asignando el nombre del campo al comando obs.
2-. Campo de datos que se corresponde con los datos del modelo: mod
Frente a los datos reales, fijados con el comando anterior, se deben disponer los datos correspondientes al modelo que se
hayan registrado, indicando al comando mod el campo del conjunto donde se encuentran dichos datos.
Destacar en este punto, que el comando mod admite la inclusin de hasta dos campos distintos, representando el resultado mediante un flecha que va del primer campo al segundo. Este aspecto es de gran utilidad cuando queremos conocer
cmo corre un modelo en comparacin con otro, asumiendo los mismos datos de entrada y criterios de funcionamiento, o
las diferencias existentes en aquellos casos en los que un mismo modelo genera varias predicciones en funcin de determinados criterios de revisin y/o correccin.
Ej. TaylorDiagram ( datoscontmod, obs=no2, mod=c
(no2mod, no2cor)) , donde representamos en la
grfica los resultados brutos que arroja el modelo
para la prediccin del NO2 (no2mod), presentados
como origen de la flecha, frente a los resultados una
vez revisados y corregidos (no2cor), presentados como
la punta de flecha, de forma que podemos ver cmo el
resultado del modelo una vez corregido mejora consi
derablemente en sus estadsticos.

Elaborado por Fernando Follos Pliego

113

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

3-. Representar los resultados obtenidos para distintos modelos: group


El trabajo con modelos predictivos de la calidad del aire no es, por lo general, un trabajo que se consiga desarrollar en un
solo da, para un nico modelo, o seleccionando una configuracin acertada del mismo a la primera, por lo que es ms
que probable que finalmente dispongamos de datos de prediccin de varios modelos en distintos periodos temporales, o
del mismo modelo, que se habra ejecutado con distintas configuraciones o datos de entrada.
La funcin TaylorDiagram permite agrupar todos estos modelos dentro de la misma representacin grfica, asignando a
cada uno de ellos un punto con distinto color, de forma que se puede evaluar rpidamente cul de los modelos presenta
una mejor combinacin de sus variables estadsticas.
La agrupacin de los modelos requiere, sin embargo, que un campo del conjunto de datos identifique el modelo al que
pertenecen los distintos datos del campo del modelo, tal y como ya vimos para la instruccin modStats. Esto requerir
seguramente del pretratamiento de nuestro conjunto de datos para asignar a cada periodo su modelo. Cabe recordar en
este sentido que, herramientas de Openair como splitByDate, especficamente diseadas para este tipo de trabajos, nos
permiten realizarlo de una forma cmoda y sencilla.
4-. Dividir la grfica desagregando los datos: type
Como en otras grficas de Openair, el comando type puede dividir la grfica desagregando los datos del modelo o modelos a evaluar en funcin de distintos periodos temporales de inters como weekday, weekend, season, etc, o incluso
en funcin de otros campos del propio conjunto de datos.
El comando type puede servir tambin para mostrar el resultado de diversos modelos en grficas separadas, lo que se
consigue al seleccionar el campo descriptivo del modelo (el mismo que se seleccionaba con el comando group).
5-. Normalizar los estadsticos calculados: normalise
En ocasiones, si queremos comparar grficas de distintos parmetros contaminantes para el mismo o distintos modelos,
es preferible que los estadsticos que vienen expresados en unidades de concentracin (como son la desviacin estndar
y el error cuadrtico medio) queden normalizados y sean comparables. En el caso del Diagrama de Taylor la normalizacin se produce dividiendo el error cuadrtico medio y la desviacin estndar por la desviacin estndar de los datos reales. Esto hace que el punto del dato observado (datos reales) se desplace a la unidad dentro del Eje X, y el resto de
puntos de los modelos representados queden referidos a dicha unidad.
6-. Cambiar los colores de representacin de la grfica: cols, rms.col, cor.col
La funcin TaylorDiagram dispone de diversas combinaciones predeterminadas para colorear la representacin de los
estadsticos de los modelos mediante el comando cols, entre las que podemos destacar Accent, Dark2, Paried,
Pastel1, Pastel2, Set1, Set2, y Set3. En todo caso, el usuario podr modificar los colores de la representacin
grfica, para personalizarlos a su gusto, tal y como ya se ha visto en anteriores ocasiones, disponiendo los colores que
considere ms adecuados.
Adems, se puede personalizar tambin el color utilizado para la representacin de los crculos concntricos y el texto del
error cuadrtico medio, mediante el comando rms.col, o el color utilizado para representar la escala de correlacin y su
texto, con el comando cor.col.
7-. Cambiar el grosor de las flechas: arrow.lwd
Cuando representamos dos campos de datos con el comando mod (utilizado para seleccionar los datos del modelo) tal y
como hemos visto anteriormente, la grfica adopta la forma de flechas para representar el campo de origen y el campo
final.
Con el comando arrow.lwd es posible personalizar el grosor de la flecha representada, asignndole el nmero correspondiente. Por defecto la grfica presenta un grosor de arrow.lwd=3.

Elaborado por Fernando Follos Pliego

114

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

8-. Dibujar encabezados a las grficas divididas: strip


Cuando dividimos la grfica TaylorDiagram con el comando type, automticamente se presenta una banda superior con la
que se identificada cada una de las grficas elaboradas en funcin del parmetro seleccionado para type. Con el comando lgico strip se permite al usuario desactivar este encabezado, strip=FALSE, que viene activado por defecto.

La Funcin TaylorDiagram permite adems las opciones clsicas de configuracin de la leyenda, mediante el comando key y sus distintas variantes, as como las clsicas opciones de configuracin de los textos en los ejes xlab
o ylab, entre otras, tal y como se puede observar a continuacin en el ejemplo grfico final.

> TaylorDiagram (datoscontmod, obs=no2, mod=c(no2, no2cor), group=modelo, cols=Dark2, rms.col=orange,


cor.col=brown, xlab=Desviacin estandar, ylab=Desviacin estandar, main=Evaluacin de tres modelos de NO2 una vez
optimizados, key.tittle=Relacin de modelos)

Elaborado por Fernando Follos Pliego

115

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Funcin de Cuantiles Condicionales:

conditionalQuantile

La funcin de Cuantiles Condicionales utilizada por Openair para la evaluacin de modelos de calidad del aire,
deriva de la funcin grfica Q-Q (del ingls Quantile-Quantile), muy utilizada en estadstica tambin para el diagnstico de las diferencias entre una poblacin de datos y otra.
No obstante, mientras que la grfica Q-Q compara la distribucin de la probabilidad de dos poblaciones o conjuntos de datos, comprobando si la distribucin de las muestras es la misma o vara para alguno de sus cuantiles,
salindose de la lnea recta, la funcin de cuantiles condicionales no considera de forma separada ambas poblaciones de datos, sino que analiza los resultados reales frente a los intervalos de prediccin, vinculando unos con
otros.
De esta forma, la funcin de Cuantiles Condicionales ser capaz de encontrar discrepancias en conjuntos de datos
que para la funcin grfica Q-Q son indetectables, por no afectar a la distribucin de datos (como por ejemplo
aquellos casos en los que exista un desplazamiento en las horas, y un conjunto de datos se encuentre en GMT,
mientras que el otro se encuentra en horario local). As, con la funcin conditionalQuantile Openair se asegura que
la evaluacin del modelo sea completa y adecuada.
El modo de funcionamiento detallado de la funcin conditionalQuantile es muy sencillo:
En primer lugar, divide los datos de la prediccin en intervalos fijos abarcando todo el rango de datos de dicha prediccin, como si elaborase un histograma (que de hecho es lo que aparece en la grfica final para ambos conjuntos de datos).
Para cada uno de los intervalos elaborados para los datos de prediccin, la funcin busca la correspondencia entre los valores reales, o dicho de otra forma, busca el valor real que se corresponde con cada uno de los valores
predichos que forman el intervalo que corresponda.
Finalmente, para los valores reales identificados en cada intervalo calcula la mediana y los datos que se encuentran entre los percentiles 25/75 y 10/90, para luego representarlos en la grfica, frente a una lnea recta que representar el ajuste perfecto del modelo.
Para el desarrollo de la funcin se dispone de distintos comandos de configuracin, segn vemos a continuacin.
Variaciones sobre la funcin:
1-. Campo de datos que se corresponde con los datos reales: obs
Una vez indicado el conjunto de datos a la funcin, es necesario sealar a la misma qu campo de dicho conjunto dispone
de los datos reales u observados, frente a los cuales se desea contrastar los datos del modelo. Esto se consigue asignando el nombre del campo al comando obs.
2-. Campo de datos que se corresponde con los datos del modelo: mod
Frente a los datos reales, fijados con el comando anterior, se deben disponer los datos correspondientes al modelo que se
hayan registrado, indicando al comando mod el campo del conjunto donde se encuentran dichos datos. En esta ocasin,
al contrario de lo que ocurra con la funcin TaylorDiagram, el comando mod no admitir la inclusin de ms de un campo,
por lo que deberemos seleccionar aquellos campos correspondientes al modelo que queremos evaluar finalmente.
3-. Dividir la grfica desagregando los datos: type
Como en casi todas las instrucciones grficas de Openair, la instruccin conditionalQuantile dispone del comando type
para desagregar los datos, elaborar las estadsticas correspondientes y representarlos en distintas grficas. Mediante el
comando type se puede dividir la grfica en funcin de cualquiera de los parmetros contemplados por la funcin cutData.
Elaborado por Fernando Follos Pliego

116

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
Tambin es posible, como hemos visto en mltiples ocasiones, asignarle al comando type cualquier otro campo del conjunto de datos, lo que puede resultar de enorme utilidad si, por ejemplo, queremos observar en distintas grficas el resultados obtenido para diversos modelos.
4-. Nmero de intervalos a utilizar: bins
La funcin permite personalizar el nmero de intervalos a utilizar para los valores predichos, de forma que se acte sobre
el propio clculo de los cuantiles, incrementando y/o disminuyendo la precisin en el clculo de la funcin. Al comando
bins habr que indicarle as el nmero final de intervalos deseados.
5-. Nmero mnimo de datos para calcular los percentiles: min.bin
La grfica calcula siempre la mediana de los datos observados en cada uno de los intervalos. Sin embargo, dicho clculo
puede carecer de representatividad para los valores de los percentiles 25/75 y 10/90 si el nmero de datos no es suficiente, motivo por el que habitualmente podemos observar cmo en los ltimos intervalos del diagrama (donde existe un menor nmero de datos) es habitual no encontrar representados dichos percentiles.
El usuario podr personalizar el nmero mnimo de datos que considera representativo, en primer lugar para la estimacin
del percentil 25/75, y en segundo lugar para el percentil 10/90, para lo cual deber asignar dos nmeros al comando
min.bin, segn se muestra a continuacin: min.bin=c(20,20).
6-. Personalizar los colores de la grfica: col
La funcin grfica conditionalQuantile no tiene previstos en la actualidad ningn paquete predeterminado de configuracin
de colores, por lo que de querer personalizarlos, el usuario deber introducir manualmente, mediante el comando col,
hasta un mnimo de cinco colores a utilizar en la grfica, en funcin de la combinacin ms deseada.

La Funcin conditionalQuantile permite, adems de lo visto hasta el momento, personalizar la leyenda de la grfica
interviniendo en su configuracin mediante los comandos key.columns y key.position, o incluir y modificar los ttulos de sus ejes mediante los comandos xlab e ylab, tal y como se puede ver en el siguiente ejemplo grfico final.

> conditionalQuantile ( datoscontmod, mod=o3mod, obs=o3, type=modelo, bins=40, xlab=valor de la prediccin,


ylab=Valor real, key.columns=4, main=Evaluacin de las configuraciones ejecutadas para el Modelo de O3)

Elaborado por Fernando Follos Pliego

117

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.

La Funcin de Cuantiles Condicionales Ampliados:

conditionalEval

Esta funcin fue introducida en la ltima versin del paquete Openair evaluada por el autor de este manual, aproximadamente en mayo de 2012, y permite completar la evaluacin de modelos realizada hasta el momento por las
funciones vistas en este apartado.
La funcin conditionalEval viene de hecho a mejorar la funcin de Cuantiles Condicionales al considerar cmo
pueden variar otros parmetros en los mismos intervalos, lo cual puede ser muy til a la hora de evaluar la intervencin de terceros parmetros en la prediccin realizada por un modelo, permitiendo as determinar las razones
que llevan a que un modelo sea mejor o peor en determinadas situaciones.
As, el funcionamiento de la funcin conditionalEval ser igual que en el caso de la funcin conditionalQuantile,
salvo que en este caso se adjuntar una grfica adicional, utilizada para la evaluacin del parmetro o parmetros
adicionales proporcionados por el usuario. De hecho, el quid de la funcin conditionalEval est realmente en esta
grfica adicional y en la forma en la que esta se puede representar en funcin del valor que el usuario otorgue al
comando statistic, tal y como podremos ver ms adelante.
Para el desarrollo de la funcin se dispone de distintos comandos de configuracin, segn vemos a continuacin.
Variaciones sobre la funcin:
1-. Campo de datos que se corresponde con los datos reales: obs
Una vez indicado el conjunto de datos a la funcin, es necesario sealar a la misma qu campo de dicho conjunto dispone
de los datos reales u observados, frente a los cuales se desea contrastar los datos del modelo. Esto se consigue asignando el nombre del campo al comando obs.
2-. Campo de datos que se corresponde con los datos del modelo: mod
Frente a los datos reales, fijados con el comando anterior, se deben disponer los datos correspondientes al modelo que se
hayan registrado, indicando al comando mod el campo del conjunto donde se encuentran dichos datos, de la misma forma
que suceda en conditionalQuantile.
3-. Otros parmetros adicionales observados: var.obs
Otra serie de variables observadas para un parmetro adicional que se desee contrastar con el parmetro principal y para
las cuales se calcularn los estadsticos que el usuario demande con el comando statistic que veremos ms adelante. En
este caso, adems, el usuario podr seleccionar varios parmetros a utilizar con la funcin conditionalEval.
4-. Otras variables correspondientes al modelo: var.mod
Frente al parmetro o parmetros observados, que el usuario haya establecido en el comando var.obs, se debern contraponer el parmetro o parmetros que se correspondan con el modelo, adjuntndolos al comando var.mod.
5-. Dividir la grfica desagregando los datos: type
Como en casi todas las instrucciones grficas de Openair, la instruccin conditionalQuantile dispone del comando type
para desagregar los datos, elaborar las estadsticas correspondientes y representarlos en distintas grficas. Mediante el
comando type se puede dividir la grfica en funcin de cualquiera de los parmetros contemplados por la funcin cutData.
6-. Nmero de intervalos a utilizar: bins
La funcin permite personalizar el nmero de intervalos a utilizar para los valores predichos, de forma que se acte sobre
el propio clculo de los cuantiles, incrementando y/o disminuyendo la precisin en el clculo de la funcin. Al comando
bins habr que indicarle as el nmero final de intervalos deseados.

Elaborado por Fernando Follos Pliego

118

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
7-. Estadstica a graficar en la grfica adicional que acompaa a la de cuantiles condicionales: statistic
Tal y como se ha comentado antes, el comando statistic es la clave en el desarrollo de esta funcin grfica, proporcionando gran parte del valor aadido de la misma. Este comando establece la forma en la que se va a representar la grfica
adicional de forma que se pueden suceder dos casusticas distintas:
a)

Que proporcionemos al comando statistics como variable cualquiera de los parmetros estadsticos que contempla la funcin aqStats vista anteriormente en este captulo, tales como el sesgo medio MB, el error cuadrtico
medio RMSE, etc. En este caso la funcin representar en la grfica adicional la evolucin del estadstico seleccionado para el dato observado adicional frente al dato del modelo adicional, ambos proporcionados por el usuario
mediante los comandos var.obs y var.mod.
a)El resultado obtenido se mostrar como una grfica para el parmetro adicional seleccionado por el usuario, tal
y como se muestra en el siguiente ejemplo para el sesgo medio MB y el NO2. Si los parmetros adicionales
seleccionados son varios el resultado se mostrar en la misma grfica, tal y como se muestra en el mismo ejemplo
para el NO2 y la radiacin solar, lo que es importante tener en cuenta dado que ambos parmetros compartirn
escala.

b)

Que proporcionemos al comando statistics una variable de corte de datos, como las proporcionadas al comando
type o a la instruccin cutData vistas hasta ahora en multitud de ocasiones, pudiendo ser una variable de temporal
de corte, tipo season, o un parmetro del propio conjunto de datos. Al hacerlo as la grfica adicional representar, para cada intervalo del modelo, la proporcin de las predicciones que se corresponden con la variable marcada
por el comando statistics, quedando fuera de la representacin, eso s, las variables adicionales seleccionadas por
var.obs y var.mod.
Por ejemplo, utilizar una variable tipo season para determinar la distribucin de los valores del ozono, tal y como
se muestra en el siguiente ejemplo, representar para cada intervalo del modelo de prediccin de ozono (valores
del eje X) la proporcin de las predicciones que se realizan en primavera, verano, otoo o invierno. Por lgica, tal
y como podemos ver en el ejemplo, las predicciones de valores ms altos se corresponden con los periodos de
mayor radiacin solar (verano y otoo) expresado en tanto por 1, lo cual puede resultar muy til para comprobar la
fiabilidad en la prediccin del modelo en distintos periodos, al contrastar la distribucin de las predicciones frente a
la evolucin del grfico de cuantiles condicionales.

Elaborado por Fernando Follos Pliego

119

Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
8-. Personalizar los colores de la grfica: col
La funcin grfica conditionalEval, al igual que su original conditionalQuantile, no tiene previstos en la actualidad ningn
paquete predeterminado de configuracin de colores, por lo que de querer personalizarlos, el usuario deber introducir
manualmente, mediante el comando col, hasta un mnimo de cinco colores a utilizar en la grfica, en funcin de la combinacin ms deseada.
Sin embargo, la funcin conditionalEval permite asignar colores a la grfica adicional mediante el comando col.var, al que
le podremos indicar los colores que se requieren para representar las lneas en la grfica adjunta.
9-. Personalizar los nombres de las variables adicionales introducidas: var.names
Se puede indicar a la funcin los nombres que deseamos que se utilicen para las variables adicionales utilizadas, debiendo indicar al comando var.names los nombres que se desean para la variable observada y la variable correspondiente al
modelo, sucesivamente.

> conditionalEval ( datoscontmod, mod=o3mod, obs=o3obs, var.obs=no2obs, var.mod=no2mod , bins=30,


statistic=RMSE)

Elaborado por Fernando Follos Pliego

120

121