Series de Tiempo

0. Concepto

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. Instalar paquetes y llamar librerias

#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

2. Crear modelo

# 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

2. Crear modelo

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

0. Concepto

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. Instalar paquetes y llamar librerias

library(WDI)
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.3     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── 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$)
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
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)

LS0tCnRpdGxlOiAiU2VyaWVzIGRlIHRpZW1wbyAiCmF1dGhvcjogIkRhdmlkIENhdmF6b3MgQTAxMTc3MjM4IgpkYXRlOiAiMjAyMy0xMC0wMiIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKICAgIGNvZGVfZG93bmxvYWQ6IHllcwogICAgdGhlbWU6IHlldGkKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwotLS0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IG9yYW5nZTsiPlNlcmllcyBkZSBUaWVtcG8gPC9zcGFuPgoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBvcmFuZ2U7Ij4wLiBDb25jZXB0byA8L3NwYW4+CgpVbmEgKnNlcmllIGRlIHRpZW1wbyogZXMgdW5hIGNvbGVjY2nDs24gZGUgb2JzZXJ2YWNpb25lcyBzb2JyZSB1biBkZXRlcm1pbmFvZCBmZW7Ds21lbm8gZWZlY3R1YWRhcyBlbiBtb21lbnRvcyBkZSB0aWVtcG8gc3VjZXNpdm9zLCB1c3VhbG1lbnRlIGVxdWllc3BhY2lhZG9zLgoKRWplbXBsb3MgZGUgc2VyaWVzIGRlIHRpZW1wbyBzb246IAoKMS4gUHJlY2lvIGRlIGFjY2lvbmVzCjIuIE5pdmVsZXMgZGUgaW52ZW50YXJpbwozLiBSb3RhY2nDs24gZGUgcGVyc29uYWwKNC4gVmVudGFzCjUuIFBhcnRpY2lwYWNpw7NuIGRlbCBtZXJjYWRvCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IG9yYW5nZTsiPjEuIEluc3RhbGFyIHBhcXVldGVzIHkgbGxhbWFyIGxpYnJlcmlhcyA8L3NwYW4+CgpgYGB7cn0KI2luc3RhbGwucGFja2FnZXMoImZvcmVjYXN0IikKbGlicmFyeShmb3JlY2FzdCkKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IG9yYW5nZTsiPjIuIENyZWFyIGxhIHNlcmllIGRlbCB0aWVtcG8gPC9zcGFuPgoKYGBge3J9CiMgUGFzbyAxLiBPYnRlbmVyIGxzbyB2YWxvcmVzIGRlcGVuZGllbnRlcy4KcHJvZHVjY2lvbiA8LSBjKDUwLCA1MywgNTUsIDU3LCA1NSwgNjApCgojUGFzbyAyLiBBZ3JlZ2FyIGEgbG9zIHZhbG9yZXMgYW50ZXJpb3JlcyBzdSB0aWVtcG8gY29ycmVzcG9uZGllbnRlLgpzZXJpZV9kZV90aWVtcG8gPC0gdHMoZGF0YT1wcm9kdWNjaW9uLCBzdGFydCA9IGMoMjAyMCwgNCksIGZyZXF1ZW5jeT00KQoKc2VyaWVfZGVfdGllbXBvCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBvcmFuZ2U7Ij4yLiBDcmVhciBtb2RlbG8gCgpgYGB7cn0KIyBBcmltYTogQXV0byBSZWdyZXNpdmUgSW50ZWdyYXRlZCBNb3ZpbmcgQXZhcmFnZSAKIyBBUklNTkEgKHAsZCxxKQojIFAgPSBvcmRlbiBkZSBhdXRvIHJlZ3Jlc2lvbiAKIyBkID0gb3JkZW4gZGUgaW50ZWdyYWNpb24gCiMgMSA9IG9yZGVuIGRlbCBwcm9tZWRpbyBtb3ZpbCAKIyBDdWFuZG8gc2UgdXNhPyAKIyBsYXVhbmRvIGxhcyBlc3RpbWFjaW9uZXMgZnV0dXJhcyBzZSBleHBsaWNhbiBwb3IgbG9zIGRhdG9zIGRlbCBwYXNhZG8gCiMgeSBubyBwb3IgdmFyaWFibGVzIGluZGVwZW5kaWVudGVzLiAKIyBFamVtcGxvOiBUaXBvIGRlIENhbWJpbyAKCm1vZGVsbyA8LSBhdXRvLmFyaW1hKHNlcmllX2RlX3RpZW1wbywgRD0xKQptb2RlbG8gCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBvcmFuZ2U7Ij4yLiBDcmVhciBtb2RlbG8gCmBgYHtyfQpwcm9ub3N0aWNvIDwtIGZvcmVjYXN0KG1vZGVsbywgbGV2ZWwgPSBjKDk1KSwgaD01KQpwcm9ub3N0aWNvCnBsb3QocHJvbm9zdGljbykKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlOyI+IEJhbmNvIE11bmRpYWwgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IG9yYW5nZTsiPjAuIENvbmNlcHRvCgpFbCBiYW5jbyBtdW5kaWFsIChXQikgZXMgdW4gb3JnYW5pc21vIG11bHRpbmFjaW9uYWwgZXNwZWNpYWxpemFkbyBlbiBmaW5hbnphcy4gCkVuIFIgc2UgcHVlZGUgYWNjZWRlciBhIHN1cyBpbmRpY2Fkb3JlcyBhIHRlYXZlcyBkZSBsYSBsaWJyZXJpYSBXQkkgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IG9yYW5nZTsiPjEuIEluc3RhbGFyIHBhcXVldGVzIHkgbGxhbWFyIGxpYnJlcmlhcwpgYGB7cn0KbGlicmFyeShXREkpCmxpYnJhcnkod2JzdGF0cykKbGlicmFyeSh0aWR5dmVyc2UpCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBvcmFuZ2U7Ij4gMi4gQ3JlYXIgc2VyaWUgZGUgdGllbXBvCgpgYGB7cn0KICMgcGFzbyAxLiBvYnRlbmVyIGxvcyB2YWxvcmVzIGRlcGVuZGllbnRlcwpnZHBfZGF0YSA8LSB3Yl9kYXRhKGNvdW50cnkgPSAiTXgiLCBpbmRpY2F0b3IgPSAiTlkuR0RQLk1LVFAuQ0QiLAogICAgICAgICAgICAgICAgICAgIHN0YXJ0X2RhdGUgPSAxOTM3LCBlbmRfZGF0ZSA9IDIwMjIpCgojIFBhc28gMi4gYWdyZWdhciBhIGxvcyB2YWxvcmVzIGFudGVyaW9yZXMgc3UgdGllbXBvIGNvcnJlc3BvbmRpZW50ZS4gCnNlcmllX2RlX3RpZW1wbyA8LSB0cyhkYXRhPWdkcF9kYXRhJE5ZLkdEUC5NS1RQLkNELCBzdGFydCA9YygxOTczLDEpLGZyZXF1ZW5jeT0xKQpzZXJpZV9kZV90aWVtcG8KYGBgCgpgYGB7cn0KbW9kZWxvIDwtIGF1dG8uYXJpbWEoc2VyaWVfZGVfdGllbXBvLCBEPTEpCm1vZGVsbyAKYGBgCgpgYGB7cn0KcHJvbm9zdGljbyA8LSBmb3JlY2FzdChtb2RlbG8sIGxldmVsID0gYyg5NSksIGg9NSkKcHJvbm9zdGljbwpwbG90KHByb25vc3RpY28pCmBgYAo=