Это может показаться очень простым, но у меня есть такая проблема: у меня есть очередь данных с размером окна 300. Новые данные добавляются на одном конце, старые значения удаляются с другого конца.
Я ожидаю, что данные в очереди останутся более или менее согласованными, например: 10,12,15,10,20, а затем начнут резко расти: 15,10,20,22,25,26,28,30,32 ... вплоть до 150 или около того. Там данные могут немного колебаться, затем они будут снижаться с аналогичным уклоном (120,118,116,115 ...) вплоть до 20 или около того.
Я пытаюсь программно определить поворотный момент в этой серии данных, но мой код обнаруживает пики чаще, чем хотелось бы. Как я могу определить, когда график растет, когда он достиг определенной точки поворота и когда он начинает падать? Должен ли я попытаться посмотреть на скорость изменения скорости изменения?
источник
Ответы:
Если вы знаете, что это именно тот паттерн, который вы ожидаете, тогда вы можете искать именно этот паттерн, но тогда вы пропустите другие паттерны. Так. Если вы знаете, что пик будет равен 150, то вы можете искать 2, 3, 4 или (сколько угодно) последовательных значений 150. Но вы говорите «или около того» - насколько велико «или около того»? Возможно, пик определен как «3 последовательных значения более 130» или, может быть, «3 из 5 последовательных значений более 140». Это вам решать.
С другой стороны, если вы просто ищете какую-то общую программу для обнаружения пиков - ну, это было рассмотрено. Существует множество методов сглаживания (например, лесс, сплайны разных видов, скользящие средние и т. Д.). Я не эксперт в этой области, но об этом много литературы.
источник
Посмотрите на SiZer (Significant ZERo пересечения ... или склоны, я не помню), хотя, возможно, это скорее инструмент поперечного сечения, чем инструмент временных рядов. Идея состоит в том, чтобы сгладить данные с различной шириной полосы (варьирующейся примерно на три порядка) и применить некоторые локальные тесты, чтобы увидеть, является ли наклон локальной регрессии значительным положительным или отрицательным (или неопределенным). Это дает убедительную картину, которая поможет вам определить, какие функции есть. (Я удивлен, что нет реализации R, только Matlab.)
источник