library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(forecast)
library(ggplot2)
library(readxl)
library(TTR)
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.
plot(gcfgcs_s,xlab="Años",ylab="Gasto de Consumo final Gobierno General",col="black")
gcfgcs_sc=decompose(gcfgcs_s)
plot(gcfgcs_sc)
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.
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.
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