Обновление: Самый эффективный алгоритм до сих пор - это.
В этом вопросе рассматриваются надежные алгоритмы обнаружения внезапных пиков в данных времени в реальном времени.
Рассмотрим следующий набор данных:
p = [1 1 1.1 1 0.9 1 1 1.1 1 0.9 1 1.1 1 1 0.9 1 1 1.1 1 1 1 1 1.1 0.9 1 1.1 1 1 0.9 1, ...
1.1 1 1 1.1 1 0.8 0.9 1 1.2 0.9 1 1 1.1 1.2 1 1.5 1 3 2 5 3 2 1 1 1 0.9 1 1 3, ...
2.6 4 3 3.2 2 1 1 0.8 4 4 2 2.5 1 1 1];
(формат Matlab, но это не язык, а алгоритм)
Вы можете четко видеть, что есть три больших пика и небольшие пики. Этот набор данных является конкретным примером класса наборов данных таймсеров, о которых идет речь. Этот класс наборов данных имеет две общие особенности:
- Существует основной шум с общим значением
- Существуют большие "пики" или "более высокие точки данных", которые значительно отклоняются от шума.
Предположим также, что:
- ширина пиков не может быть определена заранее
- высота пиков явно отличается от других значений
- используемый алгоритм должен вычислять реальное время (поэтому измените с каждым новым datapoint)
Для такой ситуации необходимо построить граничное значение, которое вызывает сигналы. Однако граничное значение не может быть статическим и должно определяться в реальном времени на основе алгоритма.
Мой вопрос: что такое хороший алгоритм для вычисления таких пороговых значений в реальном времени? Существуют ли конкретные алгоритмы для таких ситуаций? Каковы наиболее известные алгоритмы?
Надежные алгоритмы или полезные идеи все очень ценятся. (может отвечать на любом языке: об алгоритме)