Definición: Declaración sobre el valor futro de una variable de interés
Ejemplo: Walt Disney World tiene u departamento de 20 personas dedicadas a realizaar pronósticos de visitas para realizar pedidos de bebidas y alimentos.
Lema: Los pronósticos NO son perfectos. No se busca hacer el pronósticos perfectos, sino reducir el margen de error en estos.
Elementos para un mejor pronóstico:
Horizonte de tiempo precisión Confiabilidad Unidades Significativas Simple de alimentar y usar
6 pasos para reaizar un pronóstico:
Error: Es la difrencia entre el valor real y el valor del pronóstico: e_t=A_t-F_t
Series de Tiempo: Los pronósticos se observan en Serioes de tiempo Los 5 patrones en las series de tiempo son:
Irregular
Aleatorio
Una serie de tiempo es una colección de observaciones sobre un determinado fenómeno efectuadas en momentos de tiempo sucesivos, usualmente equiespaciados.
Ejmplos de series de tiempo son: 1. Precio de acciones. 2. Niveles de inventario 3. Rotación de personal 4. Ventas
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
# Paso 1. Obtener los valores dependientes
produccion <- c(50,53,55,57,55,60)
# Paso 2. Agregar a los valores anterioes su tiempo correspondiente.
serie_de_tiempo <- ts(data=produccion, start = c(2020,1), frequency = 4)
serie_de_tiempo## Qtr1 Qtr2 Qtr3 Qtr4
## 2020 50 53 55 57
## 2021 55 60
# ARIMA: AutoRegressive Integrated Moving Average o Modelo Autorregresivo Integrado de Media Móvil
# ARIMA (p,d,q)
# p = orden de autoregresion
# d = ordne de integracion (deferenciacion)
# q = orden del promedio movil
# ¿Cuándo se usa?
# Cuando las estimaciones futuras se explicanpor los datos del pasado y no por variables independientes.
# Ejemplo: Tipo de Cambio.
modelo <- auto.arima(serie_de_tiempo, D = 1)
modelo## Series: serie_de_tiempo
## ARIMA(0,0,0)(0,1,0)[4] with drift
##
## Coefficients:
## drift
## 1.5000
## s.e. 0.1768
##
## sigma^2 = 2.01: log likelihood = -2.84
## AIC=9.68 AICc=-2.32 BIC=7.06
## Series: serie_de_tiempo
## ARIMA(0,0,0)(0,1,0)[4] with drift
##
## Coefficients:
## drift
## 1.5000
## s.e. 0.1768
##
## sigma^2 = 2.01: log likelihood = -2.84
## AIC=9.68 AICc=-2.32 BIC=7.06
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.03333332 0.5787923 0.3666667 0.03685269 0.6429133 0.06111111
## ACF1
## Training set -0.5073047
## Point Forecast Lo 90 Hi 90
## 2021 Q3 61 58.66802 63.33198
## 2021 Q4 63 60.66802 65.33198
## 2022 Q1 61 58.66802 63.33198
## 2022 Q2 66 63.66802 68.33198
## 2022 Q3 67 63.70208 70.29792
El Banco Mundial (WB) es un organismo multinacional especializado en finanzas. En R se puede acceder a sus indicadores a través de la librería WBI.
#install.packages("WDI")
library(WDI)
#install.packages("wbstats")
library(wbstats)
library(tidyverse)## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Paso 1. Obtener los valores dependientes
gdp_data <- wb_data(country = "MX", indicator = "NY.GDP.PCAP.CD", start_date = 1973, end_date = 2022)
gdp_data <- gdp_data %>% select("NY.GDP.PCAP.CD")
# Paso 2. Agregar a los valores anterioes su tiempo correspondiente.
serie_de_tiempo <- ts(data=gdp_data, start = c(1973,1), frequency = 1)
serie_de_tiempo## Time Series:
## Start = 1973
## End = 2022
## Frequency = 1
## NY.GDP.PCAP.CD
## [1,] 1000.942
## [2,] 1264.362
## [3,] 1499.356
## [4,] 1470.191
## [5,] 1315.599
## [6,] 1600.763
## [7,] 2039.165
## [8,] 3036.355
## [9,] 3810.310
## [10,] 2612.680
## [11,] 2166.577
## [12,] 2506.900
## [13,] 2607.669
## [14,] 1765.264
## [15,] 1902.462
## [16,] 2302.022
## [17,] 2759.476
## [18,] 3196.920
## [19,] 3756.853
## [20,] 4272.788
## [21,] 5778.908
## [22,] 5976.494
## [23,] 4002.159
## [24,] 4487.263
## [25,] 5370.245
## [26,] 5555.712
## [27,] 6230.697
## [28,] 7232.911
## [29,] 7613.143
## [30,] 7650.932
## [31,] 7120.372
## [32,] 7525.487
## [33,] 8321.860
## [34,] 9125.388
## [35,] 9719.928
## [36,] 10119.821
## [37,] 8104.923
## [38,] 9399.965
## [39,] 10341.500
## [40,] 10376.090
## [41,] 10865.687
## [42,] 11076.134
## [43,] 9753.401
## [44,] 8875.082
## [45,] 9434.378
## [46,] 9857.007
## [47,] 10145.153
## [48,] 8654.997
## [49,] 10045.676
## [50,] 11091.305
# ARIMA: AutoRegressive Integrated Moving Average o Modelo Autorregresivo Integrado de Media Móvil
# ARIMA (p,d,q)
# p = orden de autoregresion
# d = ordne de integracion (deferenciacion)
# q = orden del promedio movil
# ¿Cuándo se usa?
# Cuando las estimaciones futuras se explicanpor los datos del pasado y no por variables independientes.
# Ejemplo: Tipo de Cambio.
modelo <- auto.arima(serie_de_tiempo, seasonal = FALSE)
modelo## Series: serie_de_tiempo
## ARIMA(0,1,0) with drift
##
## Coefficients:
## drift
## 205.9258
## s.e. 111.6272
##
## sigma^2 = 623290: log likelihood = -395.92
## AIC=795.84 AICc=796.1 BIC=799.62
## Series: serie_de_tiempo
## ARIMA(0,1,0) with drift
##
## Coefficients:
## drift
## 205.9258
## s.e. 111.6272
##
## sigma^2 = 623290: log likelihood = -395.92
## AIC=795.84 AICc=796.1 BIC=799.62
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.01590031 773.5364 547.5453 -1.915675 11.61656 0.8423204
## ACF1
## Training set 0.01264199
## Point Forecast Lo 95 Hi 95
## 2023 11297.23 9749.865 12844.60
## 2024 11503.16 9314.850 13691.46
## 2025 11709.08 9028.965 14389.20
## 2026 11915.01 8820.275 15009.74
## 2027 12120.93 8660.917 15580.95