Я работаю над временным рядом числовых значений, например, полученных датчиком температуры. Я хотел бы отфильтровать эти значения, примерно выбрав те образцы, которые образуют, например, верхние 10% полученных значений.
Очевидное решение для записи всех выборок и использования любого известного алгоритма для извлечения k-максимальных значений невозможно в моем случае по двум причинам:
Ряд может быть бесконечным, память определенно нет.
Я бы хотел, чтобы этот алгоритм можно было использовать в режиме реального времени или, по крайней мере, в потоковом режиме с заданной задержкой.
Распределение значений не нормальное, и оно не согласуется ни с одним известным распределением, о котором я знаю. Метрики, которые я уже имею в наличии, включают среднее значение, дисперсию и асимметрию значений, которые уже были получены.
В отличие от этого вопроса , мне не нужна идеальная точность, хотя я хотел бы иметь возможность настроить параметры алгоритма выбора.
Я полагаю, что нечто подобное используется в медиа-кодеках с переменной скоростью передачи данных (VBR) за один проход для выделения доступной полосы пропускания каждому кадру путем определения количества доступных битов. К сожалению, все алгоритмы VBR, которые я изучал, слишком сфокусированы на DSP и медиапотоках, чтобы я мог их понять и / или реализовать.
Существуют ли какие-либо известные алгоритмы, которые могли бы помочь мне решить эту проблему? Будем очень благодарны за любые подсказки, которые будут ориентировать меня в правильном направлении.