Вопрос или проблема
У меня есть несколько рядов цен одного и того же актива, как показано ниже.
Визуально очевидно, что ряд “A” (горизонтальная линия) является выбросом, и ряд “E” (линия с зигзагообразным паттерном) также ведет себя иначе.
Какой лучший метод для определения того, является ли целый ряд выбросом? Следует ли мне рассмотреть какую-либо модель классификации?
Одним из методов, который стоит рассмотреть, является динамическое временное выравнивание (DTW), которое измеряет сходство между временными рядами. DTW способен сравнивать временные ряды различной длины, и полученный балл можно использовать для определения, какие ряды наиболее уникальны в вашей выборке. Вы найдете во многих статьях, что DTW хорошо работает с классификацией KNN (я могу подтвердить, что у меня был успех с этой комбинацией), поэтому вы можете написать скрипт, который вычисляет балл DTW, а затем находит ряды, чей балл наиболее удален от остальных.
Некоторые вводные материалы по DTW и полезные страницы:
Для человеческого наблюдателя очевидно, что “A” и “E” различаются, потому что они показывают разные паттерны в своей амплитуде по сравнению с “B”, “C” и “D”. Траектория “E” на самом деле не выглядит так уж иначе в основном, она просто быстро колеблется вверх и вниз в определенные интервалы времени.
Моя идея заключается в том, чтобы оценить амплитуду вашей линии в определенных окнах вашего временного диапазона. Допустим, вы берете амплитуду каждые два часа как разницу между самой высокой и самой низкой точками графика в этом окне, давайте назовем это $A(t,l)$, где $t$ представляет собой начало вашего временного окна, а $l$ указывает на линию. Затем вы можете сравнить это значение между пятью линиями.
Вы можете поэкспериментировать с установкой различных порогов, чтобы увидеть, что работает лучше. Учитывая только эти данные, это будет работать следующим образом:
- Установите минимальный порог $t_{min}$ для $A$ на какое-то низкое значение. Низкие амплитуды или амплитуды $0$ вероятно всегда неверны в финансовом контексте.
Это обнаружит, что линия “A” является выбросом, потому что $A(t,a) = 0 < t_{min}$ - Установите порог разницы $t_{diff}$ на основе значений всех линий, которые не были отфильтрованы на предыдущем шаге. Вы, вероятно, можете провести некоторые математические вычисления с использованием стандартных отклонений здесь или использовать эвристику, такую как: если $A(t,l) > 2 * mean(A(t,l_{all}))$.
Тогда вы, вероятно, обнаружите, что $A(t,e)$ значительно больше, чем у “B”, “C” и “D”.
Надеюсь, это поможет!
Ответ или решение
Для определения того, является ли целая серия выбросом относительно других, необходимо применить несколько статистических и вычислительных методов. В данном ответе будет рассмотрено несколько подходов к решению данной задачи с учетом особенностей временных рядов.
1. Визуальный анализ
Визуальный осмотр временных рядов может предоставить первоначальные инсайты о потенциальных выбросах. Например, если вы заметили, что серия "A" (плоская линия) и серия "E" (зигзагообразная линия) заметно отличаются от других, это может быть сигналом для дальнейшего анализа.
2. Статистические меры
Для количественной оценки отклонений временных рядов можно использовать следующие подходы:
2.1. Оценка амплитуды
Используйте интервал времени (например, двухчасовые окна) для вычисления амплитуды каждой линии, обозначенной как ( A(t, l) ), где ( t ) – начало временного окна, а ( l ) – индекс линии. Затем сравните амплитуды, чтобы выявить ряды с резко отклоняющимися значениями.
-
Минимальное пороговое значение (( t_{min} )): Установите малое значение, чтобы выявить линии с нулевой амплитудой, которые могут указывать на несоответствие (например, серия "A").
-
Разностное пороговое значение (( t_{diff} )): Используйте стандартное отклонение или другие статистические метрики для определения выбросов. Например, если ( A(t, l) > 2 \times \text{mean}(A(t, l_{all})) ), это может сигнализировать о том, что серия "E" значительно отклоняется от остальных.
2.2. Зависимости и корреляции
Расчет корреляционного коэффициента между временными рядами может помочь определить, насколько близко они друг к другу. Ниже приведены некоторые ключевые моменты:
- Корреляция Пирсона: Для упрощения можно использовать корреляцию для анализа данных. Ряды с низкой корреляцией с другими могут рассматриваться как выбросы.
3. Сравнение с помощью Dynamic Time Warping (DTW)
Dynamic Time Warping — это мощный инструмент для сравнения временных рядов, который позволяет находить различия между рядами различной длины. Вы можете рассмотреть следующий процесс:
- Рассчитайте DTW-дистанцию между каждой парой временных рядов.
- Полученные значения можно использовать для создания матрицы сходства.
- Проанализируйте эту матрицу, чтобы идентифицировать ряды с наибольшими значениями DTW, что будет свидетельствовать о значительных различиях.
С помощью DTW вы также можете интегрировать методы классификации (например, KNN) для автоматического выявления выбросов.
4. Классификация и машинное обучение
Если вы располагаете достаточным объемом данных, обучение классификационной модели может помочь в определении выбросов. Рассмотрите использование следующих моделей:
- Классификаторы на основе деревьев решений: Они могут быть эффективно использованы для понимания, какие характеристики определяют выбросы.
- Методы ансамблей: Наиболее известные из них — Random Forest и Gradient Boosting, которые часто демонстрируют высокую точность в сложных задачах.
Заключение
Итак, для выявления выбросов в временных рядах можно использовать как традиционные статистические методы, так и современные алгоритмы машинного обучения. Важно помнить, что корректная интерпретация результатов требует глубокого понимания контекста данных. Начните с визуального анализа, а затем примените статистические тесты и DTW, чтобы определить, действительно ли линии "A" и "E" являются выбросами в вашем наборе данных.