Загрузка данных

Ряд данных (IM_T_M) содержит месячные показатели импорта товаров.

IM <- sophisthse("IM_T_M")
IM <- IM[, 'IM_T_M']

Анализ ряда данных

dygraph(IM, main = "Импорт товаров",
        xlab = "Год", 
        ylab = "млрд. долл.") %>%
  dyLegend(show = "follow") %>%
  dyRangeSelector()

Дать точные выводы сложно.

Во-первых, по графику можно отследить мультипликативную сезонность. Во-вторых, наблюдается тренд с несколькими резкими падениями. Первый из них скорее всего вызван кризисом в стране (приходится на конец 2008 - начало 2009). Второй, вероятно, связан с санкциями (конец 2014 - начало 2015).

Сейчас главная задача - спрогнозировать показатели импорта товаров на ближайшие 5 лет, для чего нужно выбрать подходящую модель.

Выбор модели прогнозирования

Наиболее корректно ограничить обучающий период 2017 годом. Для начала оценим, какая модель подбирается автоматический: мультипликативная ошибка, аддитивный тренд и мультипликативная сезонность.

IM_ob <- window(IM, end = c(2017, 6))
IM_test <- window(IM, start = c(2017, 7))
autoplot(forecast(ets(IM_ob), h = 15), PI = F) + autolayer(IM_test)

Вывод: модель не совпадает с тестовым периоде на половине временного интервала. Более того, сезонность на последнем этапе склоняется к аддитивному, нежели мультипликативному. Попробуем скорректировать:

IM_1 <- forecast(ets(IM_ob, model = 'ZAA', damped = F ), h = 15)
IM_2 <- forecast(ets(IM_ob, model = 'ZAA', damped = T ), h = 15)
IM_3 <- forecast(ets(IM_ob, model = 'ZMZ', damped = F ), h = 15)
IM_4 <- forecast(ets(IM_ob, model = 'ZMZ', damped = T ), h = 15)

autoplot(IM_1, PI = F, series = "ZAA") + 
  autolayer(IM_2, PI = F, series = "ZAdA") +
  autolayer(IM_3, PI = F, series = "ZMZ") + 
  autolayer(IM_4, PI = F, series = "ZMdZ") +
  autolayer(IM_test, series = "test")

Визуально результаты модели различаются, но ни одна не повторяет тестовый период в точности. Проанализируем ошибки моделей.

rbind(accuracy(IM_1),
      accuracy(IM_2), 
      accuracy(IM_3), 
      accuracy(IM_4)) %>%
  as_tibble() %>%
  round(4) %>%
  mutate(`Метод` = c('ZAA', 
                     'ZAdA', 
                     'ZMZ', 
                     'ZMdZ')) %>%
  select(`Метод`, ME, MAPE, MPE) 
## # A tibble: 4 x 4
##   Метод      ME  MAPE     MPE
##   <chr>   <dbl> <dbl>   <dbl>
## 1 ZAA   -0.063   8.12 -1.73  
## 2 ZAdA   0.0919  9.03 -0.0042
## 3 ZMZ   -0.0546  5.89 -0.659 
## 4 ZMdZ   0.0245  5.84 -0.118

Наиболее привлекательно выглядит модель с мультипликативным затухающим трендом, так как показатели ошибок по части покозателей минимальны: ME и MAPE.

autoplot(IM_4, PI = F, series = "ZMdZ") +
  autolayer(IM_test, series = "test")  +
  labs(title = "Модель с мультипликативным трендом")

Таким образом, мы используем модель: c мультипликативной ошибкой, мультипликативным затухающим трендом и мультипликативной сезонностью.

info <- ets(IM_ob, model = 'ZMZ', damped = T)
summary(info)
## ETS(M,Md,M) 
## 
## Call:
##  ets(y = IM_ob, model = "ZMZ", damped = T) 
## 
##   Smoothing parameters:
##     alpha = 0.8389 
##     beta  = 0.0119 
##     gamma = 0.1587 
##     phi   = 0.9685 
## 
##   Initial states:
##     l = 3.9024 
##     b = 1.0193 
##     s = 1.1077 0.9938 0.9909 0.9945 1.0247 1.0829
##            1.074 0.9909 0.9886 1.0202 0.9227 0.8092
## 
##   sigma:  0.0772
## 
##      AIC     AICc      BIC 
## 1471.137 1473.738 1536.691 
## 
## Training set error measures:
##                      ME     RMSE       MAE        MPE     MAPE      MASE
## Training set 0.02453962 1.088085 0.7105914 -0.1180449 5.835485 0.2432915
##                     ACF1
## Training set -0.06695391

Прогноз на 5 лет

IM_F <- forecast(ets(IM, model = 'ZMZ', damped = T ), h = 60)
autoplot(IM_F) + 
  labs(title = "Прогноз импорта на 5 лет")

Можно заметить, что доверительный интервал широк, что дает большой разброс возможных значений. Это делает прогноз неточным.