Ventajas del uso de R en cuencas hidrográficas
Ventajas del uso de R en cuencas hidrográficas
INTRODUCCION
Varios idiomas de código abierto permiten acceder a una amplia gama de procedimientos
analíticos requerida en el análisis de cuencas hidrográficas dentro de una sola plataforma, que
puede agilizar el flujo de trabajo para proyectos complejos y, por lo tanto, proporcionan ventajas
de tiempo y de costo en comparación con los enfoques que requieren datos para se transfieran
entre diferentes aplicaciones informáticas. Los analistas de datos parecen favorecer actualmente
la Lenguas R, Python y Julia. Aunque los autores abogan por el uso de la R, se reconoce que
Python, Julia y otros idiomas de código abierto pueden ser alternativas viables y tienen claras
ventajas sobre R para propósitos específicos.
Por ejemplo, Python tiene una sintaxis más fácil de aprender que la R, y muchos lo consideran
superior para el desarrollo de aplicaciones y especialmente para operaciones a nivel de servidor
(DataCamp Team 2016).
Julia también tiene una sintaxis más simple que la R, y se destaca por su velocidad de
procesamiento, que puede rivalizar con la de Fortran y C en algunos puntos de referencia (Julia
Language, s.d.). La fuerza de R se deriva de sus ricas capacidades en el análisis estadístico y la
visualización de datos, especialmente para las series temporales y los datos geoespaciales con los
que trabajan regularmente los analistas de cuencas hidrográficas.
El autor principal y sus estudiantes de investigación han descubierto que la R, junto con el paquete
de SIG de código abierto de la SAGA, proporciona toda la funcionalidad necesaria para casi todas
sus necesidades de investigación relacionadas con las cuencas hidrográficas.
Hutton y otros (2016) hicieron un llamado a la comunidad hidrológica para que se mueva hacia
flujos de trabajo integrado y reproducible a través del uso de código reutilizable para aumentar la
credibilidad e integridad de los resultados de la investigación. El uso de un lenguaje de
programación de código abierto, como R, que permite la integración de un flujo de trabajo
completo, desde la compilación y el procesamiento de datos hasta el análisis o la simulación, y
luego a la presentación de informes- puede desempeñar un papel fundamental en este proceso.
INFORMACIÓN DE FONDO SOBRE R
R fue desarrollado por Robert Gentleman y Ross Ihaka de la Universidad de Auckland. Se basó en
el lenguaje S desarrollado por John Chambers en los Laboratorios Bell, que formó la base del
paquete S-PLUS desarrollado comercialmente. Gran parte del código escrito bajo la S funcionará
sin cambios en la R.
R es un proyecto de Gnu's Not UNIX (GNU), y está disponible gratuitamente bajo la Licencia
Pública General de GNU. R es actualmente desarrollado y mantenido por el equipo central de
desarrollo de R. Para más información, consulte la página principal del proyecto R ([Link]
[Link]/).
Un punto fuerte de R es que se dispone de una plétora de paquetes contribuidos por el usuario
para proporcionar acceso a una rica variedad de funciones y tipos de datos para el procesamiento,
análisis y visualización de datos. Sin embargo, este punto fuerte también puede plantear posibles
escollos. Por ejemplo, en muchos casos, más de un paquete puede proporcionar funciones
similares, y no hay una autoridad clara para dar orientación sobre cuál es el paquete superior.
Además, no existe un proceso sistemático para verificar la exactitud y fiabilidad de los paquetes
aportados por el usuario. Incluso la base R tiene problemas conocidos, como se enumera en el
sitio web "R inferno".
El lenguaje R soporta la ejecución condicional (si las declaraciones), los bucles (para, repetir y
mientras las declaraciones) y las funciones. La sintaxis de R es algo parecido a la de C; por ejemplo,
utiliza llaves rizadas ("{" y "}") para indicar el comienzo y el final de un bloque de declaraciones.
Una limitación del uso de R como herramienta de programación de uso general es que es un
lenguaje interpretado y, por lo tanto, no se ejecutará tan rápidamente como un lenguaje
compilado como Fortran o C++. En particular, el código R que involucra bucles se ejecuta
lentamente.
En muchos casos, el uso de bucles puede evitarse aprovechando el código "vectorizado". Por
ejemplo, supongamos que un analista hace que se midan series temporales de flujo de corriente
en dos lugares a lo largo de una corriente y quiere calcular la contribución incremental a la
descarga entre los dos lugares. Un enfoque consistiría en "hacer un bucle" a través de todos los
intervalos de tiempo, calcular la diferencia en cada intervalo de tiempo y luego almacenarla en el
lugar apropiado en un vector, como en el siguiente fragmento de código:
for (i in 1:n) Qinc[i] <- Qds[i] – Qus[i]
donde "i" indexa el intervalo de tiempo, "n" es el número de intervalos de tiempo, "Qinc" es el
nombre del vector que contiene el incremento de descarga calculado, "Qds" y "Qus" son los
nombres de los vectores que contienen las series de descarga descendente y ascendente, y "<-" es
un operador de asignación. También puede utilizarse un signo igual ("=") para la asignación, pero
no es favorecido por la comunidad general de R por razones históricas. Una alternativa, mucho
más rápida, es codificar la operación de la siguiente manera:
Qinc <- Qds – Qus
donde la operación en el lado derecho se aplica en el sentido de los elementos dentro de los
vectores.
Muchos análisis implican lo que los científicos de datos llaman operaciones de "dividir-aplicar-
combinar" (Wickham 2011). Por ejemplo, un analista de cuencas hidrográficas puede tener datos
de precipitaciones diarias durante varios años en varias estaciones, y puede querer calcular
resúmenes anuales (por ejemplo, totales o máximos) para cada año de la estación. Un enfoque
consistiría en escribir un código que se "repitiera" cada año y luego cada estación, calculando el
valor del resumen dentro de cada iteración y almacenándolo en una variable. Un enfoque más
rápido, más elegante y más fácil de leer es utilizar las funciones agregadas() o una de las funciones
apply() dentro de la base R o una de las funciones desarrolladas más recientemente en los
paquetes plyr y dplyr contribuidos. Estas funciones aplican una función incorporada o definida por
el usuario a cada subconjunto definido dentro de un conjunto de datos, con la salida siendo un
objeto de datos que contiene los resultados.
En algunos casos, el uso de bucles es inevitable. Por ejemplo, cuando se calcula un balance de
humedad del suelo a través del tiempo, el cálculo en un paso de tiempo determinado implica la
humedad del suelo al final del paso de tiempo precedente, como en el código de ejemplo:
for (i in 2:n) SM[i] <- SM[i-1] + P[i] – ET[i] – D[i]
donde SM[i] es el contenido de humedad del suelo al final del intervalo de tiempo "i" y P[i], ET[i], y
D[i] son la precipitación, la evapotranspiración y el drenaje durante ese intervalo. En estos casos,
las opciones para acelerar el código R son utilizar el paquete compilador, que compila el código en
tiempo de ejecución, o utilizar el paquete en línea, que permite la inclusión de código escrito en C,
C++ o Fortran dentro del código R. El paquete foreach proporciona funciones para hacer bucles
que pueden ser más rápidas que las estándar para los bucles. Si se utiliza una computadora con
múltiples procesadores, foreach puede reducir considerablemente la ejecución en tiempo de
ejecución al admitir la ejecución en paralelo la ejecución de las declaraciones de for loop.
El paquete de estadísticas en la base R incluye una amplia gama de funciones incorporadas para
las estadísticas descriptivas e inferenciales. Para la estadística descriptiva, las funciones
comúnmente utilizadas incluyen media( ), sd( ) (desviación estándar), fivenum( ) (mínimo, bisagra
inferior, mediana, bisagra superior, máximo), y cuantiles( ) (para calcular los percentiles
especificados). El paquete de estadísticas también tiene un rico conjunto de funciones para la
modelización estadística. Por ejemplo, la función lm( ) puede ajustarse a un modelo lineal para una
variable de respuesta numérica basada en una o más variables predictoras, que pueden ser
numéricas, factoriales o una combinación. Así pues, lm( ) puede utilizarse para la regresión lineal
(simple y múltiple), el análisis de la varianza y la modelización lineal general. También hay
funciones que facilitan una modelización estadística más avanzada, como como regresión de
mínimos cuadrados no lineales mediante la función nls( ) y modelización lineal generalizada
mediante la función glm( ). Los modelos lineales generalizados pueden acomodar variables de
respuesta que normalmente no son distribuidas, e incluyen la regresión logística, en la que la
cantidad a predecir es una variable binaria, como la presencia/ausencia de una especie acuática.
El paquete de estadísticas también contiene funciones útiles para el análisis de series temporales.
El acf( ) y el pacf( ) pueden generar gráficos de autocorrelación y autocorrelación parcial para una
sola serie temporal, y la función ccf( ) genera funciones de correlación cruzada para un par de
series temporales. La función arima( ) permite modelar series temporales como procesos de media
móvil integrados autorregresivos. En Además de la modelización de una serie temporal
univariante, la función arima( ) puede acomodar variables regresivas, de modo que la función
puede ser utilizada para ajustar modelos de regresión que pueden abordar cuestiones como
residuos autocorrelacionados, que violan los supuestos que subyacen a la regresión de los
mínimos cuadrados ordinarios (eg, Guenther et al. 2014).
Además de los paquetes en la base R, una plétora de paquetes contribuidos por el usuario
contiene funciones para casi cualquier forma de análisis que se pueda imaginar. Por ejemplo, el
paquete rpart contiene funciones para ajustar la clasificación y los modelos de árbol de regresión.
Esta forma de modelo es útil cuando el fenómeno a predecir es una variable categórica y las
variables de predicción son numéricas. Los paquetes lme y nlme apoyan la aplicación de modelos
de efectos mixtos, que pueden acomodar la autocorrelación espacial y/o temporal en los residuos,
ambos de los cuales ocurren comúnmente en los conjuntos de datos ambientales.
Es importante que los usuarios sean conscientes de que muchas funciones estadísticas en R
devolverán resultados diferentes de los generados por un paquete estadístico como SAS. Por
ejemplo, cuando se utiliza la función lm() para el análisis de la varianza, R devuelve lo que se
denomina pruebas de tipo I o incrementales en lugar de las pruebas de tipo III o marginales, como
las que genera SAS. En particular, se obtendrán diferentes resultados usando lm() dependiendo
del orden en que los factores se enumeren en la especificación del modelo. Otro ejemplo es la
convención por la cual la función arima() devuelve la media estimada como la interceptar. Es
fundamental que, sin importar el paquete estadístico que se utilice, la responsabilidad recae en el
usuario para entender cómo el paquete realiza e informa de una prueba, y para asegurarse de que
los análisis son emprendidas e interpretadas correctamente para cada aplicación específica. Al
pasar a R desde otro paquete de software analítico, se recomienda realizar análisis paralelos en
ambos para asegurar la consistencia de los resultados.
Hay tres paquetes principales disponibles para la producción de gráficos dentro de R: el paquete
de gráficos por defecto (comúnmente llamado gráficos base), los gráficos en red y ggplot2. Todos
pueden generar gráficos estándar como histogramas, diagramas de dispersión y de contorno, así
como una amplia gama de gráficos más complejos, y todos permiten un alto nivel de
personalización. Sin embargo, los paquetes difieren fundamentalmente en sus enfoques
subyacentes.
El paquete de gráficos base aplica una estrategia tradicional de trazado con lápiz sobre papel, en la
que se utilizan comandos para dibujar conjuntos específicos de puntos, líneas, formas o texto en
lugares concretos dentro del trazado marco. Incluso para un solo panel de gráficos, a menudo se
requieren varias llamadas a funciones para crear un completo con leyendas, especialmente
cuando se trazan múltiples series de datos.
En los gráficos en red, se genera un gráfico utilizando una sola llamada de función, con toda la
personalización manejada por parámetros dentro de la llamada. Una característica poderosa es la
capacidad de generar gráficos de "condicionamiento" para explorar cómo varía entre
subconjuntos una relación entre dos variables o una distribución de frecuencias. Por ejemplo, se
podrían generar histogramas de las precipitaciones diarias o un gráfico de la temperatura del aire
frente a la elevación por mes del año.
R es probablemente más conocido por sus rutinas estadísticas y gráficas, pero también incluye una
amplia gama de funciones para el cómputo general y el análisis y la simulación numérica. En
particular, proporciona un amplio conjunto de funciones para aritmética, trigonometría,
logaritmos y distribuciones de probabilidad, y para álgebra matricial, como las inversiones
matriciales.
En la base R, varias funciones pueden leerse en datos de varios formatos. Para los datos
almacenados en archivos de texto, las funciones pertinentes son [Link]( ), [Link]( ) y
[Link]( ) (esta última para formatos de ancho fijo). El resultado de estas funciones es un objeto
rectangular llamado marco de datos, en el que cada variable es una columna y cada fila es un caso.
Dentro de una columna (variable), todos los valores deben ser del mismo tipo, ya sea numérico, de
carácter o de factor. Las variables numéricas incluyen tanto números enteros como números
reales; las variables de carácter son cadenas de caracteres (como el nombre del sitio de
muestreo); y los factores son variables categóricas, que pueden codificarse como numéricas (por
ejemplo, el número del sitio) o como un carácter (por ejemplo, el nombre del sitio). Los usuarios
deben tener presente que, a menos que se especifique lo contrario, toda columna en la que
alguna de las entradas sea no numérica se interpretará como una variable factorial cuando se
utilicen las funciones R de base para la lectura de los archivos. En algunos casos, esto puede crear
problemas si el usuario trata de tratarlo como un personaje. La solución es coaccionar la variable a
un carácter utilizando la función [Link]().
Los analistas de cuencas frecuentemente trabajan con series temporales. Al leer un conjunto de
datos, las fechas y las variables de fecha y hora pueden codificarse para su introducción de
diversas maneras. Una de ellas consiste en codificar cada parte (por ejemplo, el año, el mes, el día,
la hora, los minutos, los segundos) como una variable numérica separada, y luego crear una
variable fecha-hora de la Organización Internacional de Normalización (ISO) utilizando la función
ISOdatetime(). Alternativamente, se podría codificar una variable fecha-hora como una cadena de
caracteres como "2005-12-4 [Link]" y luego crear una variable fecha-hora ISO utilizando la
función strptime(). Además de las funciones de fecha y hora en la base R, el paquete de lubricación
proporciona un conjunto consistente de funciones para facilitar el manejo y la manipulación de las
variables de fecha y hora.
Las funciones están disponibles en la base R o en paquetes contribuidos por el usuario que
permiten leer los datos de un amplio número de formatos de archivo especializados, incluyendo
hojas de cálculo de Excel (como archivos CSV), forma de SIG archivos, archivos de paquetes
estadísticos (incluyendo SAS, SPSS y SYSTAT) y bases de datos relacionales. Por ejemplo, el
paquete RMySQL proporciona funciones que permiten a R conectarse y extraer datos de una base
de datos MySQL. El paquete XLconnect proporciona funciones para permitir a los usuarios leer y
escribir Hojas de cálculo de Microsoft Excel. R también soporta la entrada de datos desde archivos
NetCDF, lo que permite el acceso a conjuntos de datos atmosféricos a gran escala y en cuadrícula.
Además, R puede producir datos en varios formatos que corresponden a los formatos de archivo
de entrada utilizados por una serie de paquetes de software.
Los hidrólogos dependen en gran medida de los conjuntos de datos espaciales y los análisis de los
SIG, y R puede ser una parte importante de la de análisis espacial. Por ejemplo, el paquete sp
proporciona clases de datos y métodos para su manejo, procesamiento y visualización de datos
espaciales; el paquete raster facilita el análisis y la visualización de datos espaciales en cuadrícula,
como capas raster del SIG, imágenes de teledetección y modelos digitales de elevación; maptools
apoya la lectura, escritura, manipulación y visualización de archivos de forma; y gstat proporciona
funciones para el análisis geoestadístico, como el ajuste de variogramas y la interpolación espacial
por medio de la distancia inversa pesaje y kriging. Estos son solo una muestra de algunos de los
más populares paquetes R que están disponibles para el análisis de datos espaciales.
Se dispone de paquetes para trabajar con aplicaciones de cartografía en Internet. Por ejemplo, el
paquete ggmap proporciona una potente interfaz de programación de aplicaciones OpenStreetTM
y Google MapsTM , que permite a los usuarios utilizar conjuntos de datos geoespaciales dentro de
R como parte de sus visualizaciones de datos. El paquete plotKML apoya el trazado de datos
espaciales en Google Earth mediante la creación de archivos *.kml y *.kmz.
Mirando más allá de la R, se han desarrollado paquetes para aprovechar el poder de otros
lenguajes y aplicaciones. Por ejemplo, el paquete RPyGeo proporciona acceso a (prácticamente
cualquier) herramienta de geoprocesamiento ArcGIS desde dentro de R ejecutando scripts de
geoprocesamiento Python sin escribir código Python o tocar ArcGIS (aunque tanto Python como
ArcGIS deben estar instalados en el sistema del usuario). El paquete spgrass6 proporciona una
forma similar de ejecutar el SIG de GRASS desde dentro de R. Muchos científicos de cuencas
hidrográficas utilizan la aplicación SIG de SAGA, que es un SIG de código abierto basado en raster
escrito por geocientíficos (Conrad et al. 2015). Es rápido y potente, e incluye rutinas robustas para
la delimitación de cuencas. El uso del paquete RSAGA permite que los comandos del SAGA se
ejecuten desde un guión R, facilitando así la automatización. En
[Link] se puede encontrar un guión para utilizar R y RSAGA
para delinear los límites de las cuencas hidrográficas.
ANÁLISIS Y MODELIZACIÓN HIDROLÓGICA
En el cuadro 1 se describen brevemente una muestra de paquetes que son útiles para realizar
análisis hidrológicos. Rigon (s.f.) proporciona enlaces y descripciones de muchos de estos
paquetes.
Tabla 1. Breves descripciones de una muestra de paquetes R aportados de especial interés para los
hidrólogos.
seas: Herramientas para analizar y visualizar las variaciones estacionales del tiempo ambiental
datos en serie; funciones para analizar los archivos de datos del Centro Canadiense del Clima
Lfstat: Funciones para el análisis de flujos bajos basadas en el Informe de Hidrología Operacional
Nº 50 (1999) de la Organización Meteorológica Mundial; funciones para el análisis de frecuencia
de flujos bajos, análisis de recesión, curvas de duración del flujo y separación del flujo de base
waterData: Acceso a los datos de flujo diario del U.S. Geological Survey y al cálculo de anomalías
R también puede utilizarse como "envoltorio" para automatizar la configuración y ejecución del
modelo. Puede ser especialmente útil para la calibración del modelo dentro de un marco
generalizado de estimación de la incertidumbre de la verosimilitud (GLUE), en que un modelo se
ejecuta varias veces con diferentes conjuntos de parámetros, con todos los conjuntos que logran
un determinado de rendimiento que se está adoptando como parte de una familia "conductual".
Por ejemplo, Jost y otros (2012) usó R como envoltura para realizar una calibración de tipo
adhesivo del modelo hidrológico HBV-EC para el La cuenca del río Columbia, río arriba de la presa
de Mica.
Para los usuarios de la aplicación de preparación de documentos LaTeX, la función de sudor dentro
de la base La instalación permite a los usuarios incrustar código R dentro de un archivo fuente de
LaTeX. El código R se ejecuta cada vez que el El documento LaTeX está compilado. Así, por
ejemplo, en lugar de insertar una figura como un archivo gráfico o un como un objeto de texto, se
inserta el código R para crear la figura o tabla, lo que permite automatizar actualización de los
documentos si cambian los datos o los análisis. El sudor también se puede utilizar dentro de
OpenOffice y archivos HTML pero no documentos de Word.
El software R puede ser descargado a través de la Red de Archivo Integral de R (CRAN) (https://
[Link]/). Además del software, el CRAN proporciona acceso a manuales, preguntas
frecuentes y el Diario R.
Muchos recursos que son adecuados para los usuarios de R principiantes y novatos están
disponibles en línea y a través de libros de texto. Un tutorial de aprendizaje interactivo gratuito en
línea para R está disponible en la Escuela de Código de O'Reilly sitio web llamado Try R
([Link] También hay un curso fuera de línea para aprender R programación
y ciencia de los datos utilizando el paquete R de remolinos ([Link] El equipo
central de R también mantiene un manual introductorio para discutir la sintaxis básica, los gráficos
y la arquitectura de R (Venables et al. 2016). Los sitios en línea, como los R-bloggers
([Link] mantienen a los usuarios al día con noticias y tutoriales de más de
600 autores contribuyentes.
Tal vez lo más importante para que los usuarios novatos se familiaricen con la guía de estilo de
código R y las convenciones. La inherente elegancia y flexibilidad de R también puede ser su
principal debilidad. Los usuarios novatos pueden desarrollar malos hábitos que pueden dificultar la
interpretación de la lógica u operaciones del programa y compartir el código con otros. Los
autores recomiendan a los usuarios que revisen la guía de estilo R avanzado de Hadley Wickham
([Link] y la guía de estilo R de Google
([Link] para familiarizarse con las convenciones típicas
de programación de R y establecer un estilo de programación consistente.
Inevitablemente, los usuarios se encontrarán con un fallo o error para el que no se puede
encontrar una solución inmediata. Sitios como Stack Overflow
([Link] R Seek ([Link] y Google pueden ser
usados para buscar soluciones en la World Wide Web. La comunidad R apoya las listas de correo
([Link] en las que los usuarios pueden hacer preguntas y recibir
ayuda de una comunidad de usuarios muy solidaria. Stack Overflow ofrece una funcionalidad
similar. En todos los mensajes que se envían a una comunidad en línea para solicitar ayuda, es
importante ser conciso e incluir ejemplos reproducibles, y utilizar una línea de asunto informativa
sobre la cuestión en cuestión.
EJEMPLOS
Se proporcionan tres ejemplos para ilustrar las aplicaciones de la R para el análisis de cuencas
hidrográficas. Las figuras asociadas 1, 2 y 4 fueron generadas usando gráficos de base; la figura 3
fue generada usando ggplot2. El código de estos ejemplos puede consultarse en
[Link]
Los hidrólogos a menudo son llamados a analizar eventos de lluvia extrema. El enfoque estándar
es calcular series anuales de intensidad de lluvia extrema para un rango de duraciones, desde tan
sólo 5 o 10 minutos hasta 24, 48 o 72 horas. Para cada duración, se ajusta una distribución de
Valor Extremo de Gumbel Tipo I a la serie extrema anual para estimar las intensidades asociadas
con períodos de retorno específicos, típicamente 2, 5, 10, 20, 50, 100, y 200 años. Las
distribuciones para cada período de retorno se trazan típicamente en un "papel Gumbel" especial
en el que la abscisa se escala de manera que los datos extraídos de una distribución Gumbel
deben caer aproximadamente a lo largo de una línea recta. Es relativamente sencillo generar tal
gráfico dentro de R. También es común resumir la duración-frecuencia de intensidad completa
(IDF) en un solo gráfico con ejes logarítmicos dobles; sin embargo, la abscisa, que representa la
duración, tiene un cambio de unidades, de minutos para duraciones más cortas a horas para
duraciones más largas. Una vez más, es relativamente sencillo en R formatear tal eje. Las figuras 1
y 2 ilustran los resultados de un análisis de las FDI para la estación meteorológica del aeropuerto
de Nanaimo en la isla de Vancouver.
Figura 3. Separación del flujo de base de un registro de flujo diario. La línea negra es el flujo de
corriente; la línea roja es el flujo de base.
- Acceso a una rica variedad de procedimientos estadísticos, desde los comunes hasta los
exóticos;
- Capacidad de generar casi cualquier tipo de gráfico o mapa con un alto nivel de control
sobre los ejes, los símbolos de trazado, el texto y la colocación;
- flexibilidad en la representación del tiempo tanto para el cálculo como para el gráfico;
- acceso a un rico conjunto de paquetes para el análisis numérico;
- aplicación de conceptos de programación estándar (bucles, ejecución condicional y
funciones) para simplificar la automatización de tareas repetitivas;
- capacidad de importar y exportar datos en una amplia variedad de formatos;
- disponibilidad de paquetes que se adaptan a las aplicaciones de análisis de cuencas
hidrográficas;
- disponibilidad de interfaces gráficas de usuario relativamente sofisticadas para ayudar en
el desarrollo, mantenimiento y depuración de códigos;
- capacidad de escribir sus propios paquetes personalizados y contribuir a la comunidad R a
través del CRAN;
- capacidad de integrar código de idioma extranjero para un procesamiento más rápido (por
ejemplo, C, Fortran);
- capacidad de crear visualizaciones y análisis de datos en la web.
Además, R está disponible de forma gratuita, incluyendo todos los paquetes, y no hay necesidad
de pagar por los complementos adicionales.
Acknowledgements
A Vivas por facilitarles el documento en español <3