Clase 1

Introducción al análisis y pronóstico de Series de Tiempo

Bastián Aballay L. https://www.linkedin.com/in/bastianaballay/
2022-01-12

Introducción a las Series de Tiempo

Los datos temporales son uno de los formatos de datos más comunes, siendo generalmente utilizados para describir un evento o fenómeno que ocurre a través del tiempo. En ese contexto, una serie de tiempo corresponde a una colección de observaciones asociadas a una variable de interés llevadas a cabo de manera secuencial en el tiempo (Chatfield and Xing 2019).

Generalmente, las observaciones son capturadas en intervalos de tiempo equiespaciados tales como años, trimestres, semestres, meses, semanas, días, horas, minutos, segundos, etc. Esta característica es uno de los atributos principales de las series de tiempo y es conocida como la frecuencia. Así, es usual adicionar la frecuencia al momento de hablar de una serie de tiempo en particular (ventas mensuales, temperatura diaria, demanda eléctrica semi-horaria, …).

Gran parte de la teoría estadística tiene relación con muestras aleatorias de observaciones independientes y es probable ud. se haya enfrentado a ellos en su formación académica o profesional. Una característica especial de las series de tiempo es el hecho de que las observaciones sucesivas usualmente no son independientes, por lo que cualquier análisis que se lleve cabo debe tomar en consideración el orden temporal de las observaciones. Más aún, dado que las observaciones secuenciales son dependientes entre sí, sus valores futuros podrían ser predichos a partir de observaciones pasadas. Si una serie de tiempo puede ser predicha de manera exacta, se dice determinística. Sin embargo, la mayoría de las series de tiempo están parcialmente determinadas por valores pasados, por lo que se describen como estocásticas (Chatfield and Xing 2019). En este último caso, obtener una predicción exacta es practicamente imposible y cualquier esfuerzo de pronóstico debe ser reemplazado por la idea de que los valores futuros poseen una distribución de probabilidad que está condicionada en el conocimiento que se tenga de los valores pasados.

Nile
Show code
# Yearly
ggplot_nile <- Nile %>% 
  tsibble::as_tsibble() %>% 
  ggplot((aes(x = index, y = value))) +
  geom_line()

plotly::ggplotly(ggplot_nile)
AirPassengers
Show code
# Quarterly
ggplot_airpassengers <- AirPassengers %>%
  tsibble::as_tsibble() %>%
  mutate(index = as.Date(index)) %>% 
  ggplot((aes(x = index, y = value))) +
  geom_line()

plotly::ggplotly(ggplot_airpassengers)
Taylor
Show code
# Half-hourly
ggplot_taylor <- forecast::taylor %>% 
  tsibble::as_tsibble() %>% 
  ggplot((aes(x = index, y = value))) +
  geom_line()

plotly::ggplotly(ggplot_taylor)
EuStockMarkets
Show code
# Daily
# DAX: Germany
# SMI: Switzerland
# CAC: France
# FTSE: UK
ggplot_eu_stock_markets <- EuStockMarkets %>%
  timetk::tk_tbl() %>%
  tidyr::pivot_longer(cols = -c(index),
               names_to = "stock") %>%
  ggplot(aes(x = index, y = value, color = stock)) +
  geom_line()

plotly::ggplotly(ggplot_eu_stock_markets)
M4-q10
Show code
# Quarterly
ggplot_q10_quarterly <-
  timetk::m4_quarterly %>% filter(id == "Q10") %>%
  ggplot(aes(x = date, y = value)) +
  geom_line()

plotly::ggplotly(ggplot_q10_quarterly)
Sunspots
Show code
# Monthly
ggplot_sunspots <-
  datasets::sunspots %>% 
  timetk::tk_tbl() %>% 
  ggplot(aes(x = index, y = value)) +
  geom_line()

plotly::ggplotly(ggplot_sunspots)
Wine
Show code
# Monthly
ggplot_wine <-
  forecast::wineind %>% 
  timetk::tk_tbl() %>% 
  ggplot(aes(x = index, y = value)) +
  geom_line()

plotly::ggplotly(ggplot_wine)
Global Temperature
Show code
# Yearly average global temperature deviations
ggplot_gtemp <-
  astsa::gtemp_land %>% 
  timetk::tk_tbl() %>% 
  ggplot(aes(x = index, y = value)) +
  geom_line()

plotly::ggplotly(ggplot_gtemp)
Speech
Show code
# Speech recording of the syllable aaahhh sampled at 10,000 points per second
ggplot_speech <-
  astsa::speech %>% 
  timetk::tk_tbl() %>% 
  mutate(index = 1:length(astsa::speech)) %>% 
  ggplot(aes(x = index, y = value)) +
  geom_line()

plotly::ggplotly(ggplot_speech)
Earthquake
Show code
# 40 points per second
ggplot_quake <-
  astsa::eqexp$EQ5 %>% 
  timetk::tk_tbl() %>% 
  mutate(index = 1:length(astsa::eqexp$EQ5)) %>% 
  ggplot(aes(x = index, y = data)) +
  geom_line()

plotly::ggplotly(ggplot_quake)
AAPL Stock price
Show code
# Source: https://bookdown.org/kochiuyu/Technical-Analysis-with-R/dygraphs-package.html
getSymbols("AAPL")
[1] "AAPL"
Show code
graph<-dygraph(OHLC(AAPL), main = "AAPL") 
graph<-dyEvent(graph,"2007-6-29",
               "iphone", labelLoc = "bottom") 
graph<-dyEvent(graph,"2010-5-6", 
               "Flash Crash", labelLoc = "bottom") 
graph<-dyEvent(graph,"2014-6-6", 
               "Split", labelLoc = "bottom") 
dyEvent(graph,"2011-10-5",
        "Jobs", labelLoc = "bottom") 
AAPL Stock price (Candle)
Show code
# Source: https://bookdown.org/kochiuyu/Technical-Analysis-with-R/dygraphs-package.html
AAPL <- tail(AAPL, n=30)
graph<-dygraph(OHLC(AAPL))
dyCandlestick(graph) 

En este curso, nos enfocaremos el análisis y estudio de secuencias de mediciones de una misma variable, a menudo en intervalos de tiempo regulares, lo que se conoce como series de tiempo univariadas.

Análisis de Series de Tiempo

El análisis de series de tiempo corresponde al arte de obtener conocimiento significativo a partir de series de tiempo mediante la exploración de su estructura y características, así como también la identificación de patrones que puedan ser utilizados para predecir futuros eventos (pronosticar) de ellas (Krispin 2019).

Objetivos del Análisis de Series de Tiempo

Existen diversos posibles objetivos por los cuales analizar una serie de tiempo:

Exploratorios / Descriptivos

Una de las primeras tareas a llevar a cabo para analizar una serie de tiempo es graficarla e identificar efectos estacionales, tendencias, ciclos, peaks, cambios en el nivel (repentinos o graduales), puntos de quiebre, discontinuidades y posibles outliers1. Es decir, ese necesario llevar a cabo un proceso de Análisis de Datos Exploratorio (EDA) que permita caracterizar y resumir las series observadas, aplicando estadística descriptiva, agrupaciones ad-hoc y gráficos que permitan ilustrar fenómenos de interés.

Explicativos o de Inferencia

A menudo cuando las observaciones obtenidas corresponden a una o más variables, es posible utilizar las variaciones de una de ellas para explicar las de otra, lo que podría permitir un mayor entendimiento de los mecanismo que generan una serie de tiempo en particular. Gran parte de la literatura se enfoca en abordar este problema utilizando sistemas lineales, que transforman una serie de entrada en una de salida a partir de una operación lineal. En este caso, el analista está interesado en estudiar las propiedades de dicho sistema lineal que - por ejemplo - puede tomar la forma de un modelo de funciones de transferencia.2

Predicción o Pronóstico (Forecasting)

It is difficult to make predictions, especially about the future

                                    Niels Bohr, físico danés

Un pronóstico es una predicción acerca de algún evento (o eventos) futuro3. El pronóstico es presumiblemente el objetivo final de cualquier practicante y - por supuesto - el de este curso. Corresponde a una de las tareas estadísticas más comunes en los negocios, permitiendo que los involucrados puedan tomar decisiones informadas. Las organizaciones necesitan desarrollar sistemas de pronóstico que incorporen distintas aproximaciones al problema de la predicción de eventos inciertos. Dichos sistemas requieren del desarrollo de expertise en la identificación del verdadero problema de pronóstico, la aplicación de un rango diverso de metodologías de pronóstico, selección de métodos adecuados para cada problema, y la capacidad de evaluar y refinar los métodos en el tiempo. Como con todo modelo, su éxito depende del soporte organizacional que se le otorgue, así como también de los resultados obtenidos (Hyndman and Athanasopoulos (2021)).

Los problemas de pronóstico a menudo son clasificados según el horizonte de pronóstico4 en corto, mediano y largo plazo,5 y están dictados por la naturaleza del problema. Los problemas de pronóstico a corto plazo involucran la predicción de fenómenos temporalmente cercanos (minutos, horas, días, semanas y meses) en el futuro. Dichos pronósticos son requeridos para planificar producción, dotación de personal, fijación precios, etc. Los pronósticos a mediano plazo involucran predicciones que se extienden en un horizonte de meses a un par de años en adelante, involucrando decisiones que van desde gestión de operaciones, compra de insumos y activos, así como también presupuestos. Los pronósticos a largo plazo en general dan soporte a problema estratégicos de las organizaciones, permitiendo aprovechar oportunidades de mercado, factores medioambientales y recursos internos.

El intervalo de pronóstico corresponde a la frecuencia con la que los nuevos pronósticos deben ser preparados. Si consideramos por ejemplo, que la producción se planifica a tres meses en una base mensual, en este caso, el horizonte de pronóstico serían tres meses y el intervalo de pronóstico sería de un mes.

La razón por la que dominar herramientas de forecasting es tan importante radica en la transversalidad de su aplicación, siendo una entrada que es crítica para diversos problemas y procesos de planificación y toma de decisiones, con aplicaciones en areas tales como:

Área Serie de Tiempo (Ej.)
Economía Gross Domestic Product (GPD)6, crecimiento poblacional, desempleo, tasas de inflación e interés, producción y consumo
Marketing Ventas, promociones, cambios en precios
Gestión de Operaciones Planificación de la producción, Gestión de Inventarios y Cadena de Suministros, Staff, determinación de mix
Finanzas y Gestión de Riesgo Retornos de activos financieros (acciones, bonos, commodities), tasas de interés, tipos de cambio, opciones
Energía Demanda/Consumo Eléctrico7
Ciencia Actuarial y demografía Mortalidad y Tablas de Vida8
Control de procesos Gestión de calidad, monitoreo y ajuste y mantenciones
Retail Ventas según SKU
Comunicaciones Tráfico, Procesos binarios
Química Viscosidad de procesos
Entretenimiento Tickets / Entradas a eventos
Ciencias Medioambientales Lluvia, Viento, Clima, Humedad, Temperatura

Por supuesto, la capacidad que tiene cada evento o cantidad de ser predicha depende de varios factores, incluyendo (Hyndman and Athanasopoulos (2021)):

Técnicas de pronóstico

Como se vio anteriormente, la metodología de pronóstico adecuada a cada problema depende bastante de la cantidad de datos disponibles para poder aplicarla.

Pronóstico Cualitativo

Cuando no hay datos disponibles (no hay precedentes históricos de un proceso), una práctica usual es utilizar métodos de pronóstico cualitativos10. Dichos métodos involucran hacer uso del conocimiento del negocio (dominio del problema) para estimar valores futuros. De hecho, incluso teniendo datos disponibles, los pronósticos estadísticos pueden ser ajustados usando juicio de expertos (Método Delphi) (o bien una combinación de ellos)11. Un ejemplo podría ser la introducción de un nuevo producto en un portfolio, para el cual no hay historia relevante. En este caso, la organización debe apoyarse de la opinión de expertos y el equipo de marketing para estimar de manera subjetiva las ventas de dicho producto en su fase de introducción.

Pronóstico Cuantitativo

Si la información histórica relacionada a un proceso está disponible, es razonable asumir que algunos aspectos de los patrones pasados continuarán en las observaciones futuras. Las técnicas de pronóstico cuantitativas hacen un uso de los datos históricos a través de modelos de pronóstico. Dichos modelos resumen de manera formal los patrones hallados en los datos y expresan (en algunos casos, mediante una forma funcional) la relación estadística entre los valores previos y actuales de una variable. Posteriormente, dichos modelos son utilizados para proyectar los patrones de los datos en el futuro. Es decir, el modelo de pronóstico extrapola el comportamiento pasado y actual en el futuro.

Existen diversos tipos de modelos de pronóstico, siendo los modelos de regresión (Regression Models), suavizamientos exponenciales (Exponential Smoothing) y modelos de series de tiempo (Time Series Models) los más utilizados.

Los modelos de regresión utilizan relaciones entre la variable de interés y una o más variable predictora relacionada. En algunos casos son llamados modelos de pronóstico causales, ya que se asume que las variables predictoras describen las fuerzas que causan o mueven los valores observados de la variable dependiente. La mayoría de estos modelos son ajustados mediante mínimos cuadrados (Least Squares).

Los métodos basados en suavizamientos exponenciales generan pronósticos a partir de promedios ponderados de observaciones pasadas, usualmente con pesos (ponderadores) que decaen de manera exponencial a medida que las observaciones se hacen más distantes en el tiempo. Es decir, se otorga mayor importancia a las observaciones recientes para pronosticar valores futuros. Esta aproximación genera pronósticos confiables y rápidos para una gran cantidad de problemas, sobre todo en la industria.

Finalmente, los modelos de series de tiempo utilizan propiedades estadísticas (usualmente autocorrelaciones) de los datos históricos para especificar un modelo y estimar sus parámetros.

Formas de pronosticar

La manera en que un pronóstico es generado también es importante. Es común pensar en un pronóstico como un número que representa nuestra mejor estimación acerca del valor futuro de una variable de interés. Los estadísticos llaman estimador o pronóstico puntual a dicho valor. Sin embargo, casi siempre dichos pronósticos están equivocados, pues experimentan error de pronóstico. Debido a lo anterior, una buena práctica es acompañar a un pronóstico puntual con una estimación de qué tan grande puede ser el error de pronóstico. La elaboración de un intervalo de predicción (PI) permite presentar un rango de valores posibles para la observación futura, y en general es más útil para la toma de decisiones que un sólo número.

El proceso de Forecasting

Un proceso es una serie de actividades conectadas que transforman una o más entradas en una o más salidas. Las actividades en un proceso de pronośtico se muestran en la Figura 1. (Montgomery, Jennings, and Kulahci (2015)):

Show code
DiagrammeR::grViz(
  "
digraph {
  graph [layout = dot, rankdir = TB, fontsize = 11]

  node [shape = rectangle, penwidth = 1.5]
  stage1 [label = 'Definición del Problema']
  stage2 [label = 'Recolección de datos']
  stage3 [label = 'Análisis de datos']
  stage4 [label = 'Selección y Ajuste de Modelos']
  stage5 [label = 'Validación de Modelo']
  stage6 [label = 'Despliegue del Modelo de Pronóstico (Producción)']
  stage7 [label = 'Monitoreo de Desempeño del Modelo de Pronóstico']

  stage1 -> stage2 -> stage3 -> stage4 -> stage5 -> stage6 -> stage7;
  stage4 -> stage3
}",
height = 500
)

Figure 1: Proceso de Forecasting

  1. Definición del problema

Involucra entender cómo los pronósticos serán utilizados junto con las expectativas que nuestros stakeholders (cliente o usuario del pronóstico) tengan a partir de ellos. En esta fase es importante abordar preguntas relacionadas con la forma del requerimiento de pronóstico: intervalo y horizonte de pronóstico, nivel de precisión requerido para tomar decisiones12, niveles de agregación (por ej. predecir un producto individual o su categoría de productos similares), etc.

  1. Recolección de datos

Obtención de datos históricos considerados como variables relevantes a ser pronosticadas. Es útil pensar en la planificación de procesos ETL asociados a la obtención de los datos a partir de fuentes crudas (raw) para garantizar confiabilidad, integridad y reproducibilidad de las etapas posteriores.

  1. Análisis de datos

Etapa fundamental para la eventual selección de modelos de pronóstico a utilizar. Consiste en graficar series de tiempo para inspeccionar patrones reconocibles (véase Sección Objetivos Exploratorios / Descriptivos). En ocasiones será de utilidad suavizar los datos para identificar patrones que podría ser más obvios. El análisis incorpora además resúmenes numéricos de los datos tales como la media muestral, desviación estándar, percentiles y correlaciones.

  1. Selección y ajuste de modelos

Elección de uno o más modelos de pronósticos y su respectivo ajuste (fitting) o entrenamiento (training, en el caso de modelos de Machine Learning). Nos referimos a la estimación de los parámetros de ajuste desconocidos del modelo, así como la evaluación de la calidad del modelo ajustado y la revisión de sus respectivos supuestos.

  1. Validación de Modelo

Consiste en la evaluación del rendimiento probable de un modelo para una aplicación determinada, usualmente examinando la magnitud del error de pronóstico cuando el modelo predice el futuro (out-sample). En general, los errores de ajuste serán siempre menores que los errores de pronóstico. El método más adecuado para medir el desempeño de un sistema de pronóstico es la validación cruzada para series de tiempo.

Show code
knitr::include_graphics("https://topepo.github.io/caret/splitting/Split_time-1.svg")
Fuente: [Caret Package - Max Kuhn](https://topepo.github.io/caret/)

Figure 2: Fuente: Caret Package - Max Kuhn

  1. Despliegue del Modelo de pronóstico en Producción

Involucra entregar tanto el modelo como sus resultados a la organización y clientes finales. Es importante asegurar que el usuario entiende cómo utilizar el modelo y sacar provecho a los resultados obtenidos. Desde una perspectiva de ingeniería de software, es necesario garantizar la reproducibildad de los modelos, así como su capacidad de integración continua, sobre todo, cuando debemos actualizar nuestras creencias con respecto a los datos y sus cambios en el tiempo (data drift). Hoy en día, R es un excelente lenguaje para poner sistemas en producción mediante APIs y sistemas de containerización (docker - rocker)

  1. Monitoreo de Desempeño del Modelo de Pronóstico

El monitoreo de métricas de error (KPIs de pronóstico) debe ser una actividad continuada luego de que un modelo ha sido desplegado. Lo anterior permite asegurar a nuestros stakeholders que el desempeño del modelo no se ve comprometido en el tiempo, y si lo hace, tomar las acciones respectivas para corregir la situación. Los gráficos de control son herramientas básicas pero efectivas para monitorear las métricas de desempeño de nuestros productos, pudiendo tomar la forma de un reporte en Shiny, por ejemplo.

Forecasting y Machine Learning

En los últimos años, el uso de modelos de Machine Learning(ML) se ha hecho más popular y accesible gracias a las significativas mejoras en poder computacional. Esto a conducido a nuevos métodos y aproximaciones para resolver problemas de regresión y clasificación. Es importante identificar algunos factores relevantes en el uso de modelos de ML en el contexto del pronóstico de series de tiempo (Krispin (2019)):

Sin embargo, la principal virtud de los modelos de ML es su capacidad predictiva, la cual, en muchos casos, podría valer el tiempo y esfuerzo invertidos en el desarrollo o implementación del modelo de pronóstico, sobretodo cuando se consideran estructuras profundas y recurrentes de aprendizaje (Deep Learning) (Lazzeri (2021)).

Un primer intento

Veamos qué podemos hacer hoy en día con un par de líneas de código R para predecir una serie como AirPassengers:

Show code
library(tidymodels)
library(rsample)
library(modeltime)
library(timetk)

# Dataset
airpassengers_tbl <- AirPassengers %>% timetk::tk_tbl()

airpassengers_tbl %>% rmarkdown::paged_table()
Show code
# Initial Time Split
splits <- rsample::initial_time_split(airpassengers_tbl, prop = 0.9)
Show code
training(splits) %>% rmarkdown::paged_table()
Show code
testing(splits) %>% rmarkdown::paged_table()
Show code
# Prophet (Modeltime)
(model_fit_prophet <- prophet_reg() %>%
  set_engine(engine = "prophet") %>%
  fit(value ~ index, data = training(splits)))
parsnip model object

Fit time:  739ms 
PROPHET Model
- growth: 'linear'
- n.changepoints: 25
- changepoint.range: 0.8
- yearly.seasonality: 'auto'
- weekly.seasonality: 'auto'
- daily.seasonality: 'auto'
- seasonality.mode: 'additive'
- changepoint.prior.scale: 0.05
- seasonality.prior.scale: 10
- holidays.prior.scale: 10
- logistic_cap: NULL
- logistic_floor: NULL
- extra_regressors: 0
Show code
# Add fitted models to a Model Table.
(models_tbl <- modeltime_table(
  model_fit_prophet
))
# Modeltime Table
# A tibble: 1 × 3
  .model_id .model   .model_desc
      <int> <list>   <chr>      
1         1 <fit[+]> PROPHET    
Show code
# Calibrate the model to a testing set.
(calibration_tbl <- models_tbl %>%
  modeltime_calibrate(new_data = testing(splits)))
# Modeltime Table
# A tibble: 1 × 5
  .model_id .model   .model_desc .type .calibration_data
      <int> <list>   <chr>       <chr> <list>           
1         1 <fit[+]> PROPHET     Test  <tibble [15 × 4]>
Show code
# Testing Set Forecast & Accuracy Evaluation
calibration_tbl %>%
  modeltime_forecast(
    new_data    = testing(splits),
    actual_data = airpassengers_tbl
  ) %>%
  plot_modeltime_forecast(
    .legend_max_width = 25, # For mobile screens
    .interactive      = TRUE
  )
Show code
calibration_tbl %>%
  modeltime_accuracy() %>%
  table_modeltime_accuracy(
    .interactive = FALSE
  )
Accuracy Table
.model_id .model_desc .type mae mape mase smape rmse rsq
1 PROPHET Test 29.76 6.17 0.66 6.22 38.73 0.93

Show code
R version 4.1.2 (2021-11-01)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Pop!_OS 21.10

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.13.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
 [1] modeltime_1.1.0     yardstick_0.0.9     workflowsets_0.1.0 
 [4] workflows_0.2.4     tune_0.1.6          rsample_0.1.1      
 [7] recipes_0.1.17      parsnip_0.1.7       modeldata_0.1.1    
[10] infer_1.0.0         dials_0.0.10        scales_1.1.1       
[13] broom_0.7.10        tidymodels_0.1.4    xaringanExtra_0.5.5
[16] htmltools_0.5.2     dygraphs_1.1.1.6    quantmod_0.4.18    
[19] TTR_0.24.2          xts_0.12.1          zoo_1.8-9          
[22] astsa_1.14          forecast_8.15       timetk_2.6.2       
[25] tsibble_1.1.1       forcats_0.5.1       stringr_1.4.0      
[28] dplyr_1.0.7         purrr_0.3.4         readr_2.1.1        
[31] tidyr_1.1.4         tibble_3.1.6        ggplot2_3.3.5      
[34] tidyverse_1.3.1    

loaded via a namespace (and not attached):
  [1] readxl_1.3.1         backports_1.4.0      plyr_1.8.6          
  [4] lazyeval_0.2.2       splines_4.1.2        crosstalk_1.2.0     
  [7] listenv_0.8.0        inline_0.3.19        digest_0.6.29       
 [10] foreach_1.5.1        fansi_0.5.0          checkmate_2.0.0     
 [13] magrittr_2.0.1       memoise_2.0.1        tzdb_0.2.0          
 [16] globals_0.14.0       modelr_0.1.8         gower_0.2.2         
 [19] matrixStats_0.61.0   RcppParallel_5.1.4   hardhat_0.1.6       
 [22] anytime_0.3.9        prettyunits_1.1.1    tseries_0.10-49     
 [25] colorspace_2.0-2     rvest_1.0.2          haven_2.4.3         
 [28] xfun_0.28            callr_3.7.0          crayon_1.4.2        
 [31] jsonlite_1.7.2       survival_3.2-13      iterators_1.0.13    
 [34] glue_1.5.1           gtable_0.3.0         ipred_0.9-12        
 [37] V8_3.6.0             pkgbuild_1.2.1       rstan_2.21.2        
 [40] future.apply_1.8.1   DBI_1.1.1            Rcpp_1.0.7          
 [43] viridisLite_0.4.0    GPfit_1.0-8          stats4_4.1.2        
 [46] StanHeaders_2.21.0-7 lava_1.6.10          prodlim_2019.11.13  
 [49] htmlwidgets_1.5.4    httr_1.4.2           DiagrammeR_1.0.6.1  
 [52] RColorBrewer_1.1-2   ellipsis_0.3.2       loo_2.4.1           
 [55] pkgconfig_2.0.3      farver_2.1.0         nnet_7.3-17         
 [58] sass_0.4.0.9000      dbplyr_2.1.1         janitor_2.1.0       
 [61] utf8_1.2.2           tidyselect_1.1.1     labeling_0.4.2      
 [64] rlang_0.4.12         DiceDesign_1.9       munsell_0.5.0       
 [67] cellranger_1.1.0     tools_4.1.2          visNetwork_2.1.0    
 [70] cachem_1.0.6         cli_3.1.0            generics_0.1.1      
 [73] evaluate_0.14        fastmap_1.1.0        yaml_2.2.1          
 [76] processx_3.5.2       knitr_1.36           fs_1.5.1            
 [79] future_1.23.0        nlme_3.1-155         xml2_1.3.3          
 [82] compiler_4.1.2       rstudioapi_0.13      plotly_4.10.0       
 [85] curl_4.3.2           gt_0.3.1             reprex_2.0.1        
 [88] lhs_1.1.3            bslib_0.3.1          stringi_1.7.6       
 [91] ps_1.6.0             highr_0.9            lattice_0.20-45     
 [94] Matrix_1.4-0         urca_1.3-0           vctrs_0.3.8         
 [97] pillar_1.6.4         lifecycle_1.0.1      furrr_0.2.3         
[100] lmtest_0.9-39        jquerylib_0.1.4      data.table_1.14.2   
[103] R6_2.5.1             gridExtra_2.3        parallelly_1.29.0   
[106] codetools_0.2-18     distill_1.3          MASS_7.3-55         
[109] assertthat_0.2.1     withr_2.4.3          fracdiff_1.5-1      
[112] parallel_4.1.2       hms_1.1.1            quadprog_1.5-8      
[115] grid_4.1.2           rpart_4.1-15         timeDate_3043.102   
[118] class_7.3-19         snakecase_0.11.0     rmarkdown_2.11.3    
[121] prophet_1.0          downlit_0.4.0        pROC_1.18.0         
[124] lubridate_1.8.0     
Chatfield, Chris, and Haipeng Xing. 2019. The Analysis of Time Series. 7th ed. Chapman & Hall/CRC Texts in Statistical Science. New York, NY: Productivity Press.
Hyndman, Rob J, and George Athanasopoulos. 2021. Forecasting. 3rd ed. Otexts.
Krispin, Rami. 2019. Hands-On Time Series Analysis with R. Birmingham, England: Packt Publishing.
Lazzeri, Francesca. 2021. Machine Learning for Time Series Forecasting with Python. Nashville, TN: John Wiley & Sons.
Montgomery, Douglas C, Cheryl L Jennings, and Murat Kulahci. 2015. Introduction to Time Series Analysis and Forecasting. 2nd ed. Wiley Series in Probability and Statistics. Nashville, TN: John Wiley & Sons.

  1. La lista por ningún motivo busca ser una enumeración exhaustiva de los fenómenos a ser hallados en una serie de tiempo↩︎

  2. Un caso particular de las funciones de transferencia son los modelos de regresión dinámica↩︎

  3. Los términos pronóstico y predicción se utilizarán como sinónimos durante el curso↩︎

  4. También llamado lead time↩︎

  5. La literatura no presenta un concenso en relación a esta definición↩︎

  6. https://fred.stlouisfed.org/↩︎

  7. https://www.rte-france.com/eco2mix/la-consommation-delectricite-en-france↩︎

  8. https://en.wikipedia.org/wiki/Lee%E2%80%93Carter_model↩︎

  9. Domain Expertise↩︎

  10. https://otexts.com/fpp3/data-methods.html↩︎

  11. Lo importante es que sea en dicho orden, pues en general los pronósticos obtenidos a partir de metódos estadísticos son superiores a los generados mediante juicio de expertos y deberían ser usados como punto de partida↩︎

  12. Buen momento para introducir los Intervalos de Predicción como medida de riesgo en el contexto de negocio↩︎

References