El curso Investigación con R: Entrada de datos y Análisis de Series Temporales (tiempoR) se puede ver como continuación de los cursos de años anteriores sobre investigación con R (ProgramaR) y Modelización avanzada con R (ModelaR), pero no es necesario tener conocimientos previos de R.
Nos centramos en dos aspectos:
Para ello
El análisis de series temporales siempre ha sido una parte integral de R, y la clase de datos ts
forma parte de R base. Aunque sigue existiendo, es limitada porque sólo permite trabajar con series univariantes continuas con espaciado uniforme. Gradualmente se fueron introduciendo nuevas clases de datos que extendían las capacidades (xts
,zoo
,irts
) pero no existia un estándar.
Por otro lado, y comenzando con plyr
, y después dplyr
, Hadley Wickham y sus compañeros de RStudio fueron desarrollando un estándar para el manejo de datos que cristalizó en 2016 en el tidyverse. Se trata de una colección de paquetes que se basan en una misma idea: realizar análisis complejos de forma secuencial mediante la concatenación de funciones sencillas encargadas de tareas muy específicas. En este sentido, un elemento clave es el operador después %>%
, que es el que permite concatenar acciones. En términos funcionales tenemos la equivalencia
h(g(f(x),a),b,c)
equivale ax %>% f %>% g(a) %>% h(b,c)
Mientras tanto, el paquete dominante para el análisis de series temporales era el paquete forecast
, desarrollado por Rob Hyndman. Pero forecast
está construido sobre todo en torno a ts
, y utilizaba gráficos base de R, más primitivos que los ggplot2
incluidos en el tidyverse
. Fue evolucionando y en sus últimas versiones, resumidas en la 2ª edición de Forecasting: Principles and Practice, Hyndman & Athanasopoulos (2018), había incorporado gráficos ggplot2
y algunos cambios en el código. Sin embargo, forecast
sigue estando pensado para trabajar serie a serie, mientras que buena parte del análisis actual se basa en la modelización multiple. Para eso es excelente el tidyverse
, pero no había forma de aplicar las ideas de éste a series temporales.
Las cosas están cambiando desde el año 2018. Tras un período de desarrollo con distintas propuestas para integrar series temporales y tidyverse
, la nueva propuesta de Rob Hyndman es el tidyverts. Es una nueva familia de paquetes que desarrolla las especificidades de las series temporales con objetos similares a las tibbles
del tidyverse
: los objetos tsibble
. Además, está disponible el borrador (aún inédito) de la 3ª edición de Forecasting: Principles and Practice, Hyndman & Athanasopoulos (2019), que ya sólo utiliza el tidyverts
. De hecho, una vez instalado el paquete fpp3
, cargandolo con library(fpp3)
tenemos ya disponibles casi todos los paquetes que necesitamos para ponernos a trabajar.
En este curso trabajamos preferentemente con los paquetes del tidyverts
que permiten realizar de forma sencilla análisis muy complejos, pero también utilizaremos para objetivos específicos, como puede ser modelos VAR, paquetes que utilizan otros estándares. Existe, eso sí, el paquete tsbox
que permite pasar objetos de series temporales de un formato a otro de manera sencilla.
Para seguir este curso lo primero que tienes que hacer es instalar en tu ordenador la última versión disponible de R y de RStudio
R: Lo bajas de CRAN.
RStudio: Proporciona un entorno de trabajo para R, además de muchos recursos sobre R.
Coll Serrano & Pérez (2018) proporciona una excelente introducción a R y referencia básica que comienza desde cero. Lo que más nos interesa repasar para este curso es el capítulo 5.
Una de las ideas centrales de R son las extensiones en forma de paquetes que añaden funcionalidad. A día de hoy existen más de 15000 paquetes disponibles. Para tener el mismo entorno de trabajo, debéis instalar los paquetes que vamos a utilizar en el curso. Para ello tenéis que copiar y pegar en la consola de RStudio, donde os espera un >
, el código siguiente, asumiendo que tenéis internet disponible. Dando las opciones por defecto os instalará los paquetes, algo que sólo hay que hacer una vez (salvo actualizaciones).
## Instalación de paquetes que utilizaremos a lo largo del curso
install.packages("devtools",dep=TRUE) # Paquetes de soporte general
install.packages("tidyverse",dep=TRUE) # Paquetes para manejo y visualización de datos
devtools::install_github("thomasp85/patchwork") # Múltiples gráficos
install.packages("plotly") # Gráficos interactivos
install.packages(c("ggrepel","ggpmisc","directlabels")) # Extensiones de ggplot
install.packages(c("ggseas","ggdemetra","tidyquant")) ## Ajuste estacional, finanzas
install.packages(c("gtrendsR")) ## Datos de google trends.
install.packages("forecast") # El paquete "tradicional" de Hyndman
install.packages(c("urca","vars")) # VAR, SVAR y cointegración
install.packages(c("dynlm","tsDyn","dlm")) # State space methods
install.packages("autovarCore") # Automatic VAR estimation
remotes::install_github("robjhyndman/fpp3-package") # Paquetes del tidyverts
devtools::install_github("tidyverts/fasster") # También del tidyverts
remotes::install_github("mitchelloharawild/fable.prophet") # Permite acceder a prophet desde el tidyverse
install.packages(c("tsbox","tseries","TSA","MARSS")) # Otros paquetes de series temporales
install.packages(c("tsbox","TSstudio")) # Gráficos de series temporales, transformaciones y más
install.packages(c("unpivotr","tidyxl","pdftools")) # Lectura de datos complejos
install.packages("tidycells",dep=TRUE) # Metapaquete de lectura de datos complejos, más avanzado
install.packages("stationaRy") # Datos climáticos
install.packages("wbstats") # World Bank statistics
Si ya se han instalado los paquetes, ¡enhorabuena!. Ya estás en condiciones de ponerte con el resto de materiales.
Además de Coll Serrano & Pérez (2018), te pueden ser útiles los materiales del curso de Doctorado de 2018, Ortega (2018) donde se presentan las ideas principales del tidyverse
y de ggplot2
junto a referencias, y se profundiza en las técnicas de modelización. También es excelente el libro del creador del tidyverse
, Wickham & Grolemund (2017) que se ha traducido al español recientemente (Wickham & Grolemund2019).
El texto básico para seguir el curso, que presenta lo que se puede hacer con el tidyverts
, es Hyndman & Athanasopoulos (2019). Todavía no incorpora todos los contenidos de Hyndman & Athanasopoulos (2018) que sigue siendo útil. Está también en preparación Hyndman (2019), que se centra en los temas de modelización múltiple en el tidyverts
. Un texto excelente pero más centrado en modelos en el espacio de los estados es Holmes, Scheuerell, & Ward (2019). Hay más referencias específicas en cada caso de estudio. Por último, para el que quiera un texto que desarrolle los aspectos teóricos, le recomiendo Shumway & Stoffer (2017). También hay contenidos sobre series temporales en textos de econometría con R como Hanck, Arnold, Gerber, & Schmelzer (2019) y Colonescu (2016). Hay ejemplos más avanzados en Mohr (2019).
V. Coll Serrano & P. J. Pérez (2018) Curso de introducción a R. Universidad de Valencia. https://www.uv.es/vcoll/curso_r.html
C. Colonescu (2016) Principles of econometrics with R. CreateSpace Independent Publishing Platform. https://bookdown.org/ccolonescu/RPoE4/
D. Garmonsway (2019) Spreadsheet munging strategies. https://nacnudus.github.io/spreadsheet-munging-strategies
C. Hanck, M. Arnold, A. Gerber, & M. Schmelzer (2019) Introduction to econometrics with R. University of Duisburg-Essen. http://www.econometrics-with-r.org/
E. E. Holmes, M. D. Scheuerell, & E. J. Ward (2019) Applied time series analysis for fisheries and environmental sciences. University of Washington. https://nwfsc-timeseries.github.io/atsa-labs/
R. Hyndman (2019) Tidy time series forecasting with fable. Monash University. https://tidyverts.github.io/tidy-forecasting-principles/
R. Hyndman & G. Athanasopoulos (2018) Forecasting: Principles and practice (2nd edition). OTexts. https://OTexts.org/fpp2/
R. Hyndman & G. Athanasopoulos (2019) Forecasting: Principles and practice (3rd edition). OTexts. https://OTexts.org/fpp3/
F. X. Mohr (2019) R-econometrics: Time series topics. https://www.r-econometrics.com/timeseriesintro/
J. Ooms (2019) Pdftools: Text extraction, rendering and converting of pdf documents. https://CRAN.R-project.org/package=pdftools
J. A. Ortega (2018) ModelaR: Modelización avanzada con R. Universidad de Salamanca. https://rpubs.com/jaortega/ModelaR
R. H. Shumway & D. S. Stoffer (2017) Time series analysis and its applications: With R examples. Springer. https://www.stat.pitt.edu/stoffer/tsa4/tsa4.pdf
H. Wickham & G. Grolemund (2017) R for data science: Import, tidy, transform, visualize, and model data. O’Reilly. https://r4ds.had.co.nz/
H. Wickham & G. Grolemund (2019) R para ciencia de datos. https://es.r4ds.hadley.nz/