library(readxl)
library(fpp2)
## Loading required package: ggplot2
## Loading required package: forecast
## Warning: package 'forecast' was built under R version 3.5.2
## Loading required package: fma
## Loading required package: expsmooth
## I choose the data of monthly att returns
att.return <- data.frame(read_excel("monthly-returns-for-att-jan-1961.xls"))
training_data <-att.return[1:78,]
test_data <- att.return[79:84,]
train <- ts(training_data, start = c(1961,1),frequency = 12)
test <- ts(test_data, start = c(1967,7),frequency = 12)
str(test)
## Time-Series [1:6, 1:2] from 1968 to 1968: -79056000 -76377600 -73699200 -71107200 -68428800 ...
## - attr(*, "dimnames")=List of 2
## ..$ : NULL
## ..$ : chr [1:2] "Month" "Monthly.returns.for.AT.T..Jan.1961.through.Dec..1967"
fit.arima <- auto.arima(train[,2])
checkresiduals(fit.arima)

##
## Ljung-Box test
##
## data: Residuals from ARIMA(0,0,0) with zero mean
## Q* = 17.823, df = 15.6, p-value = 0.3089
##
## Model df: 0. Total lags used: 15.6
summary(fit.arima)
## Series: train[, 2]
## ARIMA(0,0,0) with zero mean
##
## sigma^2 estimated as 0.001535: log likelihood=142.01
## AIC=-282.03 AICc=-281.97 BIC=-279.67
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.004560128 0.03917893 0.03110859 100 100 0.7372313
## ACF1
## Training set -0.01761066
arima_fc <- forecast(fit.arima, h = 6)
round(accuracy(arima_fc, test[,2]),5)
## ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
## Training set 0.00456 0.03918 0.03111 100 100 0.73723 -0.01761 NA
## Test set -0.01606 0.03800 0.02576 100 100 0.61048 -0.01392 0.53372
fit.ets <- ets(train[,2])
checkresiduals(fit.ets)

##
## Ljung-Box test
##
## data: Residuals from ETS(A,N,N)
## Q* = 17.824, df = 13.6, p-value = 0.1938
##
## Model df: 2. Total lags used: 15.6
summary(fit.ets)
## ETS(A,N,N)
##
## Call:
## ets(y = train[, 2])
##
## Smoothing parameters:
## alpha = 1e-04
##
## Initial states:
## l = 0.0046
##
## sigma: 0.0394
##
## AIC AICc BIC
## -160.6129 -160.2886 -153.5428
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -1.207961e-05 0.03891459 0.03122814 -Inf Inf 0.7400644
## ACF1
## Training set -0.01762067
ets_fc <- forecast(fit.ets, h = 6)
round(accuracy(ets_fc,test[,2]),5)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.00001 0.03891 0.03123 -Inf Inf 0.74006 -0.01762
## Test set -0.02062 0.04014 0.02649 57.76949 86.39559 0.62779 -0.01392
## Theil's U
## Training set NA
## Test set 0.50711
I think ETS has lower AICc, but Arima has perform better in terms of accuracy. What do you think?