Одна из базовых задач анализа данных — поиск взаимосвязи двух величин. Здесь я хочу показать пример поиска связи между ценой нефти и курсом рубля.
Во-первых надо определить, имеет ли вообще задача смысл. Почему нефть и рубль должны/могут быть взаимосвязаны? Вкратце, модель такая: экспортёры продают нефть за доллары, а затем продают доллары, чтобы получить рубли для расчётов внутри страны. Механизм крайне упрощён, надо учитывать объёмы добычи-продажи, что эскортируют не только нефть, не всегда экспортёры продают доллары, на курс валют влияет ЦБ интервенциями и т.д. И тем не менее, будем считать, что модель более-менее рабочая, то есть, что существуют фундаментальные причины для взаимосвязи цены нефти и курса рубля.
Что нам понадобится. Данные — возьмём замеренные ежедневно цену нефти (сорт Brent) в долларах и курс рубля к доллару, данные можно свободно получить на сайте finam.ru, период выборки — с начала прошлого года. Инструментарий — нам понадобится строить много графиков, чтобы визуально оценивать как вообще работает модель и довольно простой аппарат для построения регрессий. Все эти возможности есть в Gnuplot, забегая вперёд — скрипт отрисовки графиков и подсчёта регрессий занимает не более 40 строк кода. На все рабочие скрипты ссылка будет дана ниже.
Посмотрим на совместную динамику по времени цены нефти и курса рубля:
Нефть вниз, рубль — вверх. Какая-то взаимосвязь есть, но впечатление что что-то упущено… Ага! Мы сравниваем величины «Нефть за доллары» и «доллар за рубли», то есть банально размерности не совпадаю. Курс рубля возьмём в виде «Рубль/доллар» и перерисуем картинку:
Вот тут корреляция уже явная. Мы на верном пути, продолжаем.
Построим множество точек (Нефть/Usd, Рубль/Usd) и проведём две линии регрессии, Y1 — линейная, Y2 — квадратичная, у обеих линий коэффициент детерминации высокий, то есть зависимость между ценой нефти и рублём довольно тесная.
Линии регрессий практически совпадают. Выберем линейную, во-первых она проще и имеет меньше параметров, что очень важно, в том числе и с точки зрения принципа Оккама, а во вторых, у неё чуть больше коэффициент R2, то есть формально она лучше, немного, но лучше.
Перестроим график курса рубля от цены нефти в привычном формате, то есть так, как мы видим эти цифры в новостях, на сайтах, на табличках около банков. При этом для наглядности оставим на графике все наши построения, только сделаем их цвет бледнее.
Резюме. Курс рубля довольно тесно связан с ценой нефти, зависимость линейная (для курса Rub/Usd), коэффициент детерминации ~0,97.
PS. Все данные, скрипты и файлы для построения картинок в Gnuplot можно скачать по ссылке: drive.google.com/file/d/0BwHQSqFOG-7ldjk0SHZ4M1RxRGc/view?usp=sharing
PPS
Update. В формуле исправлена опечатка (на сами графики это не влияло). Спасибо Алексею Кузьмину (@alexeykuzmin0) за замечание.
Во-первых надо определить, имеет ли вообще задача смысл. Почему нефть и рубль должны/могут быть взаимосвязаны? Вкратце, модель такая: экспортёры продают нефть за доллары, а затем продают доллары, чтобы получить рубли для расчётов внутри страны. Механизм крайне упрощён, надо учитывать объёмы добычи-продажи, что эскортируют не только нефть, не всегда экспортёры продают доллары, на курс валют влияет ЦБ интервенциями и т.д. И тем не менее, будем считать, что модель более-менее рабочая, то есть, что существуют фундаментальные причины для взаимосвязи цены нефти и курса рубля.
Что нам понадобится. Данные — возьмём замеренные ежедневно цену нефти (сорт Brent) в долларах и курс рубля к доллару, данные можно свободно получить на сайте finam.ru, период выборки — с начала прошлого года. Инструментарий — нам понадобится строить много графиков, чтобы визуально оценивать как вообще работает модель и довольно простой аппарат для построения регрессий. Все эти возможности есть в Gnuplot, забегая вперёд — скрипт отрисовки графиков и подсчёта регрессий занимает не более 40 строк кода. На все рабочие скрипты ссылка будет дана ниже.
Посмотрим на совместную динамику по времени цены нефти и курса рубля:
Нефть вниз, рубль — вверх. Какая-то взаимосвязь есть, но впечатление что что-то упущено… Ага! Мы сравниваем величины «Нефть за доллары» и «доллар за рубли», то есть банально размерности не совпадаю. Курс рубля возьмём в виде «Рубль/доллар» и перерисуем картинку:
Вот тут корреляция уже явная. Мы на верном пути, продолжаем.
Построим множество точек (Нефть/Usd, Рубль/Usd) и проведём две линии регрессии, Y1 — линейная, Y2 — квадратичная, у обеих линий коэффициент детерминации высокий, то есть зависимость между ценой нефти и рублём довольно тесная.
Линии регрессий практически совпадают. Выберем линейную, во-первых она проще и имеет меньше параметров, что очень важно, в том числе и с точки зрения принципа Оккама, а во вторых, у неё чуть больше коэффициент R2, то есть формально она лучше, немного, но лучше.
Перестроим график курса рубля от цены нефти в привычном формате, то есть так, как мы видим эти цифры в новостях, на сайтах, на табличках около банков. При этом для наглядности оставим на графике все наши построения, только сделаем их цвет бледнее.
Резюме. Курс рубля довольно тесно связан с ценой нефти, зависимость линейная (для курса Rub/Usd), коэффициент детерминации ~0,97.
PS. Все данные, скрипты и файлы для построения картинок в Gnuplot можно скачать по ссылке: drive.google.com/file/d/0BwHQSqFOG-7ldjk0SHZ4M1RxRGc/view?usp=sharing
PPS
Update. В формуле исправлена опечатка (на сами графики это не влияло). Спасибо Алексею Кузьмину (@alexeykuzmin0) за замечание.