En este laboratorio vamos a pronosticar el PIB por medio de series de tiempo de una base de datos, el país a pronostricar es Australia.
Para hacerlo, iniciamos con cargar las librerías, seguido de convertir la base de datos a una serie de tiempo y revisar la estructura de la base de datos.Después, por medio de la prueba de Dickey-Fuller analizaremos si el modelo de la serie de tiempo es estacionario y si no es estacionario, se usará una diferenciación. Para ver si la serie de tiempo es estacionaria revisaremos si el p-value < 0.05.
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(seasonal)
library(tseries)
library(readxl)
#Cargar el archivo
BD <- read_excel(file.choose(), sheet = 1)
data <- ts(BD$Australia, frequency = 1)
str(data)
## Time-Series [1:61] from 1 to 61: 2.48 1.29 6.22 6.98 5.98 ...
#Prueba de Dickey-Fuller
plot(data)
tseries::adf.test(data)
##
## Augmented Dickey-Fuller Test
##
## data: data
## Dickey-Fuller = -3.1468, Lag order = 3, p-value = 0.111
## alternative hypothesis: stationary
Como se puede observar en la gráfica no es completamente estacionaria. Además, el resultado del p-value de la prueba de dickey-fuller es mayor a 0.05, por lo tanto no es estacionaria, para eso haremos una una diferenciación con el objetivo de convertir la serie de tiempo en estacionaria.
#Primera Diferenciación
diff_ts<-diff(data)
tseries::adf.test(diff_ts)
## Warning in tseries::adf.test(diff_ts): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff_ts
## Dickey-Fuller = -6.8821, Lag order = 3, p-value = 0.01
## alternative hypothesis: stationary
plot(diff_ts)
Al hacer la diferenciación se puede observar que el p-value ya es menor a 0.05 entonces la serie de tiempo ya es estacionaria.
A continuación se visualizará la gráfica ACF y PACF.
acf(diff_ts)
pacf(diff_ts)
Debemos de tomar en cuenta que:
Para este caso, es funcional el inciso no. 2
modelo1 = arima(data, order=c(1,1,1))
modelo2 = arima(data, order=c(1,1,2))
modelo3 = arima(data, order=c(1,1,3))
modelo1$aic
## [1] 241.056
modelo2$aic
## [1] 242.9729
modelo3$aic
## [1] 244.9777
Usamos el modelo arima que tenga el resultado menor, en este caso es el menor es el modelo No. 1
A continuación se muetra el pronóstico de la serie de tiempo del PIB de Australia.
checkresiduals(modelo1$residuals)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.
Box.test(modelo1$residuals, type="Ljung-Box")
##
## Box-Ljung test
##
## data: modelo1$residuals
## X-squared = 0.0019246, df = 1, p-value = 0.965
a<-forecast::forecast(modelo1)
plot(a)
El modelo por medio de la prueba de Box-Ljung test nos dice que los valores de la serie de tiempo no son auto correlacionados, debido a que su p-value es mayor a 0.05.