Соответственно, он называется CPI_M,
ну мы просто скопируем название.
Так, давайте мы его
загрузим в ряд данных y,
sophisthse и вот здесь мы вставим это название.
Как всегда сначала построим график.
Что у нас на графике?
Ой, tsdisplay.
Что мы видим?
Что этот цепной
индекс менялся следующим образом: вот сначала он был очень большой,
сначала была какая-то большая инфляция, то есть можно посмотреть, здесь есть
маленький нюанс: y реализован как объект пакета zu.
И, к сожалению, из-за большого количества пакетов, написанных в R,
одни пакеты читают какие-то характеристики рядов из других, другие нет,
но вот tsdisplay не прочитала автоматом годы, давайте тут попробуем
упростить немножко наш объект, немножко изменить,
представим его как не как объект класса zu, а как объект класса временной ряд,
тогда у нас появятся годы на оси x.
И вот мы видим, что до начала, ну вот до 2000-ных у нас тут были и
какие-то совершенно сумашедшие уровни индекса потребительских цен,
очень большая инфляция, поэтому ну вот разумно отобрать и посмотреть на
увеличенном масштабе с 2000-го года, чтобы у нас ряд
представлял себе уже какую-то более однородную зависимость.
Соответственно, посмотрим на наш ряд y,
значит у нас 2000-й год начинается с
вот январь 2000-го года — это 97-е наблюдение.
Соответственно, давайте отберем в ряд ym ну,
скажем, более условно современные y, это наш ряд y,
с которого отобрали наблюдения, начиная с 97-го по
количество строк в ряду y, ну вот скажем столбики отобрали все.
И теперь построим график для
ряда ym.
Соответственно, это тот же ряд,
только я отобрал из этого ряда последние y,
начиная индекса цен, начиная с 2000-го года.
Что я вижу на этом графике?
На этом графике я вижу очень интересную структуру.
Обратите внимание, совершенно какая-то странная структура автокорреляционной
функции, она как-бы идет циклами.
Давайте посмотрим, где приходится максимум этих циклов.
И максимум, если присмотреться, приходится на 12.
Это означает, что показатель 12 шагов назад очень
сильно влияет на текущий показатель.
И это логично, потому что данные, которые мы скачали,
если внимательно почитать, они были месячные.
Соответственно, это означает, что январь,
индекс цен января этого года он похож на индекс цен января прошлого года.
И это логично, потому что хотя есть какая-то общая тенденция: если сегодня
были там высокие цены, то в следующем месяце, наверное,
они сохранятся, вряд ли они резко поменяются, но тем не менее,
январь одного года похож на январь другого года.
То есть мы здесь сталкиваемся с таким явлением,
которое заслуживает отдельного изучения, как сезонность.
Ну мы не будем, конечно, всерьез заниматься сезонностью, но просто покажем,
что, во-первых, мы ее увидели на автокорреляционной функции,
если посмотреть функцию 12 шагов назад и 24 шага назад,
то показатель 12 шагов назад и 24 шага назад сильно влияет на текущий,
и то же самое видно по частной автокорреляционной функции.
Поэтому в эту модель логично включить не только yt как в зависимости yt – 1,
но логично включить в модель для yt коэффициент
при yt – 12 и коэффициент при εt – 12.
И это называется сезонной моделью ARIMA.
Ну, к счастью, в R это сделать очень легко.
Нам достаточно просто написать что мы построим нашу
модель 1 — это будет сезонная модель,
то есть мы построим ARIMA модель для ряда ym, скажем,
я возьму простую сезонную модель, это будет AR(1),
но с еще одной сезонной составляющей 12 шагов назад.
То есть я возьму AR(1), как предложил,
и возьму еще сезонную составляющую seasonal = c (1, 0, 0).
То есть что означает эта запись?
Это означает, что у меня будет yt зависеть от yt – 1 и от yt – 12.
Поскольку компьютер знает, что это ряды месячные, то вот эту единичку
сезонную он понимает как аналогичный сезон, но предыдущего года.
Давайте оценим такую модель,
посмотрим на summary по модели 1,
и здесь вот у нас есть
как средний индекс,
так же есть AR(1) — это означает как коэффициент при
зависимости yt от yt – 1, и есть сезонный AR(1) коэффициент,
то есть это коэффициент при зависимости yt от yt – 12.
И вот здесь видно, что компьютер сам распознал,
что здесь периодичность 12 месяцев в год, то есть, соответственно,
мы у этой модели можем посчитать критерий AIC — штрафной
критерий для сравнения с другими моделями, можем построить прогнозы,
и вот здесь мы увидим, что прогнозы они будут уже учитывать сезонность,
и будут не такими, возможно, тривиальными и ожидаемыми как для случайного блуждания.
Давайте построим прогноз forecast по модели 1, ну,
скажем, на год вперед, на 12 месяцев вперед.
Мы строим прогнозы для цепных индексов цен,
и изображаем наши прогнозы plot (prognoz_1).
И здесь в силу того,
что мы учитывали сезонность, вот мы видим
прогноз уже нетривиальный, не просто убывает вниз,
не просто убывает вверх, а он чем-то похож на структуру каждого года.
Вот здесь вначале вниз, потом вверх, здесь то же самое: вначале большой вверх,
потом вниз, то есть вот эта структура динамики индекса потребительских
цен цепного месячного — она у нас оказывается и в нашем прогнозе.
И, соответственно, с доверительным интервалом 80 % и 95 %.
Соответственно, вот чего мы ждем от месячного уровня цен
— цепного коэффициента.
И опять же можно попросить компьютер автоматически выбрать модель,
поскольку здесь уже можно выбирать и лаги по AR-части и лаги по
MA-части и сезонные лаги, то есть можно yt – 12,
yt – 24, εt – 12, εt – 24.
Опять же можно рассматривать, переходить к Δyt.
Ну и давайте попробуем подобрать автоматическую модель,
model, которая минимизирует критерий Акаике,
Arima(ym) и посмотреть прогнозы по автоматической модели,
насколько они сильно отличаются от простой нашей.
Model_a, здесь тоже исправим индекс модель a.
А, я не подобрал модели, надо было написать auto.arima (ym),
по умолчанию оценилась.
И, соответственно, вот у нас прогноз по автоматически
оцененный по минимальному AIC модели ARIMA.
Видите, это сложная модель, здесь ряд признан нестационарным, то есть идет Δyt,
три лага по AR-части, один лаг по MA-части, два сезонных лага по AR-части,
один сезонный лаг по MA- части, то есть это сложный процесс, но, тем не менее,
вот он как-то автоматически оценивается и можно прогнозировать.