Documentos de Académico
Documentos de Profesional
Documentos de Cultura
R Openair Aplicado A Calidad Del Aire
R Openair Aplicado A Calidad Del Aire
LENGUAJE
R APLICADO AL
ANLISIS DE DATOS DE
CALIDAD DEL AIRE
MANUAL BSICO
para el tratamiento
de datos de
lenguaje estadstico R
y paquetes adicionales como
OPENAIR
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:
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
pgina 6
pgina 7
pgina 10
pgina 10
pgina 11
pgina 13
pgina 13
pgina 14
pgina 15
pgina 16
pgina 17
pgina 18
pgina 19
pgina 20
pgina 20
pgina 20
pgina 21
pgina 21
pgina 22
pgina 23
pgina 24
pgina 25
pgina 26
pgina 28
pgina 30
pgina 31
pgina 36
pgina 40
pgina 43
pgina 45
pgina 47
pgina 50
pgina 51
pgina 53
pgina 56
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
pgina 64
pgina 66
pgina 71
pgina 74
pgina 76
pgina 80
pgina 85
pgina 87
pgina 92
pgina 98
pgina 101
pgina 104
pgina 109
pgina 110
pgina 112
pgina 116
pgina 118
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.
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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:
Los
distintos
comandos
LA PRCTICA
HACE AL EXPERTO, por lo que
En todo caso,
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 de uso de R y Openair.
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:
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.
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
10
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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:
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
17
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
18
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
19
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
Suma
<
Resta
<=
>=
Multiplicacin
==
Exactamente igual a
!=
Distinto a
Divisin
X|Y
XoY
^ o **
Operadores Lgicos en R
Menor que
>
X&Y
Mayor que
XeY
Exponente
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.
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.
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.
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.
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.
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:
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.
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.
25
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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:
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.
27
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
29
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
31
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
32
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
34
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
> 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.
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.
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.
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)
b)
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.
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.
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.
40
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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:
42
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
43
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
44
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
45
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
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.
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.
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.
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")
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
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
51
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
52
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
54
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
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.
57
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
58
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
59
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
61
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
62
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
> 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)
63
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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")
65
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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)
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.
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.
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)).
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.
71
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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" )
73
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
75
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
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:
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).
79
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
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.
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.
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.
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.
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.
84
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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)
b)
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.
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
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.
86
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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:
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.
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).
89
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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))
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.
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.
95
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
97
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
99
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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))
100
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
102
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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)
103
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
108
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
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.
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.
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).
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.
113
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
114
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
115
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
117
Lenguaje R aplicado al anlisis de datos de Calidad del Aire Manual de uso de R y Openair.
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.
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.
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.
120
121