0:13
Перейдем к следующему примеру с экономическим содержанием,
а именно примеру со стоимостью акций компаний Google.
Давайте сначала мы загрузим эти данные из Интернета.
Тут на некоторых компьютерах нужно небольшое шаманское
заклинание sys.setlocale ("LC_TIME"), то есть
на некоторых компьютерах сработает без проблем, но на некоторых вот потребуется
такое маленькое шаманское заклинание с установкой locale для времени.
Но это связано с тем эффектом, что даты на разных
языках называются по-разному, иногда не происходит автоматического распознавания.
Здесь мы установили так, что у нас будет английский стандарт для дат,
времени и так далее.
И после этого мы можем с помощью функции getsymbols,
которая входит в пакет quantmod,
мы можем получить данные по акции компании Google.
Ну, скажем, возьмем за какой-нибудь период с 2014-го, пусть будет 01-01,
ну давайте возьмем to="2014-
12-01".
Ну то есть за 11 месяцев.
Соответственно, давайте посмотрим на то,
что у нас все загрузилось, head (GOOG).
И вот у нас есть данные по цене открытия, максимальной цене, минимальной цене,
закрытия, объем торгов и цене, скорректированной на выплату дивидендов.
Ну поскольку мы моделируем одномерные временные ряды,
то из этих показателей давайте возьмем цену закрытия.
То есть мы назовем переменную y, наша переменная y — это из набора данных GOOG.
Мы выберем GOOG.close.
Так, вот теперь у нас есть одномерный временной ряд y.
И мы к нему применим наш стандартный подход — сначала построим три графика.
tsdisplay (y).
2:39
И на этот раз мы видим типичное случайное блуждание.
Вот этот график — прям как будто мы его сгенерировали
случайным блужданием искусственно.
Во-первых, если ряд находится высоко, то сегодняшнее значение очень похоже на
вчерашнее, если ряд находится низко, сегодняшнее значение похоже на вчерашнее.
Медленно убывающей обычной автокорреляционной функции,
он до конца так, в доверительный интервал так и не вошли.
И одна частная автокорреляционная функция не нулевая, остальные нулевые.
Типичный график для случайного блуждания.
Чтобы лишний раз убедиться в этом, давайте сами возьмем разности,
то есть построим те же самые показатели для delta y.
Напишем, что dy — это diff (y),
то есть dy — это разница между сегодняшней ценой акции Гугла и вчерашней.
Перейдем к delta и построим тот же самый график для dy.
И тут мы увидим, что у нас достаточно,
несмотря на то, что у нас достаточно длинный временной ряд,
порядка 200 наблюдений, у нас получается, что нету у него, все автокорреляции
равны 0 и частные автокорреляции тоже, в принципе, все равны 0.
То есть это говорит о том, что этот ряд — это белый шум.
То есть исходный ряд был у нас процессом случайного блуждания.
Ну и тем не менее мы можем попробовать оценить какие-нибудь модели.
Пусть будет модель_1, соответственно 1-я модель, мы предполагаем,
что это случайное блуждание, Arima для ряда y.
И мы предполагаем, что порядок: 0, 1, 0.
То есть это — модель чистого случайного блуждания.
Можно посмотреть, конечно, четкую модель_1,
но на самом деле здесь в модели_1 нет даже никаких коэффициентов, не оценивалось.
Нет ни коэффициента при AR-части, ни коэффициента при МА-части.
Есть только sigma квадрат с крышкой оцененное, это дисперсия.
И соответственно, при прогнозировании по такой модели,
естественный прогноз будет выглядеть, что завтрашний показатель такой же, как вчера,
но оценка модели, помимо этого тривиального ответа,
она мне еще даст доверительный интервал, в каких пределах я ожидаю будущую цену.
То есть я могу взять, сделать прогноз по модели_1,
это будет forecast от модель_1, ну, к примеру,
построю прогноз на 20 дней вперед.
Ну можно опять же посмотреть на этот прогноз_1,
вот значение и доверительный интервал.
То есть значение, тут ничего удивительного нет, это — текущая цена.
А это — доверительные интервалы с учетом оцененной дисперсии.
Можно на графике посмотреть, как это выглядит, prognoz_1.
Соответственно, вот из-за того, что у ряда довольно большие колебания,
вот у нас доверительный интервал со временем расширяется.
Опять же можно посмотреть, какую модель компьютер выберет сам,
минимизируя критерий Акаике.
Давайте посмотрим, модель автоматическая как выглядит.
auto.arima для ряда y.
И посмотрим какая модель минимизирует критерий штрафной Акаике.
Ну вот, оказывается, компьютер подбирает ту же самую модель, что и мы подобрали.
Зачастую так оказывается, что ряды цен
акций — это ряды типа «случайное блуждание» или очень похожие на них.
Связано это с тем, что очень много людей пытаются сделать деньги и поэтому чего-то
очевидного, каких-то прогнозов: лучше, чем; такое же как сегодня,
если бы они были очень легкими, то все бы их делали, и соответственно, это приводило
бы к тому, что цена акций выравнивалась к процессу случайного блуждания.
Что-то тут найти довольно сложно.
Давайте возьмем следующий пример ряда.
Это ряд по населению России.
Давайте мы загрузим его.
Зайдем на сайт sophisthse.ru,
возьмем тут статистические ряды.
И вот здесь население и трудовые ресурсы.
Вот есть численность населения, ряд называется, вот годовые показатели,
ряд называется POPNUM_ Y.
Соответственно, открываем R-STUDIO и здесь говорим,
что y равняется sophisthse.
И ряд называется, большими буквами, так же, как он был назван на сайте,
"POPNUM_Y".
Вот, ряд у нас загрузился, и мы можем на него посмотреть,
сделать наш стандартный график из трех составляющих tsdisplay (y).
Тут мы видим следующее, что, к сожалению,
это, конечно, короткий ряд,
то есть здесь всего-то 25 наблюдений, это годовые данные.
Но все же по графику я бы сказал, что это похоже на случайное блуждание.
Сегодняшний показатель уж больно похож на вчерашний каждый раз.
Медленно убывает автокорреляционная функция.
Поэтому я бы моделировал вот этот ряд случайным блужданием, возможно,
с некоторым трендом.
Соответственно, если исходить из такого подхода,
то можно попробовать построить модель_1 для нашего ряда, это — Arima.
Для ряда y порядок Arima равен: 0, 1, 0.
То есть случайное блуждание.
Можно, например, добавить AR-составляющую.
И, скажем, поставить опцию, что здесь есть, возможно,
смещение TRUE, поскольку ряд в целом показывает некую тенденцию к убыванию.
И оценив такую модель, мы можем, во-первых,
посмотреть на оценки коэффициентов.
9:11
Так, вот summary модель_1,
то есть, и, соответственно,
помимо оценок коэффициентов, мы можем построить прогнозы.
Поскольку коэффициенты плохо интерпретируются в моделях класса Arima,
то нам удобней посмотреть на прогнозы.
forecast по модели_1 на,
допустим, 5 лет вперед,
и построим график plot(prognoz_1).
Вот, и, соответственно, на этом графике мы видим,
что, ну в зависимости от того, оптимист вы или пессимист, вот,
возможно, в 80 % доверительном интервале есть и тенденция роста населения России,
но при вот такой глобальной динамике с 90-го года — убывание,
то как бы прогноз глобальный все-таки, что средняя убывает, хотя опять же
вопрос в том, изменились ли характеристики ряда или они остались теми же?
Может быть, произошли какие-то структурные изменения,
которые резко переломили здесь динамику?
Но если предполагать, что ряд описывается одним и тем же процессом Arima,
который мы предположили, то тогда средний прогноз убывающий,
ну и есть возможность роста в 80 % доверительном интервале.