Как определить, является ли целая серия выбросом по отношению к другим?

Вопрос или проблема

У меня есть несколько рядов цен одного и того же актива, как показано ниже.

введите описание изображения здесь

Визуально очевидно, что ряд “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 — это мощный инструмент для сравнения временных рядов, который позволяет находить различия между рядами различной длины. Вы можете рассмотреть следующий процесс:

  1. Рассчитайте DTW-дистанцию между каждой парой временных рядов.
  2. Полученные значения можно использовать для создания матрицы сходства.
  3. Проанализируйте эту матрицу, чтобы идентифицировать ряды с наибольшими значениями DTW, что будет свидетельствовать о значительных различиях.

С помощью DTW вы также можете интегрировать методы классификации (например, KNN) для автоматического выявления выбросов.

4. Классификация и машинное обучение

Если вы располагаете достаточным объемом данных, обучение классификационной модели может помочь в определении выбросов. Рассмотрите использование следующих моделей:

  • Классификаторы на основе деревьев решений: Они могут быть эффективно использованы для понимания, какие характеристики определяют выбросы.
  • Методы ансамблей: Наиболее известные из них — Random Forest и Gradient Boosting, которые часто демонстрируют высокую точность в сложных задачах.

Заключение

Итак, для выявления выбросов в временных рядах можно использовать как традиционные статистические методы, так и современные алгоритмы машинного обучения. Важно помнить, что корректная интерпретация результатов требует глубокого понимания контекста данных. Начните с визуального анализа, а затем примените статистические тесты и DTW, чтобы определить, действительно ли линии "A" и "E" являются выбросами в вашем наборе данных.

Оцените материал
Добавить комментарий

Капча загружается...