Series de Tiempo

0. Concepto

Una serie de tiempo es una coleccion de observaciones sobre un determinado fenomeno efectuadas en momentos de tiempo sucesivos, usualmente equiespaciados. Ejemplo de series de tiempo son: 1. Precio de acciones 2. Niveles de inventario 3. Rotacion de personal 4. Ventas

1. Instalar paquetes y llamar librerías

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

2. Crear la serie de tiempo

# Paso 1. Obtener los 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,1), frequency=4)
serie_de_tiempo
##      Qtr1 Qtr2 Qtr3 Qtr4
## 2020   50   53   55   57
## 2021   55   60

3. Crear modelo ARIMA

# ARIMA: Autoregressive Integrated Moving Avarage o Modelo Autorregresivo 
# Integrado de Media Móvil
# ARIMA (p,d,q)
# p = orden de auto-regresion
# d = orden de integracion (diferenciación)
# q = orden del promedio móvil
# ¿Cuándo se usa?
# Cuando las estimacioes 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 el pronóstico

pronostico <- forecast(modelo, level = c(95), h=5)
pronostico
##         Point Forecast    Lo 95    Hi 95
## 2021 Q3             61 58.22127 63.77873
## 2021 Q4             63 60.22127 65.77873
## 2022 Q1             61 58.22127 63.77873
## 2022 Q2             66 63.22127 68.77873
## 2022 Q3             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 traves de la libreria WDI

1. Instalar paquetes y llamar librerías

# Install.packages("WDI")
library(WDI)
# install.packages("wbstats")
library(wbstats)
# Install.packages("tidyverse")
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 la serie de tiempo

# Paso 1. Obtener los valores dependientes
gdp_data <- wb_data(country = "MX", indicator = "NY.GDP.MKTP.CD", start_date = 1973, end_date = 2022)
gdp_data <- select(gdp_data,"NY.GDP.MKTP.CD")

# Paso 2. Agregar a los valores anteriores su tiempo correspondiente
serie_de_tiempo1 <- ts(data=gdp_data, start = (1973), frequency=1)
serie_de_tiempo1
## Time Series:
## Start = 1973 
## End = 2022 
## Frequency = 1 
##       NY.GDP.MKTP.CD
##  [1,]   5.528021e+10
##  [2,]   7.200018e+10
##  [3,]   8.800000e+10
##  [4,]   8.887679e+10
##  [5,]   8.191250e+10
##  [6,]   1.026473e+11
##  [7,]   1.345296e+11
##  [8,]   2.055770e+11
##  [9,]   2.638021e+11
## [10,]   1.846036e+11
## [11,]   1.561675e+11
## [12,]   1.842312e+11
## [13,]   1.952414e+11
## [14,]   1.345561e+11
## [15,]   1.475426e+11
## [16,]   1.816112e+11
## [17,]   2.214031e+11
## [18,]   2.612537e+11
## [19,]   3.131397e+11
## [20,]   3.631578e+11
## [21,]   5.007334e+11
## [22,]   5.278106e+11
## [23,]   3.600725e+11
## [24,]   4.109730e+11
## [25,]   5.004160e+11
## [26,]   5.264997e+11
## [27,]   6.002330e+11
## [28,]   7.079099e+11
## [29,]   7.567029e+11
## [30,]   7.721097e+11
## [31,]   7.293350e+11
## [32,]   7.822429e+11
## [33,]   8.774769e+11
## [34,]   9.753834e+11
## [35,]   1.052697e+12
## [36,]   1.109987e+12
## [37,]   9.000470e+11
## [38,]   1.057801e+12
## [39,]   1.180487e+12
## [40,]   1.201094e+12
## [41,]   1.274444e+12
## [42,]   1.315356e+12
## [43,]   1.171870e+12
## [44,]   1.078493e+12
## [45,]   1.158912e+12
## [46,]   1.222406e+12
## [47,]   1.269010e+12
## [48,]   1.090515e+12
## [49,]   1.272839e+12
## [50,]   1.414187e+12

3. Crear modelo ARIMA

# ARIMA: Autoregressive Integrated Moving Avarage o Modelo Autorregresivo 
# Integrado de Media Móvil
# ARIMA (p,d,q)
# p = orden de auto-regresion
# d = orden de integracion (diferenciación)
# q = orden del promedio móvil
# ¿Cuándo se usa?
# Cuando las estimacioes futuras se explican por los datos del pasado y no por variables independientes. 
# Ejemplo: Tipo de Cambio

modelo1 <- auto.arima(serie_de_tiempo1)
modelo1
## Series: serie_de_tiempo1 
## ARIMA(0,1,0) 
## 
## sigma^2 = 7.381e+21:  log likelihood = -1303.18
## AIC=2608.36   AICc=2608.44   BIC=2610.25
summary(modelo1)
## Series: serie_de_tiempo1 
## ARIMA(0,1,0) 
## 
## sigma^2 = 7.381e+21:  log likelihood = -1303.18
## AIC=2608.36   AICc=2608.44   BIC=2610.25
## 
## Training set error measures:
##                       ME        RMSE         MAE      MPE     MAPE     MASE
## Training set 27179245230 85046847387 67623045592 4.943879 14.05421 0.980016
##                     ACF1
## Training set -0.01519178

4. Realizar el pronóstico

pronostico1 <- forecast(modelo1, level = c(95), h=5)
pronostico1
##      Point Forecast        Lo 95        Hi 95
## 2023   1.414187e+12 1.245806e+12 1.582568e+12
## 2024   1.414187e+12 1.176060e+12 1.652314e+12
## 2025   1.414187e+12 1.122543e+12 1.705832e+12
## 2026   1.414187e+12 1.077425e+12 1.750949e+12
## 2027   1.414187e+12 1.037676e+12 1.790699e+12
plot(pronostico1)

R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Including Plots

You can also embed plots, for example:

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.