Una SERIE DE TIEMPO es una colección de observaciones sobre un determinado fenómeno efectuadas en momentos de tiempo sucesivos, usualmente equiespaciados.
EJEMPLO DE SERIES DE TIEMPO 1.Precio de acciones 2.Niveles de inventario 3.Rotación de persona 4.Ventas
#install.packages("forecast")
library(forecast)
## 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 ANTERIORES SU TIEMPO CORRESPONDIENTE
serie_tiempo <-ts(data=produccion,start= c(2020,1),frequency = 4)
serie_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 auto regresión d=orden de integracion (diferenciación) q=orden del promedio móvil
¿CUANDO SE USA? Cuando las estimaciones futuras se explican por los datos del pasado no por varibales independientes.
Ejemplo Tipo de cambio
modelo <- auto.arima(serie_tiempo, D=1)
modelo
## Series: serie_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
summary(modelo)
## Series: serie_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
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)
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("forecast")
library(forecast)
#install.packages("WDI")
library("WDI")
#install.packages("tidyverse")
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.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
#install.packages("wbstats")
library("wbstats")
# PASO 1. Obtén los datos del PIB de México
gdp_data <-wb_data(country = "MX", indicator = "NY.GDP.MKTP.CD",start_date = 1973, end_date = 2022)
gdp_data <-gdp_data %>% select(date,NY.GDP.MKTP.CD)
#PASO 2 AGREGAR A LOS VALORES ANTERIORES SU TIEMPO CORRESPONDIENTE
serie_tiempo1 <- ts(data = gdp_data$NY.GDP.MKTP.CD, start = c(1973, 1), frequency = 1)
serie_tiempo1
## Time Series:
## Start = 1973
## End = 2022
## Frequency = 1
## [1] 5.528021e+10 7.200018e+10 8.800000e+10 8.887679e+10 8.191250e+10
## [6] 1.026473e+11 1.345296e+11 2.055770e+11 2.638021e+11 1.846036e+11
## [11] 1.561675e+11 1.842312e+11 1.952414e+11 1.345561e+11 1.475426e+11
## [16] 1.816112e+11 2.214031e+11 2.612537e+11 3.131397e+11 3.631578e+11
## [21] 5.007334e+11 5.278106e+11 3.600725e+11 4.109730e+11 5.004160e+11
## [26] 5.264997e+11 6.002330e+11 7.079099e+11 7.567029e+11 7.721097e+11
## [31] 7.293350e+11 7.822429e+11 8.774769e+11 9.753834e+11 1.052697e+12
## [36] 1.109987e+12 9.000470e+11 1.057801e+12 1.180487e+12 1.201094e+12
## [41] 1.274444e+12 1.315356e+12 1.171870e+12 1.078493e+12 1.158912e+12
## [46] 1.222406e+12 1.269010e+12 1.090515e+12 1.272839e+12 1.414187e+12
## attr(,"label")
## [1] GDP (current US$)
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)
modelo1 <- auto.arima(serie_tiempo1, D=1)
modelo1
## Series: serie_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_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
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)