Существуют ли какие-либо документированные алгоритмы для разделения разделов данного набора данных на различные кривые наилучшего соответствия?
Например, большинство людей, смотрящих на эту таблицу данных, с готовностью разделят ее на 3 части: синусоидальный сегмент, линейный сегмент и обратный экспоненциальный сегмент. Фактически, я сделал этот конкретный с синусоидой, линией и простой экспоненциальной формулой.
Существуют ли алгоритмы для нахождения таких частей, которые затем можно отдельно подгонять к различным кривым / линиям, чтобы сделать своего рода составную серию наиболее подходящих подмножеств данных?
Обратите внимание, что хотя в примере концы сегментов в значительной степени выстроены в линию, это не обязательно будет иметь место; также могут быть внезапные колебания в значениях на отрезке сегмента. Возможно, такие случаи будет легче обнаружить.
Обновление: Вот изображение небольшого количества реальных данных:
Обновление 2: вот необычно небольшой набор данных в реальном мире (всего 509 точек данных):
4,53,53,53,53,58,56,52,49,52,56,51,44,39,39,39,37,33,27,21,18,12,19,30,45,66,92,118,135,148,153,160,168,174,181,187,191,190,191,192,194,194,194,193,193,201,200,199,199,199,197,193,190,187,176,162,157,154,144,126,110,87,74,57,46,44,51,60,65,66,90,106,99,87,84,85,83,91,95,99,101,102,102,103,105,110,107,108,135,171,171,141,120,78,42,44,52,54,103,128,82,103,46,27,73,123,125,77,24,30,27,36,42,49,32,55,20,16,21,31,78,140,116,99,58,139,70,22,44,7,48,32,18,16,25,16,17,35,29,11,13,8,8,18,14,0,10,18,2,1,4,0,61,87,91,2,0,2,9,40,21,2,14,5,9,49,116,100,114,115,62,41,119,191,190,164,156,109,37,15,0,5,1,0,0,2,4,2,0,48,129,168,112,98,95,119,125,191,241,209,229,230,231,246,249,240,99,32,0,0,2,13,28,39,15,15,19,31,47,61,92,91,99,108,114,118,121,125,129,129,125,125,131,135,138,142,147,141,149,153,152,153,159,161,158,158,162,167,171,173,174,176,178,184,190,190,185,190,200,199,189,196,197,197,196,199,200,195,187,191,192,190,186,184,184,179,173,171,170,164,156,155,156,151,141,141,139,143,143,140,146,145,130,126,127,127,125,122,122,127,131,134,140,150,160,166,175,192,208,243,251,255,255,255,249,221,190,181,181,181,181,179,173,165,159,153,162,169,165,154,144,142,145,136,134,131,130,128,124,119,115,103,78,54,40,25,8,2,7,12,25,13,22,15,33,34,57,71,48,16,1,2,0,2,21,112,174,191,190,152,153,161,159,153,71,16,28,3,4,0,14,26,30,26,15,12,19,21,18,53,89,125,139,140,142,141,135,136,140,159,170,173,176,184,180,170,167,168,170,167,161,163,170,164,161,160,163,163,160,160,163,169,166,161,156,155,156,158,160,150,149,149,151,154,156,156,156,151,149,150,153,154,151,146,144,149,150,151,152,151,150,148,147,144,141,137,133,130,128,128,128,136,143,159,180,196,205,212,218,222,225,227,227,225,223,222,222,221,220,220,220,220,221,222,223,221,223,225,226,227,228,232,235,234,236,238,240,241,240,239,237,238,240,240,237,236,239,238,235
Вот она, на графике, с подходящим положением некоторых известных ребер элементов реального мира, отмеченных пунктирными линиями, роскошь, которую мы обычно не имеем:
Одна роскошь, которую мы имеем, однако, задним числом: данные в моем случае не являются временными рядами, а скорее пространственно связаны; имеет смысл анализировать весь набор данных (обычно 5000 - 15000 точек данных) сразу, а не на постоянной основе.
источник
Ответы:
Моя интерпретация вопроса заключается в том, что ФП ищет методологии, которые бы соответствовали форме (ам) представленных примеров, а не остаткам ВАК. Кроме того, желательны автоматизированные процедуры, которые не требуют значительного вмешательства человека или аналитика. Бокс-Дженкинс может не подойти, несмотря на то, что они подчеркивают эту тему, поскольку они требуют значительного участия аналитиков.
Модули R существуют для этого типа не основанного на моментах сопоставления с образцом. Кластеризация распределения перестановок - это такая методика сопоставления с образцом, разработанная учёным из Института Макса Планка, которая соответствует указанным вами критериям. Его применение - данные временных рядов, но это не ограничивается этим. Вот цитата для модуля R, который был разработан:
pdc: пакет R для кластеризации временных рядов на основе сложности, автор Andreas Brandmaier
В дополнение к PDC, есть машинное обучение, рутина iSax, разработанная Иамоном Кеогом из Калифорнийского университета в Ирвине, с которой также стоит сравнить.
Наконец, есть статья о разрушении данных: раскрытие скрытого порядка в данныхChattopadhyay и Lipson. Помимо умного названия, есть серьезная цель в работе. Вот аннотация: «От автоматического распознавания речи до обнаружения необычных звезд, в основе почти всех задач автоматического обнаружения лежит возможность сравнивать и сопоставлять потоки данных друг с другом, выявлять связи и выявлять выбросы. Однако, несмотря на преобладание данных, автоматизированные методы не отставать. Ключевым узким местом является то, что большинство алгоритмов сравнения данных сегодня полагаются на человека-специалиста, чтобы определить, какие «особенности» данных актуальны для сравнения. Здесь мы предлагаем новый принцип для оценки сходства между источниками произвольных потоки данных, не используя ни знания предметной области, ни обучение. Мы демонстрируем применение этого принципа к анализу данных из ряда реальных проблем, включая устранение неоднозначности моделей электроэнцефалографа, относящихся к эпилептическим припадкам, обнаружение аномальной сердечной деятельности по звукозаписи сердца и классификацию астрономических объектов по необработанной фотометрии. Во всех этих случаях и без доступа к каким-либо предметным знаниям мы демонстрируем производительность наравне с точностью, достигнутой специализированными алгоритмами и эвристиками, разработанными экспертами в предметной области. Мы предполагаем, что принципы разрушения данных могут открыть дверь для понимания все более сложных наблюдений, особенно когда эксперты не знают, что искать ». Во всех этих случаях и без доступа к каким-либо предметным знаниям мы демонстрируем производительность наравне с точностью, достигнутой специализированными алгоритмами и эвристиками, разработанными экспертами в предметной области. Мы предполагаем, что принципы разрушения данных могут открыть дверь для понимания все более сложных наблюдений, особенно когда эксперты не знают, что искать ». Во всех этих случаях и без доступа к каким-либо предметным знаниям мы демонстрируем производительность наравне с точностью, достигнутой специализированными алгоритмами и эвристиками, разработанными экспертами в предметной области. Мы предполагаем, что принципы разрушения данных могут открыть дверь для понимания все более сложных наблюдений, особенно когда эксперты не знают, что искать ».
Этот подход выходит далеко за пределы криволинейной подгонки. Это стоит проверить.
источник
Обнаружение точек изменения во временном ряду требует построения надежной глобальной модели ARIMA (конечно, в вашем случае с ошибками модели и изменениями параметров с течением времени), а затем определение наиболее значимой точки изменения в параметрах этой модели. Используя ваши 509 значений, наиболее значимым моментом изменения стал период 353. Я использовал некоторые проприетарные алгоритмы, доступные в AUTOBOX (которые я помогал разрабатывать), которые могли бы быть лицензированы для вашего индивидуального приложения. Основная идея состоит в том, чтобы разделить данные на две части и после нахождения наиболее важной точки изменения провести повторный анализ каждого из двух временных диапазонов в отдельности (1-352; 353-509), чтобы определить дополнительные точки изменения в каждом из двух наборов. Это повторяется до тех пор, пока у вас не будет k подмножеств. Я приложил первый шаг, используя этот подход.
источник
Я думаю, что название потока вводит в заблуждение: вы не хотите сравнивать функции плотности, но вы на самом деле ищете структурные разрывы во временном ряду. Однако вы не указываете, должны ли эти структурные разрывы быть обнаружены в скользящем временном окне или задним числом, просматривая общую историю временных рядов. В этом смысле ваш вопрос на самом деле является дубликатом этого: какой метод обнаружения структурных разрывов по временным рядам?
Как упоминал Роб Хиндман в этой ссылке, R предлагает пакет Strucchange для этой цели. Я поиграл с вашими данными, но должен сказать, что результаты разочаровывают [действительно ли первая точка данных равна 4 или должна быть 54?]:
Я не постоянный пользователь пакета. Как вы можете видеть, это зависит от модели, которую вы вписываете в данные. Вы можете поэкспериментировать с
которая дает вам наилучшую модель ARIMA.
источник