Изучение промышленного индекса Доу-Джонса с использованием линейной регрессии

Простой пример выбора функций и дрейфа модели

Промышленный индекс Доу-Джонса (DJIA) был впервые представлен Чарльзом Доу в 1896 году и с тех пор стал одним из основных ориентиров для показателей фондового рынка на Нью-Йоркской фондовой бирже.

В этом посте мы будем использовать его, чтобы лучше понять плюсы и минусы простых моделей линейной регрессии, предположения, на которые они опираются, и то, как мы можем использовать их для выбора функций.

Значение индекса Доу — это то, что известно как взвешенный по цене индекс, среднее значение цены 30 известных акций. Компоненты индекса Доу со временем меняются, что делает этот пример особенно подходящим для наших целей.

Для простоты мы сосредоточимся на значениях индекса Доу-Джонса за 2020 год, поскольку они включают крах, вызванный первым набором блокировок CoVID (см. Здесь для более подробного анализа CoVID, основанного на данных).

Чтобы иметь возможность лучше оценить нашу модель, мы разделим наш набор данных на периоды обучения и тестирования. Таким образом, мы можем обучить модель, используя только данные в период обучения, и получить оценку того, насколько хорошо она справляется с данными, которые она никогда раньше не видела, путем сравнения прогнозов моделей с фактическими данными в наборе данных тестирования. Мы произвольно решили использовать период до 1 августа 2020 года для обучения, а оставшуюся часть года — для тестирования:

Выбор функции

Теперь все готово для обучения нашей модели. Поскольку нам интересно узнать больше о выборе функций, мы начинаем с обучения модели с 35 отдельными акциями, чтобы увидеть, сможем ли мы успешно определить, какие из них следует исключить.

Мы используем замечательный пакет Python statsmodels для выполнения подбора линейной регрессии Обычные наименьшие квадраты (OLS). Детали того, как работает OLS, не важны для наших целей. Достаточно сказать, что OLS работает, минимизируя квадрат разницы между предсказанными и эмпирическими значениями.

statsmodels предоставляет нам подробный статистический анализ для каждого из коэффициентов нашей модели, а также множество других статистических результатов о качестве полученной модели.

Здесь мы видим 6 столбцов результатов для каждой из функций модели. В частности, у нас есть

  • coeff — оценка этого параметра модели (вес, присвоенный этой функции).
  • стандартная ошибка — стандартная ошибка нашей оценки (

Из этих двух значений мы можем вычислить t-score нашей оценки:

который мы можем найти в третьем столбце. Это значение, по сути, дает нам показатель того, насколько мала ошибка по отношению к оценочному значению: чем больше t-оценка, тем меньше ошибка и тем более мы можем быть уверены в нашей оценке.

Чтобы лучше количественно оценить нашу уверенность, обычно вычисляют соответствующее p-значение. При относительно распространенных предположениях мы ожидаем, что t-показатель будет следовать стандартному распределению, а вероятность получения результатов теста, по крайней мере, столь же экстремальных, как и наблюдаемое значение, представляет собой просто площадь под кривой справа от значения t-показателя. Эта область известна как значение p, и мы можем найти ее в четвертом столбце результатов выше.

Есть некоторые нюансы в интерпретации p-значений, но вкратце: чем меньше p-значение, тем сильнее доказательство того, что оцениваемое нами значение отличается от нуля (если коэффициент данного признака неотличим от нуля, то этот признак неотличим от нуля). не относится к нашей модели).

Типичные пороговые значения p-значения:

  • p‹0,05 — Умеренные доказательства
  • p‹0,01 — Веские доказательства
  • p‹0,001 — Очень веские доказательства

Теперь мы можем тщательно просмотреть приведенную выше таблицу, чтобы определить, какие из наших функций несущественны, или мы можем построить p-значения для каждой из наших функций и получить всю необходимую информацию с первого взгляда:

На этом графике мы быстро определяем 5 характеристик (акций), веса которых не отличаются от нуля: AMGN, CRM, DD, GE и HON. В нашем простом примере причина, по которой эти акции не имеют смысла, заключается в том, что они просто не входят в индекс Доу-Джонса в этот период.

Если мы теперь удалим эти 5 компонентов и обучим новую улучшенную модель, мы получим:

без несущественных компонентов:

Сравнение моделей

Здесь важно отметить один важный момент: обновленная модель приписывает разные веса практически всем компонентам, поэтому, если нас интересует правильная оценка вклада каждой акции, а не только того, какие акции являются значительными, мы должны использовать обновленную модель. ценности:

Хотя мы потратили значительное количество времени на обсуждение двух разных моделей, которые мы обучили, на самом деле мы еще не смотрели на результаты моделей. Мы делаем это сейчас, нанося на график эмпирические данные и прогнозы модели как для периодов обучения, так и для периодов тестирования:

Как мы видим, результаты отличные в период обучения (что и следовало ожидать, поскольку R2 модели равнялось 1), но мы начинаем видеть некоторые расхождения по мере того, как мы продвигаемся все глубже и глубже в период тестирования.

Дрифт модели

Мы можем получить более четкое представление о том, что происходит, нанеся на график остатки, разницу между моделью и данными, как функцию времени:

Как мы видим, наша модель работает очень хорошо в течение первых нескольких недель периода тестирования, а затем полностью разваливается. Причина такого загадочного поведения на удивление проста: фундаментальное предположение, лежащее в основе нашей модели, больше не действует. Состав DJIA изменился 31 августа 2020 года: Pfizer, Raytheon и Exxon Mobile были исключены и заменены Amgen, Honeywell и Salesforce.

Это известно как дрейф модели, который можно определить как:

[T] ухудшение производительности модели из-за изменений в данных и взаимосвязях между входными и выходными переменными.

Хотя вы вряд ли будете часто видеть такой явный эффект, вы почти наверняка увидите нечто подобное в любой модели, которую вы запускаете в производство. Со временем мир меняется, и новые данные, к которым вы применяете свою модель, начинают значительно отличаться от данных, которые вы используете для ее обучения.

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

Настоящий DJIA

Несмотря на впечатляющие результаты, которые мы получили выше, способ расчета DJIA немного отличается. Как мы упоминали в начале, индекс Доу-Джонса — это взвешенный по цене индекс, который рассчитывается путем суммирования всех цен отдельных акций и деления на так называемый делитель Доу-Джонса d. Другими словами:

где сумма превышает 30 компонентов. Исходя из этого определения, мы ожидаем, что вес, присвоенный каждому отдельному компоненту, будет одинаковым (1/d), однако наша модель приписывает каждому признаку разные веса (хотя большинство весов относительно близки).

Одна из причин заключается в том, что значение делителя d со временем меняется. На самом деле за рассматриваемый нами период она менялась дважды:

что ясно показывает, насколько ограниченной была наша модель. Мы предполагали не только то, что компоненты остаются фиксированными, но также и то, что соответствующие веса были постоянными (это фундаментальные предположения в линейных моделях такого рода), оба из которых были опровергнуты данными.

Несмотря на все это, нам удалось получить отличные результаты, что свидетельствует о силе линейных моделей. Полученные нами разные веса обусловлены формой ковариационной матрицы и тем, как каждая акция коррелирует с индексом за рассматриваемое время, но это тема, выходящая за рамки этого и без того длинного поста.

Наконец, вы можете использовать блокнот Jupyter, лежащий в основе приведенного выше анализа в этой сути. Вы должны подробно изучить код, чтобы убедиться, что вы его понимаете.

Если вам понравился этот пост, вы можете поддержать меня, подписавшись на меня и став участником Medium по моей ссылке: https://bgoncalves.medium.com/membership

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