Ing. Cesar Lopez
2022-11-03
Un Modelo autorregresivo integrado de media móvil (ARIMA), es un modelo estadístico que utiliza variaciones y regresiones de datos estadísticos con el fin de encontrar patrones para una predicción hacia el futuro.
El modelo ARIMA necesita identificar los coeficientes y número de regresiones que se utilizarán. Este modelo es muy sensible a la precisión con que se determinen sus coeficientes.
Se suele expresar como \(ARIMA(p,d,q)\) donde los parámetros p, d y q son números enteros no negativos que indican el orden de las distintas componentes del modelo — respectivamente, las componentes autorregresiva, integrada y de media móvil.
Analicemos la serie de tiempo del par Bitcoin vs Dolar en el marco de 4 horas.
# Limpiamos memoria
rm(list=ls())
# Fijamos semilla
set.seed(198)
# importar base de datos
BTC <- read.csv("BTCUSD240.CSV", header = F)
# Extrayendo mi serie de tiempo
BTC <- BTC[,c(6)]
# Convierto dataframe a serie de tiempo
BTC <- ts(BTC)
head(BTC)## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] 61171.4 60709.2 61721.4 61920.3 61433.7 62191.9
Es importante confirmar la estacionalidad de la serie de tiempo, puesto que si esta no tiene estacionalidad, el modelo de series de tiempo no se puede aplicar. Gráficamente es posible inferir que puede existir estacionalidad.Se debe comprobar analíticamente esta característica. Comprobar si la serie de tiempo es estacionaria se debe aplicar la Prueba Dickey Fuller, es una prueba de hipótesis que verifica si existe estacionalidad en serie analizada, los criterios son:
-Ho: La serie es estacionaria.
-H1: La seria no es estacionaria.
Si el p-valor de la prueba es < 0.05 , se acepta la hipótesis nula.
# Comprobar si la serie de tiempo es estacionaria. Aplicar Prueba Dickey Fuller.
adf.test(BTC, alternative = "stationary")##
## Augmented Dickey-Fuller Test
##
## data: BTC
## Dickey-Fuller = -1.8009, Lag order = 12, p-value = 0.6626
## alternative hypothesis: stationary
El resultado de la prueba es un p-valor superior a 0.05, por lo tanto la serie no es estacionaria.
Una alternativa para convertir la serie a estacionaria, es transformar la variable por medio del logaritmo.
# Comprobar si la serie de tiempo es estacionaria. Aplicar Prueba Dickey Fuller.
BTClog <- log(BTC)
# Graficamos la serie de tiempo transformada
plot(BTClog)##
## Augmented Dickey-Fuller Test
##
## data: BTClog
## Dickey-Fuller = -1.8689, Lag order = 12, p-value = 0.6338
## alternative hypothesis: stationary
Aun con la transformación, no se pudo transformar la serie en estacionaria.
El segundo paso para tratar de transformar la serie a estacionaria, es probar las diferencias.
## Warning in adf.test(BTCdiff, alternative = "stationary"): p-value smaller than
## printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: BTCdiff
## Dickey-Fuller = -13.612, Lag order = 12, p-value = 0.01
## alternative hypothesis: stationary
Se puede comprobar que con una diferencia, la serie se transformó a estacionaria.
Luego, el tercer paso se debe obtener las funciones de auto correlación y de auto correlación parcial, con el fin de saber cuantas medias móviles y cuantos auto regresivos debe tener nuestro modelo final.
# se comienza a ajustar el modelo arima, teniendo en cuenta los rezagos y el numero de auto regresores. Primero se prueba 1 media móvil y 1 rezago.
# función acf. Numero de medias móviles del modelo.
acf(ts(BTCdiff, frequency=1))# Creamos el modelo con 1 diferencia, 1 auto regreso, 1 media móvil
modelo1 <- arima(BTC,order = c(1,1,1))
modelo1##
## Call:
## arima(x = BTC, order = c(1, 1, 1))
##
## Coefficients:
## ar1 ma1
## -0.2087 0.1256
## s.e. 0.1734 0.1756
##
## sigma^2 estimated as 591741: log likelihood = -16507.73, aic = 33021.46
##
## Box-Ljung test
##
## data: residuals(modelo1)
## X-squared = 0.00090429, df = 1, p-value = 0.976
Una vez hecho el diagnostico nos interesa validar la existencia de ruido blanco, esto se analiza gráficamente por la ultima gráfica obtenida anteriormente. Analíticamente, se comprueba con el test Ljung Box, el cual tiene sus hipótesis
-Ho: Hay ruido blanco
-H1: No hay ruido blanco
Si valor p es > 0.05, se acepta la hipotesis nula.
Para nuestro caso, el p-valor obtenido de la prueba es mayor a 0.05, por lo tanto, existe ruido blanco y nuestro modelo se ajusta de la mejor manera.
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2049 41463.57 40477.74 42449.40 39955.87 42971.26
## 2050 41460.75 40123.26 42798.25 39415.23 43506.28
## 2051 41461.34 39837.41 43085.27 38977.75 43944.93
## 2052 41461.22 39596.06 43326.38 38608.70 44313.74
## 2053 41461.24 39382.33 43540.16 38281.82 44640.67
## 2054 41461.24 39188.65 43733.83 37985.62 44936.86
## 2055 41461.24 39010.22 43912.26 37712.73 45209.75
## 2056 41461.24 38843.93 44078.55 37458.42 45464.07
## 2057 41461.24 38687.59 44234.89 37219.32 45703.17
## 2058 41461.24 38539.61 44382.87 36992.99 45929.49
## 2059 41461.24 38398.77 44523.71 36777.59 46144.89
## 2060 41461.24 38264.12 44658.36 36571.67 46350.81
## 2061 41461.24 38134.92 44787.56 36374.08 46548.40
## 2062 41461.24 38010.56 44911.92 36183.88 46738.60
## 2063 41461.24 37890.52 45031.96 36000.30 46922.18
## 2064 41461.24 37774.40 45148.08 35822.70 47099.78
## 2065 41461.24 37661.81 45260.67 35650.52 47271.96
## 2066 41461.24 37552.47 45370.01 35483.30 47439.18
## 2067 41461.24 37446.11 45476.37 35320.63 47601.85
## 2068 41461.24 37342.49 45579.99 35162.16 47760.32
## 2069 41461.24 37241.42 45681.06 35007.58 47914.90
## 2070 41461.24 37142.71 45779.77 34856.62 48065.87
## 2071 41461.24 37046.20 45876.28 34709.03 48213.45
## 2072 41461.24 36951.77 45970.71 34564.60 48357.88
## 2073 41461.24 36859.27 46063.21 34423.13 48499.35
## 2074 41461.24 36768.59 46153.89 34284.45 48638.03
## 2075 41461.24 36679.63 46242.85 34148.40 48774.08
## 2076 41461.24 36592.30 46330.18 34014.83 48907.65
## 2077 41461.24 36506.50 46415.98 33883.62 49038.86
## 2078 41461.24 36422.17 46500.31 33754.64 49167.84
## 2079 41461.24 36339.22 46583.26 33627.79 49294.69
## 2080 41461.24 36257.60 46664.88 33502.96 49419.52
## 2081 41461.24 36177.24 46745.24 33380.05 49542.43
## 2082 41461.24 36098.08 46824.40 33258.99 49663.49
## 2083 41461.24 36020.07 46902.41 33139.69 49782.79
## 2084 41461.24 35943.17 46979.31 33022.07 49900.41
## 2085 41461.24 35867.32 47055.16 32906.07 50016.41
## 2086 41461.24 35792.49 47129.99 32791.63 50130.85
## 2087 41461.24 35718.63 47203.85 32678.67 50243.81
## 2088 41461.24 35645.71 47276.77 32567.15 50355.33
## 2089 41461.24 35573.69 47348.79 32457.01 50465.47
## 2090 41461.24 35502.55 47419.93 32348.20 50574.28
## 2091 41461.24 35432.24 47490.24 32240.68 50681.80
## 2092 41461.24 35362.74 47559.74 32134.39 50788.09
## 2093 41461.24 35294.03 47628.45 32029.30 50893.18
## 2094 41461.24 35226.07 47696.41 31925.38 50997.11
## 2095 41461.24 35158.85 47763.63 31822.57 51099.91
## 2096 41461.24 35092.34 47830.14 31720.84 51201.64