Анализ временных рядов с использованием современных информационных технологий
Анализ предметной области. Определение факторов, влияющих на нефтяную отрасль и нефтяные цены. Построение эконометрических моделей и более сложных алгоритмов, описывающих и позволяющих спрогнозировать предмет исследования. Анализ полученных результатов.
Рубрика | Экономика и экономическая теория |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 23.09.2018 |
Размер файла | 2,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Табл. 3. Результаты теста Грейнджера
Признак |
Значимые лаги |
|
US_rig_count |
1-2 |
|
crude_oil_prod_Libya |
1-4 |
|
petr_cons_other_OECD |
1 |
|
Petr_stocks_OECD |
2-5 |
|
Petr_stocks_US |
2-5 |
|
US_crude_petr_import |
1-5 |
|
MSCI_EM |
1-3 |
|
CRB |
3-5 |
|
US_ind_prod |
1-4 |
|
futures_spread_1y |
1-5 |
|
futures_spread_2y |
1 |
|
futures_spread_3y |
1-2 |
На основе проверки гипотез на статистически значимую причинно-следственную связь для каждого из прогнозов (на 1,2 и 3 месяца) были отобраны факторы, которые оказывают значимое влияние на нефтяные цены на соответствующем лаге, что потенциально может улучшить качество прогноза.
Алгоритм случайного леса для отбора признаков
Помимо теста причинности Грейнджера также зачастую используется алгоритм случайного леса, который способен определять значимые признаки, позволяющие улучшить качество прогноза. Суть данного алгоритма заключается в построении ансамбля деревьев решений. Все деревья ансамбля строятся независимо друг от друга по следующей процедуре:
1. Сгенерируем случайную подвыборку с повторением размером n из обучающей выборки. Таким образом, в сгенерированную выборку какие-то наблюдения могут войти несколько раз, а какие-то не войти вовсе.
2. На основе данной подвыборки построим решающее дерево, причём в ходе создания очередного узла дерева будем выбирать признак, на основе которого производится разбиение, не из всех M признаков, а лишь из m случайно выбранных.
3. Дерево строится до полного исчерпания подвыборки и не подвергается процедуре прунинга (англ. pruning -- отсечение ветвей)
4. Результирующим прогнозом всего ансамбля будет усреднённый прогноз по всем деревьям для каждого наблюдения.
Особенностью данного алгоритма является то, что каждое дерево из случайного леса обучается на бутстрапированной выборке, в которую попадают не все объекты, а только часть. Таким образом, всегда остается некоторая доля объектов выборки, которые не выборки не использовались при обучении этого дерева, а значит их можно использовать для оценки обобщающей способности случайного леса. Такой подход (выборка) носит название out-of-bag и позволяет оценивать качество леса без использования отложенной выборки или кросс-валидации. Формула для оценки качества случайного леса из N деревьев в рамках подхода out-of-bag имеет вид:
Эта формула устроена следующим образом. Для каждого объекта из обучающей выборки вычисляется средний прогноз по тем деревьям, в обучающую выборку которых не входит объект :
Для полученного прогноза вычисляется значение ошибки. В качестве оценки качества случайного леса используется сумма таких значений для всех элементов выборки. Данную особенность можно использовать с целью выявления признаков, обладающей хорошей объясняющей способностью. Опишем алгоритм расчета значимости признаков:
1. Вычислим ошибку (OOB) на out-of-bag выборке для дерева
2. Переставим местами значения j-го признака (превратим его в шумовой признак)
3. Вычислим ошибку на out-of-bag выборке с переставленными значениями признака
4. Вычислим информативность признака: -
5. Усредним полученный критерий информативности по всем деревьям
Таким образом j-й признак будет тем значимее, чем чаще деревья в совокупности будут использоваться его для разбиения. В результате эта значимость будет представлена в числовом виде, что позволит упорядочить признаки по значимости и выбрать наиболее подходящие из них.
Реализовав данный подход с помощью языка Python для каждого из периодов прогнозирования, был отобран ряд значимых признаков:
Табл. 4. Значимые признаки, выделенные с помощью алгоритма случайного леса
Период прогнозирования |
Значимые признаки |
|
1 месяц |
US_crude_petr_import US_rig_count VIX crude_oil_prod_USA futures_spread_1y futures_spread_3y |
|
2 месяца |
CRB RUB US_crude_petr_import VIX crude_oil_prod_USA futures_spread_1y futures_spread_2y futures_spread_3y |
|
3 месяца |
CNY CRB RUB US_crude_oil_stocks_excl_SPR US_crude_petr_import US_ind_prod crude_oil_prod_USA futures_spread_1y |
Текстовые признаки
В качестве третьего блока признаков было решено использовать новостные признаки, полученные с помощью парсинга статей The New York Times по запросу «crude oil prices». Изначально данные представляли собой основную мысль статьи (abstract), выраженную в нескольких предложениях, а также дату публикации этой статьи. Всего было собрано и агрегировано более 5000 статей за период с 01/2000 по 12/2017.
Для извлечения признаков из данного набора текста, необходимо было провести ряд преобразований:
· Удаление ненужных символов (знаки препинания, цифры и пр.)
· Замена регистра всех слов на нижний
· Создание списка слов на основе текста статьи
· Стеммирование - выделение основы слова (с целью унификации)
· Удаление стоп-слов, которые не несут в себе никакой информации (предлоги, частицы, союзы)
В результате всех преобразований был получен список, состоящий из списков обработанных слов для каждой статьи. Например, один из таких списков, содержит в себе следующие элементы:
bp, amoco, say, profit, doubl, fourth, quarter, rise, oil, price, cost, cut, profit, rose, billion, millin, year, earlier
Несмотря на изменение формы слов, не сложно понять, какой теме посвящена данная статья. После создания списка слов для каждой статьи необходимо было отнести данную статью к той или иной теме. Для решения данной задачи использовался алгоритм LDA (Latent Dirichlet Allocation), который предназначен для создания кластеров из слов, что равносильно определению тематик. LDA - это вероятностная модель темы, предполагающая, что документы представляют собой совокупность тем, и что каждое слово в документе связано с темами документа. Таким образом, зная распределение слов для каждой темы и распределение слов в документе, можно определить к какой теме относится тот или иной документ.
Рис. 21. Описание алгоритма LDA
На выходе данного алгоритма будет оценка вероятности принадлежности той или иной статьи к той или иной теме. Стоит отметить, что было решено присваивать каждой статье только одну тему, которая бы характеризовала ее в наибольшей степени.
Табл. 5. Вероятность принадлежности статей к различным темам
Тема 1 |
Тема 2 |
Тема 3 |
||
Статья 1 |
70% |
65% |
61% |
|
Статья 2 |
49% |
63% |
59% |
|
Статья 3 |
34% |
86% |
79% |
|
Статья 4 |
18% |
30% |
52% |
В данной работе опытным путем (с целью сохранения смысла) были подобраны следующие параметры:
· num_topics - число тем, выявленных алгоритмом
· alpha (document-topic density) - чем выше, тем к большему числу тем будет отнесена статья
· eta (topic-word density) - чем выше, тем больше слов будет включать в себя тема
В результате, было выделено 8 основных тем, которыми в целом можно охарактеризовать все статьи, посвященный нефти и нефтяным ценам:
Табл. 6. Ключевые слова для каждой из выделенных тем
№ |
Тема |
Ключевые слова |
|
1 |
Energy sources |
gasoline, energy, fuel, nature |
|
2 |
Trade |
trade, import, good, deficit, sale |
|
3 |
Investments |
stock, market, wall street, investor, bank, interest rate, federal reserve rate |
|
4 |
Oil as commodity |
oil, price, crude, barrel, OPEC, product |
|
5 |
Oil companies |
company, profit, billion, ceo, bp, exxon, shell |
|
6 |
World economy |
world, country, Russia, China, Iran, Iran, export, Middle East |
|
7 |
US Election and US Politics |
president, elections |
|
8 |
Market reaction |
index, point, DJ, S&P500, percent, drop |
Библиотека pyLDAvis в Python позволяет визуализировать полученные темы в виде окружностей. Как видно на рисунке, приведенном ниже, некоторые из тем пересекаются между собой, что подразумевает под собой смысловую схожесть тем. В частности, пересекаются такие темы, как «oil as commodity» и «investments», что вполне логично, так как финансовый рынок напрямую связан с и непосредственно реагирует на события, происходящие на рынке нефти. Аналогично связаны между собой темы «energy sources» и «world economy». Справа на столбчатой диаграмме для каждой из тем отображаются наиболее релевантные слова, отобранные на основе метрик distinctiveness и saliency.
Рис. 22. Распределение тем статей (слева) и топ-30 релевантных слов для темы «oil companies» (справа)
Distinctiveness (отчётливость) представляет собой расстояние Кульбака-Лейблера между условной вероятностью темы в зависимости от того или иного слова и предельной вероятностью темы. Иначе это можно представить, как вероятность, что любое случайное слово принадлежит теме k. Чем выше данный показатель для того или иного слова, тем выше меньше данное распределено по темам (тем оно более специфичное).
Saliency (заметное положение) слова w взвешивает его частоту на distinctiveness.
По сравнению с ранжированием по частоте p(w) ранжирование по показателю p(w)D(w) будет штрафовать слова, встречающиеся в сразу нескольких темах, поскольку они будут иметь низкую отчетливость. Одновременно с этим, слова, которые являются хорошими предикторами одной темы и, соответственно, имеют высокую отчётливость, будут получать больший вес для данной темы.
Так как в данной работе целью является долгосрочное прогнозирование цен, было решено использовать агрегированную информацию о новостном фоне на нефтяном рынке за весь месяц. Как было упомянуто ранее, каждая статья характеризовалась одной из 8 тем. После присвоения каждой из статей определенной темы, была произведена группировка по дате. В результате каждый из месяцев характеризовался числом совокупных упоминаний той или иной темы. На основании этого были посчитаны как абсолютные упоминания каждой из тем за каждый месяц, так и относительные.
3.2 Описание дизайна прогнозирования
В данном разделе будет описан ряд особенностей, которые необходимо учитывать при работе с временными рядами.
3.2.1 Алгоритм прогнозирования
В первую очередь, стоит отметить, что прогнозирование на n месяцев вперед может быть осуществлено с помощью нескольких подходов. Первый подход заключается в том, что для каждого шага прогнозирования (1, 2 и 3 месяца) строится отдельная модель. В данном случае, если мы хотим построить модель, прогнозирующую значение нашей целевой переменной, например, на 1 месяц вперед в период t+1, мы обучаем ее на выборке, где значение зависимой переменной является ln(Yt+2/Yt+1), что есть не что иное как месячный темп прироста, сдвинутый назад на n периодов. В качестве независимых (экзогенных) переменных используется лаговое значение целевой переменной ln(Yt+1/Yt), а также значения других факторов, известных в период t+1. В данном случае прогноз на каждой итерации в общем виде будет выглядеть следующим образом:
prediction(t+1) = model(obs(t), obs(t-1), ..., obs(t-n)) prediction(t+2) = model(obs(t+1), obs(t), ..., obs(t-n+1)) |
Аналогично обстоит дело и с другими шагами прогнозирования (на 2 и 3 месяца вперед). Другой подход заключается в рекурсивном прогнозировании, когда мы обучаем модель делать прогноз на один шаг вперед, а полученный на каждой итерации прогноз используем для прогноза на следующем шаге. В таком случае, хорошо будет работать связка ARIMA+ XGBoost, когда экзогенные факторы, прогнозируются с помощью ARIMA и впоследствии используются для прогноза целевой переменной на следующем шаге с помощью бустинга.
prediction(t+1) = model(obs(t), obs(t-1), ..., obs(t-n)) prediction(t+2) = model(prediction(t+1), obs(t), ..., obs(t-n)) |
Процесс обучения будет происходить следующим образом. Изначально вся выборка делится на обучающую и тестовую. На обучающей выборке подбираются оптимальные параметры модели, с которыми она обучается. После этого делается прогноз на n шагов вперед. Далее первое значение из тестовой выборки переходит в обучающую выборку. На новой тренировочной выборке модель вновь будет обучена, при этом оптимальные параметры могут измениться, после чего будет сделан очередной прогноз и т.д.
3.2.2 Кросс-валидация
Рис. 23. Процедура кросс-валидации
Второй особенностью данного исследования является подбор оптимальных параметров моделей. Как правило, если та или иная модель имеет ряд параметров, характеризующих архитектуру алгоритма и особенность обучения, всю выборку делят на 3 подвыборки: обучающую, валидационную и тестовую. На обучающей выборке тренируют n моделей, где n - число возможных значений всех параметров (в заранее установленных рамках). После этого на валидационной выборке находят оптимальные параметры модели: выбирается модель с такими параметрами, ошибка на валидационной выборке у которой минимальная. Далее у лучшей модели проверяется обобщающая спососбность. Это делается для того, чтобы исключить возможность переобучения модели (подгонка под обучающую выборку). Если качество модели устраивает, она используется в дальнейшем для предсказаний на других данных.
Тем не менее, данный подход обладает одним недостатком. В случае небольшого числа наблюдений, разбиение исходных данных на 3 подвыборки без потери качества невозможно - модели не будет хватать данных для поиска закономерностей в данных. Данную проблему позволяет решить так называемая k-fold кросс валидация. Суть данного подхода заключается разбиении выборки на обучающую и тестовую в соотношении 1/k-1. Таким образом, на каждой из k итераций часть выборки отводится на обучение, а на оставшейся выборке проверяется качество. После этого уже другая часть выборки становится обучающей и тестовой. Качество модели определяется путем усреднения метрики качества на каждой из итераций.
Рис. 24. Определение качества модели на кросс-валидации
Тем не менее для временных рядов данная методика не подходит. Проблема заключается в том, что наблюдения во временных рядах упорядочены во времени, в результате чего в более поздних наблюдениях так или иначе содержится информация о прошлых значениях. Таким образом, если мы обучим модель на более поздних данных, нам будет проще сделать предсказание на тестовой выборке.
Рис. 25. Некорректная процедура кросс-валидации для временных рядов
Решением является процесс кросс-валидации, учитывающий временную структуру ряда. При данном подходе обучение модели начинается на небольшом отрезке временного ряда, от начала до некоторого t, после чего делается прогноз на t+n шагов вперед и считается ошибка. Далее обучающая выборка увеличивается до t+n значения, и осуществляется прогноз с t+n до t+2?n. Так продолжается до тех пор, пока не будет достигнуто последнее доступное наблюдение.
Рис. 26. Корректная процедура кросс-валидации для временных рядов
Рис. 27. Оценка качества модели на кросс-валидации
3.2.3 Выбор метрики качества
При работе с временными рядами очень важно оценивать качество построенной модели. В общем виде мы должны сформировать так называемую функцию потерь, представляющую собой не что иное как ошибку, которую мы и собираемся минимизировать. Существует огромное количество различных метрик, выражающих функцию потерь, которые позволяют оценить способность модели прогнозировать будущие значения. Каждая имеет свои достоинства и недостатки. Однако решающим фактором является специфика данных, на которых мы строим нашу модель. Можно выделить два блока метрик:
1. Метрики, оценивающие абсолютный уровень ошибок. К таким метрикам относятся:
Каждая из метрик обладает рядом особенностей:
· R2: в основном используется для нестохастических рядов (не интерпретируема). [-?;1]
· MAE: придает одинаковый вес большим и малым ошибкам; используется для рядов со схожими значениями (интерпретируема). [0;+?]
· MSE: придает больший вес больших ошибкам (не интерпретируема). [0;+?]
· RMSE: квадратный корень из MSE (не интерпретируема). [0;+?]
· RMSLE: больше штрафует за ошибки на малых значениях ряда (не интерпретируема). [0;+?]
2. Метрики, оценивающие относительный уровень ошибок. К ним относятся:
Каждая из метрик также обладает рядом особенностей:
· MAPE: используется для рядов со схожими значениями (интерпретируема). [0;+?]
· RMSPE: гибрид метрик RMSE и MAPE; уделяет больше внимания больших ошибкам (не интерпретируема). [0;+?]
· RMSLPE: больше штрафует за ошибки на малых значениях ряда (не интерпретируема). [0;+?]
· SMAPE: подходит для рядов с широким диапазоном значений, меньше штрафует за over-forecasting (не интерпретируема). [0;200]
При выборе метрики качества, стоит учесть две особенности:
· Рассматриваемый ряд (цена нефти) имеет как маленькие значения, так и большие
· Очень важно предсказывать значительные изменения, то есть придавать большим ошибкам прогноза больший вес.
Ввиду данных особенностей было решено остановиться на метрике MSE.
3.3 Результаты прогнозирования
Для построения упомянутых ранее моделей использовался языки программирования Python и R. Данные инструменты позволяют осуществлять множество задач: от первичной обработки и визуализации данных до построения сложных моделей.
3.3.1 Эконометрические модели
Случайное блуждание показало относительно неплохой результат при прогнозировании на 1 шаг вперед, опередив метод экспоненциального сглаживания. Однако поскольку данный метод не учитывает общего тренда, он не смог показать соизмеримое качество при прогнозировании с большим интервалом.
Экспоненциальное сглаживание оказалось более стабильным в этом плане. Основной причиной стабильности является учет предыдущей истории ряда. Тем не менее, отсутствие возможности обучаться на других факторах не позволило достичь высокой точности.
Метод Хольта и Хольта-Винтерса ожидаемо показали очень хороший результат при прогнозировании на 1 шаг вперед. Однако при 2 и 3 месячном прогнозе, простое экспоненциальное сглаживание оказалось более предпочтительным подходом. Одной из причин данного результата является особенность реализации данных алгоритмов в языке программирования R. Так экспоненциальное сглаживание, представленное в R в виде функции ets() позволяет автоматизировать подбор параметров модели. В то же время модели двойного и тройного экспоненциального сглаживания в R требовали подбора оптимальных параметров вручную, что в конечном счете сказалось на качестве прогноза.
Табл. 7. Качество прогнозов эконометрических моделей
Модель |
MSE_1 |
MSE_2 |
MSE_3 |
|
Хольта |
31.22745 |
52.03547 |
84.80884 |
|
Хольта-Винтерса |
35.891 |
69.9734 |
77.57461 |
|
Экспоненциальное сглаживание |
38.25112 |
46.30478 |
59.69006 |
|
Случайное блуждание |
37.98675 |
47.99622 |
62.28563 |
3.3.2 ARIMA
Данный вид моделей характеризуется тем, что они используют лишь значения самого ряда. Исключением является модель типа (S)ARIMAX, которая также учитывает экзогенные факторы. Перед тем как перейти к моделированию, стоит упомянуть о таком важном свойстве как стационарность. Под стационарностью понимается свойство процесса не менять своих статистических характеристик с течением времени. В частности, стационарность обуславливается построянством трех характеристик: среднего, дисперсии и ковариации. На рисунке ниже представлены примеры нарушения условия стационарности ряда:
Рис. 28. Нестационарность во временных рядах
По стационарному ряду можно строить прогноз, поскольку мы полагаем, что его будущие статистические характеристики не будут отличаться от наблюдаемых текущих. В свою очередь нестационарность плоха тем, что поскольку свойства ряда меняются со временем, прогноз по данному ряду будет сильно зависеть от временного периода, в результате чего сам прогноз не будет надежным и устойчивым.
Стационарность можно определить, как графчески, так и с помощью различных тестов, самым популярным из которых является критерий Дики-Фуллера. Как видно на графике внизу, целевой ряд является нестационарным, поскольку:
· в ряде присутствует тренд;
· величина изменений ряда меняется со временем (гетероскедастичность);
· критерий Дики-Фуллера свидетельствует о нестационарности ряда (нулевая гипотеза о наличии единичного корня не отвергается).
Рис. 29. Разложение временного ряда на основные компоненты
Сезонная компонента свидетельствует о наличии сезонности в ряде. Однако построение графика типа «box plot» по каждому месяцу и кварталу говорит о том, что сезонность не является значимой.
Рис. 30. Анализ наличия сезонности во временном ряде
Для приведения ряда к стационарному существует ряд методов:
· Преобразование Бокса-Кокса
Для рядов с меняющейся во вермени дисперсией можно использовать стабилизирующие преобразования, такие как преобразования Бокса-Кокса:
Параметр лямбда подбирается так, чтобы дисперсия была максимально монотонной, однако она не так важна и слабо влияет на прогноз. Зато она сильно влияет на предсказательный интервал. При этом в результате преобразования ряд не обязательно станет стационарным, зато у него стабилизируется дисперсия.
· Дифференцирование ряда
Дифференцирование ряда подразумевает под собой преход к попарным разностям его средних значений:
Дифференцированием можно стабилизировать среднее значение ряда и избавиться от тренда. В случае присутствия в реде сезонности, можно также использовать сезонное дифференцирование, то есть перейти к попарным разностям его значений в соседних сезонах:
После взятия первых разностей и трансформации Бокса-Кокса можно сделать вывод, что ряд стал стационарным. Таким образом, мы можем использовать данный ряд для дальнейшего прогноза.
Рис. 31. Приведение временного ряда к стационарному
Далее стоял выбор оптимальных параметров модели. Ранее нами был определен параметр d, который равен 1, поскольку мы брали первые разности (дифференцирование первого порядка). Для определения p и q (AR и MA компоненты, соответственно) обычно используются два диагностических графика:
· Функция автокорреляции (ACF): График показывает корреляции наблюдений с их собственными лагами.
· Частичная функция автокорреляции (PACF): График показывает корреляции для данных со значениями лагов, которые не учитываются за предыдущими запаздывающими значениями наблюдений.
Рис. 32. Коррелограммы ACF и PACF
По выше приведенным графикам удалось подобрать начальные приближения параметров модели:
· p = 1
· q = 1
· d = 1
Далее был произведен поиск оптимальных параметров. Поиск осуществлялся путем построения модели со всеми возможными комбинациями параметров, со множеством значений от 0 до 1 включительно. Наилучшая модель и, соответственно наилучшие параметры выбирались на основе критеря Акаике, которые позволяет определить наилушчую модель с точки зрения прогнозного качества и сложности модели:
В результате была подобрана модель с параметрами (1, 1, 0), показывающая минимальный критерий Акаике.
Рис. 33. Статистика итоговой модели ARIMA
Последним этапом перед использованием модели для прогнозирования является проверка остатков (ошибок) модели. Адекватная модель должна обладать остатками, являющимися процессом белого шума (стационарный процесс с нулевым математическим ожиданием, постоянной дисперсией и независимостью наблюдений от предыдущих значений). Проведя графический и статистический анализ, можно убедиться, что остатки представляют собой белый шум.
Рис. 34. Анализ остатков итоговой модели
Приведенный выше подбор подходящей модели был проведен в среде Python. Минус данного подхода заключается в том, что он требует подбора наилучших параметров модели на каждой итерации прогнозирования, что значительно усложняет использование данного метода. Поэтому для решения поставленной гораздо удобнее, когда все параметры модели подбираются автоматически. Данный подход реализован на языке R. В результате в связи с возможностью автоматического подбора оптимальных параметров ожидаемо лучше сработала модель, написанная именно в среде R нежели Python.
Рис. 35. Алгоритм построения модели ARIMA вручную (слева) и автоматически на языке R (справа)
Как и для всех моделей было построено 3 прогноза: на 1, 2 и 3 месяца вперед. В результате были получены следующие значения метрики MSE:
Табл. 8. Прогнозное качество модели ARIMA
Прогноз на n месяцев вперед |
MSE |
|
1 |
28.68795 |
|
2 |
38.37668 |
|
3 |
49.42612 |
3.3.3 XGBoost
Итоговая реализация данного алгоритма была осуществлена с помощью Python: данный язык имеет как библиотеку для работы с XGBoost, так и библиотеку для поиска оптимальных параметров. В результате были получены следующие результаты прогноза:
Табл. 9. Прогнозное качество XGBoost
Алгоритм (признаки) |
MSE_1 |
MSE_2 |
MSE_3 |
|
xgb (лаги) |
27.9838 |
78.5828 |
138.3555 |
|
xgb (факторы Granger + их лаги) |
22.3248 |
41.0597 |
109.9390 |
|
xgb (факторы RF + их лаги) |
23.8431 |
61.7765 |
113.9452 |
|
xgb (лаги + новостные факторы) |
25.7619 |
67.8310 |
138.2000 |
Результаты получились весьма противоречивыми. С одной стороны, алгоритм хорошо справляется с прогнозом на 1 месяц вперед, демонстрируя минимальную ошибку среди всех алгоритмов. С другой стороны, ошибка при прогнозе на 2 и 3 месяца вперед возрастает в несколько раз. Это можно объяснить тем, что ввиду особенностей построения обучающей выборки алгоритм никак не использует прогнозное значение на 1 шаге для прогноза на 2 и 3 шагах. Значения независимой переменной также не экстраполируются на последующие периоды.
3.3.4 LSTM
Алгоритм LSTM в данной работе был реализован с помощью библиотеки keras (Python). В отличие от алгоритма XGBoost, построение LSTM предполагает ряд особенностей. В первую очередь, на вход данной сети должны подаваться нормализованные (отмасштабированные) признаки, т.к. от этого очень зависит качество алгоритма. Во-вторых, в данной библиотеке не предусмотрен поиск по сетке, в следствие чего определение оптимальной архитектуры сети происходит вручную. В качестве параметров модели использовались следующие характеристики сети:
· Количество слоев
· Количество нейронов в каждой сети
· Функция активации
· Функция потерь
· Алгоритм оптимизации
· Dropout
Для каждого шага прогнгозирования строилась отдельная модель, после чего определалось качество прогноза на тестовой выборке.
Табл. 10. Прогнозное качество LSTM
Алгоритм (признаки) |
MSE_1 |
MSE_2 |
MSE_3 |
|
LSTM (лаги) |
31.2409 |
88.7058 |
191.0504 |
|
LSTM (факторы Granger) |
26.8312 |
63.1463 |
117.7987 |
|
LSTM (факторы RF) |
30.1258 |
71.9953 |
139.0506 |
|
LSTM (лаги + новостные факторы) |
27.7797 |
63.2044 |
111.3856 |
3.3.5 Ансамбль XGBoost и ARIMA
В результате применения алгоритмов градиентного бустинга и нейронных сетей оказалось, что они обладают относительно слабой предсказательной силой на 2-х и 3-х месячном интервале. Исключением стала модель XGBoost, прогнозирующая на 2 месяца вперед и использующая факторы, отобранные в соответствии с тестом Грейнджера. Ввиду данного факта было решено изменить подход к прогнозированию, используя тандем ARIMA+XGBoost. Опишем суть данного подхода. Для прогнозирования на 2 месяца вперед на 1-м шаге делается прогноз на 1 месяц вперед с помощью XGBoost, который показал наилучший результат среди всех моделей при прогнозировании с шагом в 1 месяц. Далее значения независимых факторов экстраполируются с помощью модели ARIMA. После этого на следующем шаге используются полученные прогнозы целевой переменной и независимых факторов, на основе которых вновь делается прогноз на 1 месяц. В результате получается прогноз на 2 месяца.
Табл. 11. Прогнозное качество ансамбля XGBoost+ARIMA
Алгоритм |
MSE_1 |
MSE_2 |
MSE_3 |
|
xgb (факторы Granger + их лаги) + ARIMA |
- |
36.3635 |
83.3841 |
В итоге, можно выделить лучшие модели для каждого из шагов прогнозирования. Так алгоритм градиентного бустинга, обучающийся на факторах, выявленных при помощи теста причинности Грейнжера, показал наилучший результат при прогнозировании на 1 месяц вперед. ARIMA оказался лучшим при более долгосрочном прогнозировании на 3 месяца. Скомбинировав эти два алгоритма был получен наилучший результат с точки зрения ошибки прогноза на 2 месяца вперед.
Табл. 12. Прогнозное качество лучших моделей
Алгоритм |
MSE_1 |
MSE_2 |
MSE_3 |
|
xgb (факторы Granger + их лаги) |
22.3248 |
|||
xgb (факторы Granger + их лаги) + ARIMA |
36.3635 |
|||
ARIMA |
49.42612 |
Заключение
В данной работе были рассмотрены основные подходы к прогнозированию нефтяных цен. Для этого был проведен анализ предметной области и определены факторы, оказывающие значимое влияние на нефтяные цены с помощью различных подходов. На основе обзора литературы часть наиболее перспективных методов была реализована на практике с помощью языков программирования Python и R.
Данная работа отличается от предыдущих тем, что в нем использовались современные алгоритмы, такие как градиентные бустинг (XGBoost) и нейронная сеть с долгой краткосрочной памятью (LSTM), которые пока что не нашли широкого применения в академической среде и до сих пор не были достаточно протестированы на качество прогнозирования временных рядов. Также в данной работе был проведен текстовый анализ с целью получения дополнительного блока информации. В ряде ситуаций данная информация помогла значительно улучшить качество прогноза. В итоге, наилучшие результаты показали такие методы как ARIMA, XGBoost, а также их комбинация.
Данное исследование может быть полезно с точки зрения выявления наиболее перспективных алгоритмов, способных прогнозировать временные ряды на длительный период времени с наименьшей ошибкой. Текстовый анализ также показал свою перспективность и в дальнейшем может быть использован в качестве дополнительной информации, что позволит улучшить качество прогнозов.
Список используемой литературы
1. Abramson, B., & Finizza, A. (1991). Using belief networks to forecast oil prices. International Journal of Forecasting, 7(3), 299-315.
2. Abramson, B., & Finizza, A. J. (1991). A belief network implementation of target capacity utilization. In Energy Disruptions: Lessons, Opportunities & Prospects, 13th IAEE North American Conference, 1991. International Association for Energy Economics.
3. Abramson, B. (1993). A belief network-based system that forecasts the oil market by constructing producer behavior. In Energy & the Environment, 15th IAEE North American Conference, 1993. International Association for Energy Economics.
4. Alizadeh, A., & Mafinezhad, K. (2010, August). Monthly Brent oil price forecasting using artificial neural networks and a crisis index. In Electronics and Information Engineering (ICEIE), 2010 International Conference On (Vol. 2, pp. V2-465). IEEE.
5. Aloui, C., & Jammazi, R. (2009). The effects of crude oil shocks on stock market shifts behaviour: A regime switching approach. Energy Economics, 31(5), 789-799.
6. Cabedo, J. D., & Moya, I. (2003). Estimating oil price `Value at Risk'using the historical simulation approach. Energy Economics, 25(3), 239-253.
7. Chiroma, H., Abdulkareem, S., & Herawan, T. (2015). Evolutionary Neural Network model for West Texas Intermediate crude oil price prediction. Applied Energy, 142, 266-273.
8. Doрrul, H. G., & Soytas, U. (2010). Relationship between oil prices, interest rate, and unemployment: Evidence from an emerging market. Energy Economics, 32(6), 1523-1528.
9. Fattouh, B. (2011). An anatomy of the crude oil pricing system.
10. Friedman, J. H. (2001). Greedy function approximation: a gradient boosting machine. Annals of statistics, 1189-1232.
11. Gumus, M., & Kiran, M. S. (2017, October). Crude oil price forecasting using XGBoost. In Computer Science and Engineering (UBMK), 2017 International Conference on (pp. 1100-1103). IEEE.
12. Haidar, I., Kulkarni, S., & Pan, H. (2008, December). Forecasting model for crude oil prices based on artificial neural networks. In Intelligent Sensors, Sensor Networks and Information Processing, 2008. ISSNIP 2008. International Conference on (pp. 103-108). IEEE.
13. He, K., Xie, C., Chen, S., & Lai, K. K. (2009). Estimating VaR in crude oil market: A novel multi-scale non-linear ensemble approach incorporating wavelet analysis and neural network. Neurocomputing, 72(16-18), 3428-3438.
14. Jain, A., & Ghosh, S. (2013). Dynamics of global oil prices, exchange rate and precious metal prices in India. Resources Policy, 38(1), 88-93.
15. Khashman, A., & Nwulu, N. I. (2011, January). Intelligent prediction of crude oil price using Support Vector Machines. In Applied Machine Intelligence and Informatics (SAMI), 2011 IEEE 9th International Symposium on (pp. 165-169). IEEE.
16. Lai KK, He K, Yen J. Modeling VaR in crude oil market: a multi scale nonlinear ensemble approach incorporating wavelet analysis and ANN. Lect Notes Comput Sci 2007;4487:554-61.
17. Lizardo, R. A., & Mollick, A. V. (2010). Oil price fluctuations and US dollar exchange rates. Energy Economics, 32(2), 399-408.
18. Malliaris, A. G., & Malliaris, M. (2009, June). Time series and neural networks comparison on gold, oil and the euro. In Neural Networks, 2009. IJCNN 2009. International Joint Conference on(pp. 1961-1967). IEEE.
19. Morana, C. (2013). Oil price dynamics, macro-finance interactions and the role of financial speculation. Journal of banking & finance, 37(1), 206-226.
20. Morana, C. (2001). A semiparametric approach to short-term oil price forecasting. Energy Economics, 23(3), 325-338.
21. Mirmirani, S., & Cheng Li, H. (2004). A comparison of VAR and neural networks with genetic algorithm in forecasting price of oil. In Applications of Artificial Intelligence in Finance and Economics (pp. 203-223). Emerald Group Publishing Limited.
22. Park, J., & Ratti, R. A. (2008). Oil price shocks and stock markets in the US and 13 European countries. Energy economics, 30(5), 2587-2608.
23. Pan, H., Haidar, I., & Kulkarni, S. (2009). Daily prediction of short-term trends of crude oil prices using neural networks exploiting multimarket dynamics. Frontiers of Computer Science in China, 3(2), 177-191.
24. Pearson, K. (1905). The problem of the random walk. Nature, 72(1867), 342.
25. Sims, C. A. (1986). Are forecasting models usable for policy analysis?. Quarterly Review, (Win), 2-16.
26. Wang, J., Xu, W., Zhang, X., Bao, Y., Pang, Y., & Wang, S. (2010). Data mining methods for crude oil market analysis and forecast. Data Mining in Public and Private Sectors: Organizational and Government Applications: Organizational and Government Applications, 184.
27. Yu, L., Wang, S., & Lai, K. K. (2008). Forecasting crude oil price with an EMD-based neural network ensemble learning paradigm. Energy Economics, 30(5), 2623-2635.
Электронные ресурсы:
1. Моделирование тем новостных статей с помощью LDA [URL]
http://shichaoji.com/tag/topic-modeling-python-lda-visualization-gensim-pyldavis-nltk/
2. Визуализация тем новостных статей на языке Python [URL]
http://nbviewer.jupyter.org/github/bmabey/pyLDAvis/blob/master/notebooks/pyLDAvis_overview.ipynb
3. LSTM - сети долгой краткосрочной памяти [URL]
https://habr.com/company/wunderfund/blog/331310/
4. Визуализация тем новостных статей на языке Python [URL]
https://www.oreilly.com/ideas/introduction-to-lstms-with-tensorflow
5. Introduction to LSTMs with TensorFlow [URL]
/https://www.oreilly.com/ideas/introduction-to-lstms-with-tensorflow
6. Сайт The New York Times [URL]
https://www.nytimes.com/
7. Методы отбора признаков [URL]
http://www.machinelearning.ru/wiki/images/9/96/RysmyatovaCourseFile.pdf
8. Подходы к прогнозированию временных рядов [URL]
https://machinelearningmastery.com/multi-step-time-series-forecasting/
Приложение № 1. Изначальные факторы
Обозначение |
Фактор |
|
brent |
Среднемесячная цена на нефть марки Brent |
|
US_rig_count |
Число буровых установок в США |
|
nonOPEC_liq_sup |
Предложение жидкостных видов топлива странами не-ОПЕК |
|
OPEC_petr_sup |
Предложение нефтепродуктов со стороны ОПЕК |
|
Europe_liq_sup |
Предложение жидкостных видов топлива странами Европой |
|
US_liq_sup |
Предложение жидкостных видов топлива странами США |
|
crude_oil_prod_Iran |
Добыча сырой нефти в Иране |
|
crude_oil_prod_Iraq |
Добыча сырой нефти в Ираке |
|
crude_oil_prod_Libya |
Добыча сырой нефти в Ливии |
|
crude_oil_prod_Nigeria |
Добыча сырой нефти в Нигерии |
|
crude_oil_prod_SA |
Добыча сырой нефти в Саудовской Аравии |
|
crude_oil_prod_Ven |
Добыча сырой нефти в Венесуэле |
|
crude_oil_prod_OPEC |
Добыча сырой нефти ОПЕК |
|
crude_oil_prod_USA |
Добыча сырой нефти в США |
|
OPEC_crude_oil_prod_capacity |
Производственный мощности добычи нефти ОПЕК |
|
World_liq_fuels_cons |
Потребление жидкостных видов топлива в мире |
|
China_liq_fuels_cons |
Потребление жидкостных видов топлива в Китае |
|
India_liq_fuels_cons |
Потребление жидкостных видов топлива в Индии |
|
US_liq_fuels_cons |
Потребление жидкостных видов топлива в США |
|
OECD_liq_fuels_cons |
Потребление жидкостных видов топлива странами ОЭСР |
|
non_OECD_liq_fuels_cons |
Потребление жидкостных видов топлива странами не-ОЭСР |
|
petr_cons_US |
Потребление нефтепродуктов США |
|
petr_cons_other_OECD |
Потребление нефтепродуктов не-ОЭСР |
|
petr_cons_OECD |
Потребление нефтепродуктов ОЭСР |
|
Total_D |
Мировой спрос на нефть |
|
Total_S |
Мировое предложение нефти |
|
net_inv_withdrawals_world |
Чистое изъятие нефтяных запасов в мире |
|
net_inv_withdrawals_US50 |
Чистое изъятие нефтяных запасов в США |
|
net_inv_withdrawals_other_OECD |
Чистое изъятие нефтяных запасов в странах ОЭСР |
|
net_inv_withdrawals_non_OECD |
Чистое изъятие нефтяных запасов в странах не-ОЭСР |
|
US_crude_oil_stocks_excl_SPR |
Запасы сырой нефти в США за исключением стратегических запасов |
|
US_crude_oil_stocks_and_petr_products_excl_SPR |
Запасы сырой нефти и нефтепродуктов в США за исключением стратегических запасов |
|
US_SPR |
Стратегические запасы нефти США |
|
Petr_stocks_OECD |
Запасы нефтепродуктов в странах ОЭСР |
|
Petr_stocks_US |
Запасы нефтепродуктов в США |
|
Petr_stocks_other_OECD |
Запасы нефтепродуктов в странах помимо ОЭСР |
|
US_crude_petr_import |
Импорт сырой нефти и нефтепродуктов США |
|
China_crude_import |
Импорт сырой нефти Китаем |
|
India_crude_import |
Импорт сырой нефти Индией |
|
SP_500 |
Индекс S&P 500 |
|
DXY |
Индекс доллара |
|
EUR |
Курс евро/доллар |
|
RUB |
Курс рубль/доллар |
|
CNY |
Курс юань/доллар |
|
Gold |
Индекс золота |
|
VIX |
Индекс волатильности |
|
MSCI_EM |
Индекс MSCI для развивающихся рынков |
|
MSCI_World |
Индекс мирового MSCI |
|
MSCI_ACWI |
Индекс MSCI для мира и развивающихся рынков |
|
US_10YT |
Казначейские облигации США (10 лет) |
|
EU_10YT |
Казначейские облигации Евпропы (10 лет) |
|
FED_Funds_Rate |
Ставка ФРС |
|
CRB |
Индекс CRB |
|
US_ind_prod |
Промышленное производство в США |
|
China_ind_prod |
Промышленное производство в Китае |
|
Euruzone_ind_prod |
Промышленное производство в Евозоне |
|
futures_spread_1y |
Однолетний спред нефтяных фьючерсов |
|
futures_spread_2y |
Двухлетний спред нефтяных фьючерсов |
|
futures_spread_3y |
Трехлетний спред нефтяных фьючерсов |
|
is_worldwide_event |
Индикатор общемирового события |
|
topic_1 |
Число упоминаний новостной темы №1 |
|
topic_2 |
Число упоминаний новостной темы №2 |
|
topic_3 |
Число упоминаний новостной темы №3 |
|
topic_4 |
Число упоминаний новостной темы №4 |
|
topic_5 |
Число упоминаний новостной темы №5 |
|
topic_6 |
Число упоминаний новостной темы №6 |
|
topic_7 |
Число упоминаний новостной темы №7 |
|
topic_8 |
Число упоминаний новостной темы №8 |
|
topic_sum |
Совкупное число новостей за месяц |
|
topic_1_rel |
Относительная частота новостной темы №1 |
|
topic_2_rel |
Относительная частота новостной темы №2 |
|
topic_3_rel |
Относительная частота новостной темы №3 |
|
topic_4_rel |
Относительная частота новостной темы №4 |
|
topic_5_rel |
Относительная частота новостной темы №5 |
|
topic_6_rel |
Относительная частота новостной темы №6 |
|
topic_7_rel |
Относительная частота новостной темы №7 |
|
topic_8_rel |
Относительная частота новостной темы №8 |
|
year |
Год наблюдения |
|
month |
Месяц наблюдения |
|
quarter |
Квартал наблюдения |
|
brent_1m_log |
Темп прироста нефтяных цен |
|
brent_1m_log_lag1 |
Лаг одномесячного темпа прироста нефтяных цен (1 месяц) |
|
brent_1m_log_lag2 |
Лаг одномесячного темпа прироста нефтяных цен (2 месяца) |
|
brent_2m_log |
Двухмесячный темп прироста нефтяных цен |
|
brent_2m_log_lag |
Лаг двухмесячного темпа прироста нефтяных цен |
Приложение №2. Значимость признаков в соответствии с алгоритмом случайного леса
Рис. 36. Значимость признаков для прогноза цен на 1 месяц вперед согласно алгоритма Random Forest
Рис. 37. Значимость признаков для прогноза цен на 2 месяца вперед согласно алгоритма Random Forest
Рис. 38. Значимость признаков для прогноза цен на 3 месяца вперед согласно алгоритма Random Forest
Приложение № 3. Значимость признаков в текстовом анализе
Рис. 39. Наиболее характерные наборы слов для каждой из новостных тем Размещено на Allbest.ru
...Подобные документы
Анализ, расчет и построение исходных динамических рядов признака-функции и признака-фактора. Расчет показателей вариации динамических рядов. Количественное измерение тесноты связи признака-функции и признаков-факторов методом парной корреляции.
курсовая работа [92,7 K], добавлен 24.09.2014Экономико-статистический анализ временных рядов развития строительства Тюменской области. Выявление и измерение сезонных колебаний. Корреляция рядов динамики и проведение регрессионного анализа показателей. Экстраполяция по мультипликативной схеме.
курсовая работа [521,5 K], добавлен 20.01.2016Инвестиционная деятельность как объект исследования. Состав и роль инвестиции в основной капитал. Первичный, корреляционный и регрессионный анализ данных. Статистический анализ временных рядов. Методика построения диаграмм рассеивания между переменными.
курсовая работа [790,9 K], добавлен 03.11.2014Экономический анализ как самостоятельная отрасль научных знаний, имеющая свой предмет и объекты исследования, знакомство с задачами: оценка результатов работы предприятия, разработка планов. Рассмотрение способов исследования коммерческого риска.
контрольная работа [45,4 K], добавлен 12.10.2013Характеристика состояния экономики РФ. Альтернативы инвестиционной политики РФ. Экономико-статистический анализ инвестиций РФ. Индексный анализ прямых инвестиций в РФ. Анализ динамики инвестиций с использованием временных рядов.
курсовая работа [586,7 K], добавлен 12.09.2006Понятие временного ряда, компоненты. Сглаживание, анализ периодических колебаний. Сезонность, аддитивная и мультипликативная модели. Понятие белого шума в моделях динамики рядов. Оператор лагового сдвига. Оценка и вывод автокорреляционной функции.
курсовая работа [659,4 K], добавлен 13.09.2015Оценка совокупности на предмет её однородности. Построение ранжированного и интервального рядов распределения. Анализ рядов динамики методами укрупнения интервалов и скользящей средней, аналитическое выравнивание по уравнению прямой и параболы.
курсовая работа [99,8 K], добавлен 10.09.2014Факторный анализ прибыли от продаж продукции (работ). Оценка экономических результатов предприятия, выявление факторов, влияющих на конечный результат. Предложения по совершенствованию экономических результатов на примере ООО "Бройлер ЭМ" г. Москва.
курсовая работа [71,5 K], добавлен 07.03.2011Анализ системы показателей, характеризующих как адекватность модели, так и ее точность; определение абсолютной и средней ошибок прогноза. Основные показатели динамики экономических явлений, использование средних значений для сглаживания временных рядов.
контрольная работа [16,7 K], добавлен 13.08.2010Понятие и основные этапы разработки прогноза. Задачи анализа временных рядов. Оценка состояния и тенденций развития прогнозирования на основе анализа временных рядов СУ-167 ОАО "Мозырьпромстрой", практические рекомендации по его совершенствованию.
курсовая работа [378,6 K], добавлен 01.07.2013Характеристика факторов, влияющих на уровень цен на информационные продукты. Взаимосвязь динамики спроса и предложения. Оценка экономической эффективности использования информационных технологий. Классификация продукции и услуг в сетевой экономике.
контрольная работа [431,4 K], добавлен 23.01.2012Статистический анализ рядов динамики. Показатели изменения уровней ряда динамики. Связный анализ рядов динамики. Корреляционный анализ рядов динамики. Элементы интерполяции и экстраполяции. Встроенные функции MS Excel для анализа рядов динамики.
курсовая работа [1,0 M], добавлен 17.12.2015Использование эконометрических моделей, построенных на основе временных рядов, для прогнозирования перспектив бизнеса и экономики. Общий вид модели авторегрессии первого порядка. Характеристика модели скользящего среднего. Идентификация модели ARMA.
курсовая работа [2,0 M], добавлен 13.09.2015Обзор факторов, влияющих на эффективность производственно-хозяйственной деятельности предприятия. Анализ социальных, внешних и технических факторов, влияющих на систему перевозки груза на примере перевозки пакетированных досок. Порядок укладки пакета.
курсовая работа [644,0 K], добавлен 13.01.2014Анализ экономических и социальных показателей целлюлозно-бумажной отрасли России. Исследование состояния экспорта и импорта продукции в отрасли. Определение факторов, влияющих на развитие целлюлозно-бумажной промышленности в мире и перспектив развития.
курсовая работа [232,1 K], добавлен 30.03.2018Предмет, объект, цель, содержание и задачи анализа хозяйственной деятельности в современных условиях. Построение логических и математических моделей факторных систем. Построение факторной модели прибыли и расчет общего прироста результативного показателя.
контрольная работа [14,8 K], добавлен 28.01.2010Аспекты развития рынка информационных услуг, его современное состояние на примере России. Становление и развитие информационных технологий экономики. Анализ основных факторов воздействия на рынок информационных услуг. Расчет многофакторной модели.
дипломная работа [484,5 K], добавлен 22.12.2010Парная регрессия и корреляция в эконометрических исследованиях, методика и основные этапы ее построения, анализ полученных результатов и их интерпретация. Проверка структурной формы модели на идентификацию, исходя из заданной гипотетической модели.
контрольная работа [33,8 K], добавлен 19.03.2012Основные показатели численности населения и его размещения по Калужской области. Построение ранжированного и интервального рядов распределения по одному группировочному факторному признаку. Анализ типических групп по показателям в среднем по совокупности.
курсовая работа [73,6 K], добавлен 11.10.2010Анализ влияния показателей экстенсивности и интенсивности на изменение объема продукции. Определение выполнения плана и влияния изменения количества и цены продукции с использованием индексного метода. Анализ динамики основных производственных фондов.
контрольная работа [111,0 K], добавлен 16.12.2014