Cargar Librerias

library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(forecast)
library(ggplot2)
library(readxl)
library(TTR)

Importacion de Datos

url="https://raw.githubusercontent.com/vmoprojs/DataLectures/master/pib_ec_const.csv"
gcfgc=read.delim(url,sep=";")
gcfgcs=gcfgc$GCFGC/1000000
gcfgcs_s=ts(gcfgcs,start = c(2000,1),frequency = 4)
plot(gcfgcs_s)

El comportamiento de los datos es de forma aditiva y tiene tendencia creciente.

gcfgcs_sl=log(gcfgcs_s)
plot(gcfgcs_sl)

no vemos un cambio muy significativo al utilizar logaritmo por tal usamos la serie normal.

Gráfico de la Serie

plot(gcfgcs_s,xlab="Años",ylab="Gasto de Consumo final Gobierno General",col="black")

Descomposición de la Serie

gcfgcs_sc=decompose(gcfgcs_s)
plot(gcfgcs_sc)

Modelo de Holt Winters

gcfgcs_hw=HoltWinters(gcfgcs_s, beta=TRUE, gamma=FALSE)
gcfgcs_hwf=predict(gcfgcs_hw,3)
gcfgcs_hwf
##          Qtr1     Qtr2     Qtr3
## 2021 2.433538 2.388777 2.344016
plot(gcfgcs_hw,gcfgcs_hwf)

gcfgcs_sw=HoltWinters(gcfgcs_s)
gcfgcs_sp=predict(gcfgcs_sw,3)
gcfgcs_sp
##          Qtr1     Qtr2     Qtr3
## 2021 2.487703 2.457759 2.439351
plot(gcfgcs_sw,gcfgcs_sp)

Se pronostica que la serie sera decreciente que tendra una bajada amplia.

Serie Estacionaria

adf.test(gcfgcs_s)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  gcfgcs_s
## Dickey-Fuller = -0.79951, Lag order = 4, p-value = 0.958
## alternative hypothesis: stationary

la serie no es estacionaria por que el p-valor es mayor a alfa.

gcfgcs_sd=diff(gcfgcs_s)
adf.test(gcfgcs_sd)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  gcfgcs_sd
## Dickey-Fuller = -2.1053, Lag order = 4, p-value = 0.5327
## alternative hypothesis: stationary
gcfgcs_sds=diff(gcfgcs_sd,4) 
adf.test(gcfgcs_sds)
## Warning in adf.test(gcfgcs_sds): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  gcfgcs_sds
## Dickey-Fuller = -5.1035, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary

el p-valor es menor que alfa. Por tanto se procede a realizar el modelo de mejor ajuste. La prueba de Dickey Fuller de la serie en diferencia regular y estacional es estacionario, porque el p-valor es menor que alfa. Por tanto se procede a realizar el modelo de mejor ajuste.

Modelo de mejor ajuste SARIMA

acf(gcfgcs_sds,main="función de autocorrelación")

Se observa en la función de autocorrelación ningun resago de forma significativa en la parte regular (MA(0)).

pacf(gcfgcs_sds,main="función de autocorrelación parcial")

Además en la función de autocorrelación parcial se observa igualmente ningun resago significativo en la parte regular (AR(0))

mod1 = arima(gcfgcs_s, order=c(0,1,0), seasonal=list(order=c(0,1,0), period=4))
mod1
## 
## Call:
## arima(x = gcfgcs_s, order = c(0, 1, 0), seasonal = list(order = c(0, 1, 0), 
##     period = 4))
## 
## 
## sigma^2 estimated as 0.004105:  log likelihood = 104.98,  aic = -207.95
Box.test(gcfgcs_s,lag = 4,type = "Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  gcfgcs_s
## X-squared = 321.57, df = 4, p-value < 2.2e-16
mod1
## 
## Call:
## arima(x = gcfgcs_s, order = c(0, 1, 0), seasonal = list(order = c(0, 1, 0), 
##     period = 4))
## 
## 
## sigma^2 estimated as 0.004105:  log likelihood = 104.98,  aic = -207.95
#Modelos SARIMA candidatos
mod2 = arima(gcfgcs_s, order = c(0,1,0), seasonal = list(order=c(0,1,0), period=4))
mod3 = arima(gcfgcs_s, order = c(0,1,1), seasonal = list(order=c(0,1,0), period=4))
mod4 = arima(gcfgcs_s, order = c(1,1,1), seasonal = list(order=c(0,1,0), period=4))
mod5 = arima(gcfgcs_s, order = c(1,1,0), seasonal = list(order=c(0,1,0), period=4))

#comparamos aic 
mod1$aic
## [1] -207.953
Box.test(mod1$residuals)
## 
##  Box-Pierce test
## 
## data:  mod1$residuals
## X-squared = 3.0979, df = 1, p-value = 0.0784
mod2$aic
## [1] -207.953
Box.test(mod2$residuals)
## 
##  Box-Pierce test
## 
## data:  mod2$residuals
## X-squared = 3.0979, df = 1, p-value = 0.0784
mod3$aic
## [1] -208.9454
Box.test(mod3$residuals)
## 
##  Box-Pierce test
## 
## data:  mod3$residuals
## X-squared = 5.8469e-05, df = 1, p-value = 0.9939
mod4$aic
## [1] -208.2261
Box.test(mod4$residuals)
## 
##  Box-Pierce test
## 
## data:  mod4$residuals
## X-squared = 0.15565, df = 1, p-value = 0.6932
mod5$aic
## [1] -208.8473
Box.test(mod5$residuals)
## 
##  Box-Pierce test
## 
## data:  mod5$residuals
## X-squared = 0.0070293, df = 1, p-value = 0.9332