Series de Tiempo

Teoría

Una serie de tiempo es una colección de observaciones sobre un determinaod fenómeno efectuadas en momentos de tiempo sucesivos, usualmente equiespaciados.

Ejemplos de series de tiempo son:

  1. Precio de acciones
  2. Niveles de inventario
  3. Rotación de personal
  4. Ventas
  5. Participación del mercado

1. Paquetes y Librarias

#install.packages("forecast")
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo

2. Crear la serie del tiempo

# Paso 1. Obtener lso valores dependientes.
produccion <- c(50, 53, 55, 57, 55, 60)

#Paso 2. Agregar a los valores anteriores su tiempo correspondiente.
serie_de_tiempo <- ts(data=produccion, start = c(2020, 4), frequency=4)

serie_de_tiempo
##      Qtr1 Qtr2 Qtr3 Qtr4
## 2020                  50
## 2021   53   55   57   55
## 2022   60

3. Crear modelo Arima

# Arima: Auto Regresive Integrated Moving Avarage 
# ARIMNA (p,d,q)
# P = orden de auto regresion 
# d = orden de integracion 
# 1 = orden del promedio movil 
# Cuando se usa? 
# lauando las estimaciones futuras se explican por 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

4. Realizar Pronostico

pronostico <- forecast(modelo, level = c(95), h=5)
pronostico
##         Point Forecast    Lo 95    Hi 95
## 2022 Q2             61 58.22127 63.77873
## 2022 Q3             63 60.22127 65.77873
## 2022 Q4             61 58.22127 63.77873
## 2023 Q1             66 63.22127 68.77873
## 2023 Q2             67 63.07028 70.92972
plot(pronostico)

Banco Mundial

Teoría

El banco mundial (WB) es un organismo multinacional especializado en finanzas. En R se puede acceder a sus indicadores a teaves de la libreria WBI

1. Paquetes y Librarias

library(WDI)
library(wbstats)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.3     ✔ 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

2. Crear serie de tiempo

 # paso 1. obtener los valores dependientes
gdp_data <- wb_data(country = "Mx", indicator = "NY.GDP.MKTP.CD",
                    start_date = 1937, end_date = 2022)

# Paso 2. agregar a los valores anteriores su tiempo correspondiente. 
serie_de_tiempo <- ts(data=gdp_data$NY.GDP.MKTP.CD, start =c(1973,1),frequency=1)
serie_de_tiempo
## Time Series:
## Start = 1973 
## End = 2035 
## Frequency = 1 
##  [1] 1.304000e+10 1.416000e+10 1.520000e+10 1.696000e+10 2.008000e+10
##  [6] 2.184000e+10 2.432000e+10 2.656000e+10 2.936000e+10 3.248000e+10
## [11] 3.552000e+10 3.920000e+10 4.519992e+10 5.528021e+10 7.200018e+10
## [16] 8.800000e+10 8.887679e+10 8.191250e+10 1.026473e+11 1.345296e+11
## [21] 2.055770e+11 2.638021e+11 1.846036e+11 1.561675e+11 1.842312e+11
## [26] 1.952414e+11 1.345561e+11 1.475426e+11 1.816112e+11 2.214031e+11
## [31] 2.612537e+11 3.131397e+11 3.631578e+11 5.007334e+11 5.278106e+11
## [36] 3.600725e+11 4.109730e+11 5.004160e+11 5.264997e+11 6.002330e+11
## [41] 7.079099e+11 7.567029e+11 7.721097e+11 7.293350e+11 7.822429e+11
## [46] 8.774769e+11 9.753834e+11 1.052697e+12 1.109987e+12 9.000470e+11
## [51] 1.057801e+12 1.180487e+12 1.201094e+12 1.274444e+12 1.315356e+12
## [56] 1.171870e+12 1.078493e+12 1.158912e+12 1.222406e+12 1.269010e+12
## [61] 1.090515e+12 1.272839e+12 1.414187e+12
## attr(,"label")
## [1] GDP (current US$)

3. Crear modelo Arima

modelo <- auto.arima(serie_de_tiempo, D=1)
modelo 
## Series: serie_de_tiempo 
## ARIMA(0,1,0) 
## 
## sigma^2 = 5.836e+21:  log likelihood = -1641.64
## AIC=3285.29   AICc=3285.36   BIC=3287.42

4. Realizar pronostico

pronostico <- forecast(modelo, level = c(95), h=5)
pronostico
##      Point Forecast        Lo 95        Hi 95
## 2036   1.414187e+12 1.264453e+12 1.563921e+12
## 2037   1.414187e+12 1.202432e+12 1.625943e+12
## 2038   1.414187e+12 1.154841e+12 1.673534e+12
## 2039   1.414187e+12 1.114720e+12 1.713655e+12
## 2040   1.414187e+12 1.079372e+12 1.749002e+12
plot(pronostico)

LS0tCnRpdGxlOiA8c3BhbiBzdHlsZSA9ImNvbG9yOiNEMDIwOTAiPiAqKiJTZXJpZXMgZGUgdGllbXBvIioqCmF1dGhvcjogIlJvZ2Vpcm8gRGFuaWVsIFJhbcOtcmV6IEdhcnphIgpkYXRlOiAiMjAyMy0xMC0wMiIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgY29kZV9kb3dubG9hZDogVFJVRQogICAgdGhlbWU6ICJjZXJ1bGVhbiIKLS0tCgojIDxzcGFuIHN0eWxlID0iY29sb3I6I0QwMjA5MCI+ICoqU2VyaWVzIGRlIFRpZW1wbyoqCgojIyA8c3BhbiBzdHlsZSA9ImNvbG9yOiNEMDIwOTAiPiBUZW9yw61hCgpVbmEgKnNlcmllIGRlIHRpZW1wbyogZXMgdW5hIGNvbGVjY2nDs24gZGUgb2JzZXJ2YWNpb25lcyBzb2JyZSB1biBkZXRlcm1pbmFvZCBmZW7Ds21lbm8gZWZlY3R1YWRhcyBlbiBtb21lbnRvcyBkZSB0aWVtcG8gc3VjZXNpdm9zLCB1c3VhbG1lbnRlIGVxdWllc3BhY2lhZG9zLgoKRWplbXBsb3MgZGUgc2VyaWVzIGRlIHRpZW1wbyBzb246IAoKMS4gUHJlY2lvIGRlIGFjY2lvbmVzCjIuIE5pdmVsZXMgZGUgaW52ZW50YXJpbwozLiBSb3RhY2nDs24gZGUgcGVyc29uYWwKNC4gVmVudGFzCjUuIFBhcnRpY2lwYWNpw7NuIGRlbCBtZXJjYWRvCgojIyA8c3BhbiBzdHlsZSA9ImNvbG9yOiNEMDIwOTAiPiAxLiBQYXF1ZXRlcyB5IExpYnJhcmlhcwoKYGBge3J9CiNpbnN0YWxsLnBhY2thZ2VzKCJmb3JlY2FzdCIpCmxpYnJhcnkoZm9yZWNhc3QpCmBgYAoKIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjojRDAyMDkwIj4gMi4gQ3JlYXIgbGEgc2VyaWUgZGVsIHRpZW1wbwoKYGBge3J9CiMgUGFzbyAxLiBPYnRlbmVyIGxzbyB2YWxvcmVzIGRlcGVuZGllbnRlcy4KcHJvZHVjY2lvbiA8LSBjKDUwLCA1MywgNTUsIDU3LCA1NSwgNjApCgojUGFzbyAyLiBBZ3JlZ2FyIGEgbG9zIHZhbG9yZXMgYW50ZXJpb3JlcyBzdSB0aWVtcG8gY29ycmVzcG9uZGllbnRlLgpzZXJpZV9kZV90aWVtcG8gPC0gdHMoZGF0YT1wcm9kdWNjaW9uLCBzdGFydCA9IGMoMjAyMCwgNCksIGZyZXF1ZW5jeT00KQoKc2VyaWVfZGVfdGllbXBvCmBgYAoKIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjojRDAyMDkwIj4gMy4gQ3JlYXIgbW9kZWxvIEFyaW1hCgpgYGB7cn0KIyBBcmltYTogQXV0byBSZWdyZXNpdmUgSW50ZWdyYXRlZCBNb3ZpbmcgQXZhcmFnZSAKIyBBUklNTkEgKHAsZCxxKQojIFAgPSBvcmRlbiBkZSBhdXRvIHJlZ3Jlc2lvbiAKIyBkID0gb3JkZW4gZGUgaW50ZWdyYWNpb24gCiMgMSA9IG9yZGVuIGRlbCBwcm9tZWRpbyBtb3ZpbCAKIyBDdWFuZG8gc2UgdXNhPyAKIyBsYXVhbmRvIGxhcyBlc3RpbWFjaW9uZXMgZnV0dXJhcyBzZSBleHBsaWNhbiBwb3IgbG9zIGRhdG9zIGRlbCBwYXNhZG8gCiMgeSBubyBwb3IgdmFyaWFibGVzIGluZGVwZW5kaWVudGVzLiAKIyBFamVtcGxvOiBUaXBvIGRlIENhbWJpbyAKCm1vZGVsbyA8LSBhdXRvLmFyaW1hKHNlcmllX2RlX3RpZW1wbywgRD0xKQptb2RlbG8gCmBgYAoKIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjojRDAyMDkwIj4gNC4gUmVhbGl6YXIgUHJvbm9zdGljbwpgYGB7cn0KcHJvbm9zdGljbyA8LSBmb3JlY2FzdChtb2RlbG8sIGxldmVsID0gYyg5NSksIGg9NSkKcHJvbm9zdGljbwpwbG90KHByb25vc3RpY28pCmBgYAoKIyA8c3BhbiBzdHlsZSA9ImNvbG9yOkNvcmFsIj4gKipCYW5jbyBNdW5kaWFsKioKCiMjIDxzcGFuIHN0eWxlID0iY29sb3I6Q29yYWwiPiBUZW9yw61hCgpFbCBiYW5jbyBtdW5kaWFsIChXQikgZXMgdW4gb3JnYW5pc21vIG11bHRpbmFjaW9uYWwgZXNwZWNpYWxpemFkbyBlbiBmaW5hbnphcy4gCkVuIFIgc2UgcHVlZGUgYWNjZWRlciBhIHN1cyBpbmRpY2Fkb3JlcyBhIHRlYXZlcyBkZSBsYSAqbGlicmVyaWEgV0JJKiAKCiMjIDxzcGFuIHN0eWxlID0iY29sb3I6Q29yYWwiPiAxLiBQYXF1ZXRlcyB5IExpYnJhcmlhcwpgYGB7cn0KbGlicmFyeShXREkpCmxpYnJhcnkod2JzdGF0cykKbGlicmFyeSh0aWR5dmVyc2UpCmBgYAoKIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpDb3JhbCI+IDIuIENyZWFyIHNlcmllIGRlIHRpZW1wbwoKYGBge3J9CiAjIHBhc28gMS4gb2J0ZW5lciBsb3MgdmFsb3JlcyBkZXBlbmRpZW50ZXMKZ2RwX2RhdGEgPC0gd2JfZGF0YShjb3VudHJ5ID0gIk14IiwgaW5kaWNhdG9yID0gIk5ZLkdEUC5NS1RQLkNEIiwKICAgICAgICAgICAgICAgICAgICBzdGFydF9kYXRlID0gMTkzNywgZW5kX2RhdGUgPSAyMDIyKQoKIyBQYXNvIDIuIGFncmVnYXIgYSBsb3MgdmFsb3JlcyBhbnRlcmlvcmVzIHN1IHRpZW1wbyBjb3JyZXNwb25kaWVudGUuIApzZXJpZV9kZV90aWVtcG8gPC0gdHMoZGF0YT1nZHBfZGF0YSROWS5HRFAuTUtUUC5DRCwgc3RhcnQgPWMoMTk3MywxKSxmcmVxdWVuY3k9MSkKc2VyaWVfZGVfdGllbXBvCmBgYAoKIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpDb3JhbCI+IDMuIENyZWFyIG1vZGVsbyBBcmltYQoKYGBge3J9Cm1vZGVsbyA8LSBhdXRvLmFyaW1hKHNlcmllX2RlX3RpZW1wbywgRD0xKQptb2RlbG8gCmBgYAoKIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpDb3JhbCI+IDQuIFJlYWxpemFyIHByb25vc3RpY28KCmBgYHtyfQpwcm9ub3N0aWNvIDwtIGZvcmVjYXN0KG1vZGVsbywgbGV2ZWwgPSBjKDk1KSwgaD01KQpwcm9ub3N0aWNvCnBsb3QocHJvbm9zdGljbykKYGBgCg==