library(readxl)
## Warning: package 'readxl' was built under R version 4.5.1
library(forecast)
## Warning: package 'forecast' was built under R version 4.5.1
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(tseries)
## Warning: package 'tseries' was built under R version 4.5.1
url = "https://raw.githubusercontent.com/vmoprojs/DataLectures/master/pib_ec_const.csv"
datos = read.delim(url, sep = ";")
OF = datos$OF / 1000000
OF_ts = ts(OF, start = c(2000,1), frequency = 4)
plot(OF_ts, main="Oferta Final en millones", ylab="Millones", col="blue")
OF_log = log(OF_ts)
plot(OF_log, main="OF en logaritmos", col="darkgreen")
Podemos ver que la varianza de la serie crece a medida que aumenta el
nivel por lo que se comporta de forma multiplicativa.
adf.test(OF_log)
## Warning in adf.test(OF_log): p-value greater than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: OF_log
## Dickey-Fuller = -0.12106, Lag order = 4, p-value = 0.99
## alternative hypothesis: stationary
El resultado muestra un p-valor=0.99 lo cual es mayor a p-valor= 0.05 lo que significa que la serie no es estacionaria.
OF_diff = diff(OF_log, differences=1)
plot(OF_diff, main="OF en primera diferencia logarítmica")
adf.test(OF_diff)
## Warning in adf.test(OF_diff): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: OF_diff
## Dickey-Fuller = -4.4201, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
vemos que p.valor= 0,01 lo cual es menor a p-valor= 0.05 indicando que la serie ya es estacionaria.
modelo_sarima = auto.arima(OF_log, trace=TRUE)
##
## ARIMA(2,2,2)(1,0,1)[4] : -368.4251
## ARIMA(0,2,0) : -327.8621
## ARIMA(1,2,0)(1,0,0)[4] : -351.2517
## ARIMA(0,2,1)(0,0,1)[4] : -375.7921
## ARIMA(0,2,1) : -377.6954
## ARIMA(0,2,1)(1,0,0)[4] : -375.8806
## ARIMA(0,2,1)(1,0,1)[4] : -374.961
## ARIMA(1,2,1) : -375.5891
## ARIMA(0,2,2) : -375.5894
## ARIMA(1,2,0) : -352.2632
## ARIMA(1,2,2) : -373.6416
##
## Best model: ARIMA(0,2,1)
modelo_sarima
## Series: OF_log
## ARIMA(0,2,1)
##
## Coefficients:
## ma1
## -0.9382
## s.e. 0.0363
##
## sigma^2 = 0.0005487: log likelihood = 190.92
## AIC=-377.85 AICc=-377.7 BIC=-373.03
modelo_hw = HoltWinters(OF_ts)
modelo_hw
## Holt-Winters exponential smoothing with trend and additive seasonal component.
##
## Call:
## HoltWinters(x = OF_ts)
##
## Smoothing parameters:
## alpha: 0.9536581
## beta : 0.04172012
## gamma: 0
##
## Coefficients:
## [,1]
## a 21.51670779
## b 0.02543058
## s1 0.03615612
## s2 -0.07307662
## s3 -0.03822075
## s4 0.07514125
plot(modelo_hw, main="Modelo Holt-Winters para OF (millones)")
Los valores mas altos se pueden observar en los ultimos trimestres de
losultimos años y los valores mas bajos se encuentran en los primeros
años entre 2000 a 2003.
pred_of = forecast(modelo_sarima, h=4)
plot(pred_of, main="Predicción SARIMA OF (millones)")
pred_of
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2021 Q1 3.072679 3.042658 3.102699 3.026766 3.118591
## 2021 Q2 3.072197 3.028409 3.115984 3.005229 3.139164
## 2021 Q3 3.071715 3.016440 3.126990 2.987179 3.156251
## 2021 Q4 3.071233 3.005491 3.136975 2.970689 3.171777
El pronostico de los proximos 4 trimestres indica que la oferta final (OF) seguira en tendencia creciente,donde sugiere estabilidad en el crecimiento aunque con cierta incertidumbre natural