2022-08-13

Qué son las series de tiempo

También conocidas como series temporales corresponden a una sucesión de datos medidos en determinados momentos y ordenados cronológicamente

La serie de tiempo retrata la historia detras de una variable, siendo de esta forma posible general pronósticos a futuro.

Fig. 1 Ejemplo serie de tiempo

Aplicaciones

  • Las tasas mensuales de desempleo durante los ultimos cinco años.

  • Producción diaria en una fabrica de manufactura durante un mes.

  • La población mundial década por década en los ultimos dos siglos

    Fig. 2 Ejemplo serie de tiempo

Clasificación

  • Linealidad:
    • Lineale
    • No lineal
  • Número de variables:
    • Univariable
    • Multivariable
  • Estacionalidad:
    • Estacionaria: se presenta cuando la serie de tiempo converge a una medida constante
    • No estacionaria: presenta un patrón de crecimiento o decrecimiento en el tiempo (hay tendencia)

Clasificación

Fig. 3 distintas series de tiempo

Modelos de predicción

  • Winters
  • Promedio móvil ponderado
  • Suavizamiento exponencial individual y móvil
  • ARIMA

Modelo ARIMA

El modelo Autorregresivo Integrado de Media Móvil (ARIMA) o metodología de previsión de Box-Jenkins tiene en cuenta los patrones de tendencia, estacionalidad y de media móvil. De esta forma garantiza que el futuro de una variable se comportará como su pasado. \[AR(p) \rightarrow y_{t}=\phi _{1}y_{t-1}+\phi _{2}y_{t-2}+...+\phi _{p}y_{t-p}+\varepsilon _{t}\] \[MA(q) \rightarrow y_{t}= \varepsilon _{t}+\theta_{1} \varepsilon _{t-1}+\theta_{2} \varepsilon _{t-2}+...++\theta_{q} \varepsilon _{t-q}\]

Cómo funciona

  1. Identificación y selección del modelo:
  • A través de la representación grafica de la serie y con la función de autocorrelación simple (ACF) y función de autocorrelación parcial (PACF).
  1. Estimación de parámetros autorregresivos (AR), integración o diferenciación (I) y promedio móvil (MA).
  • AR (p): indica la parte del valor de la variable que depende de los valores anteriores de la serie
  • I (I): corrige la falta de estacionariedad a través de la diferenciación.
  • MA (q): número de periodos a tener en cuenta al hacer la predicción

Comprobación del modelo

  • La grafica de residuales estandarizados debe mostrar patrones aleatorios, así mismo se debe cumplir que haya misma cantidad de puntos por encima y por debajo de la media.
  • Los coeficientes de correlación de los residuales deben estar entre unos limites.
  • Todos los residuales P de Ljung-Box deben estar por encima de 0.05.

Por qué ARIMA

  • Gran exito en la predicción.
  • Los conceptos que se utilizan para la modelación ARIMA,se derivan de sólidas teorías de la probabilidad clásica y de la estadística matemática.
  • BoxyJenkins desarrollaron una completa estrategia que sirve de guía para escoger un apropiado modelo dentro de esta gama de modelos

Ejemplo

library(readxl)
library(lubridate)
library(tseries)
library(lubridate)
library(tidyverse)
library(forecast)

petroleol<-read_excel("~/Slide/petroleo1.xls")
View(petroleol)
attach(petroleol)
petroleo=petroleol
petroleo.ts=ts(petroleo,start=2013,frequency=12)

Ejemplo

Ejemplo ARIMA

library(readxl)
Arimar<-read_excel("~/Slide/ArimaR.xlsx")
Arimar.ts=ts(Arimar, start=c(2013,1), frequency = 12)
class(Arimar.ts)
[1] "ts"
start(Arimar.ts)
[1] 2013    1
end(Arimar.ts)
[1] 2020    3

Ejemplo ARIMA

  plot(Arimar.ts,  main="Serie de tiempo", ylab="Precio", col="red")

serielog=log(Arimar.ts)
  plot(serielog)

Ejemplo ARIMA

serielog=log(Arimar.ts)
plot(serielog)

Ejemplo ARIMA

ndiffs(Arimar.ts)
[1] 1
#Paso 2.Prueba de DickeyFuller

adf.test(Arimar.ts)
    Augmented Dickey-Fuller Test

data:  Arimar.ts
Dickey-Fuller = -1.6185, Lag order = 4, p-value = 0.7328
alternative hypothesis: stationary
seriedif=diff(Arimar.ts)
acf(seriedif)

ndiffs(seriedif)
[1] 0
adf.test(seriedif)
    Augmented Dickey-Fuller Test

data:  seriedif
Dickey-Fuller = -3.3327, Lag order = 4, p-value = 0.07162
alternative hypothesis: stationary

#Prueba de Dickey Fuller con dos diferencias


seriedif2=diff(Arimar.ts, differences =2)
plot(seriedif2)

adf.test(seriedif2)
    Augmented Dickey-Fuller Test

data:  seriedif2
Dickey-Fuller = -5.1673, Lag order = 4, p-value = 0.01
alternative hypothesis: stationary
#Paso 4: Analisis visual de las graficas


plot(seriedif2, type="o", lty="dashed",main="Serie de Tiempo",col="red")

par(mfrow=c(2,1), mar=c(4,4,4,1)+.1)
acf(seriedif2)
pacf(seriedif2)

acf(ts(seriedif2, frequency=1))
pacf(ts(seriedif2, frequency=1))

#Modelo Arima

modelo1=arima(Arimar.ts,order=c(1,2,1))
summary(modelo1)
Call:
arima(x = Arimar.ts, order = c(1, 2, 1))

Coefficients:
         ar1     ma1
      0.4173  -1.000
s.e.  0.1100   0.047

sigma^2 estimated as 17.51:  log likelihood = -244.07,  aic = 494.14

Training set error measures:
                     ME     RMSE      MAE        MPE     MAPE      MASE
Training set -0.1842755 4.136183 3.135096 -0.2061955 6.279221 0.9152235
                    ACF1
Training set -0.02472726
tsdiag(modelo1)

Box.test(residuals(modelo1),type="Ljung-Box")
    Box-Ljung test

data:  residuals(modelo1)
X-squared = 0.055051, df = 1, p-value = 0.8145
error=residuals(modelo1)
plot(error)

#Pronosticos Arima
pronostico=forecast::forecast(modelo1,h=10)
pronostico
         Point Forecast       Lo 80    Hi 80      Lo 95    Hi 95
Apr 2020      21.856654  16.4633719 27.24994  13.608341 30.10497
May 2020      18.398192   8.9934192 27.80296   4.014833 32.78155
Jun 2020      16.445341   3.6136910 29.27699  -3.178974 36.06966
Jul 2020      15.120795  -0.6776994 30.91929  -9.040917 39.28251
Aug 2020      14.058445  -4.3652157 32.48211 -14.118113 42.23500
Sep 2020      13.105513  -7.6904599 33.90149 -18.699183 44.91021
Oct 2020      12.198241 -10.7797404 35.17622 -22.943549 47.34003
Nov 2020      11.310024 -13.7033148 36.32336 -26.944576 49.56462
Dec 2020      10.429758 -16.5031190 37.36264 -30.760523 51.62004
Jan 2021       9.552811 -19.2060240 38.31165 -34.430032 53.53565
plot(pronostico)

#Pronosticos Arima
pronostico=forecast::forecast(modelo1,h=10)
plot(pronostico)

Bibliografía