##Rodrigo DomÃnguez
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(seasonal)
library(tseries)
library(readxl)
datos <- read_excel(file.choose(), sheet = 2)
datos <- data.frame(datos)
str(datos)
## 'data.frame': 61 obs. of 2 variables:
## $ ts : chr "1960" "1961" "1962" "1963" ...
## $ GDP: num 4.98 5.21 4.35 6.96 3.56 ...
head(datos)
## ts GDP
## 1 1960 4.978423
## 2 1961 5.212004
## 3 1962 4.351584
## 4 1963 6.956685
## 5 1964 3.560660
## 6 1965 3.155895
data <- ts(datos$GDP,frequency =1 )
plot(data)
tseries::adf.test(data)
##
## Augmented Dickey-Fuller Test
##
## data: data
## Dickey-Fuller = -3.2283, Lag order = 3, p-value = 0.09141
## alternative hypothesis: stationary
diff_ts<-diff(data)
tseries::adf.test(data)
##
## Augmented Dickey-Fuller Test
##
## data: data
## Dickey-Fuller = -3.2283, Lag order = 3, p-value = 0.09141
## alternative hypothesis: stationary
plot(diff_ts)
diff_ts2<-diff(diff_ts)
plot(diff_ts2)
acf(diff_ts) #2
pacf(diff_ts) #1
# 1 1 2
# 2 1 2
modelo1 = arima(data, order=c(2,1,1))
modelo2 = arima(data, order=c(2,1,1))
summary(modelo1)
##
## Call:
## arima(x = data, order = c(2, 1, 1))
##
## Coefficients:
## ar1 ar2 ma1
## -0.2402 0.0051 -0.7854
## s.e. 0.1751 0.1844 0.1158
##
## sigma^2 estimated as 4.163: log likelihood = -128.6, aic = 265.2
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.35559 2.023498 1.39713 -2.787935 103.891 0.7224464 -0.05497848
summary(modelo2)
##
## Call:
## arima(x = data, order = c(2, 1, 1))
##
## Coefficients:
## ar1 ar2 ma1
## -0.2402 0.0051 -0.7854
## s.e. 0.1751 0.1844 0.1158
##
## sigma^2 estimated as 4.163: log likelihood = -128.6, aic = 265.2
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.35559 2.023498 1.39713 -2.787935 103.891 0.7224464 -0.05497848
modelo1$aic
## [1] 265.2032
modelo2$aic
## [1] 265.2032
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.1936, df = 1, p-value = 0.6599
a<-forecast::forecast(modelo1)
plot(a)
```