Я пытаюсь найти тенденцию в нескольких наборах данных. Тенденции включают в себя поиск наиболее подходящей линии, но, если я представлю, процедура не будет слишком отличаться для любой другой модели (возможно, это займет больше времени).
Возможны 3 сценария:
- Все достоверные данные, где все данные соответствуют одной тенденции с низкой изменчивостью.
- Все неверные данные, когда все или большинство данных демонстрируют огромную изменчивость, и весь набор данных должен быть отброшен.
- Частично достоверные данные, когда некоторые данные могут быть достоверными, а остальные следует отбросить.
Если чистый процент данных с крайней изменчивостью слишком высок, весь набор должен быть отброшен. Это означает, что в основном есть только этот тип данных, а процент плохих данных варьируется:
0 % плохого = вариант 1
100 % плохой = случай 2Я ищу только смежные участки с низкой изменчивостью; т.е. мне все равно, есть ли какие-то отдельные точки, которые соответствуют тренду
То, что я ищу, - это умный способ подразделить набор данных и найти указанную тенденцию. По характеру проблемы я не ищу разделы, которые лучше всего соответствуют общей тенденции. Я понимаю, что подраздел с «более чистыми» данными в конечном итоге будет иметь несколько иные свойства линии тренда, чем в целом (который будет содержать выбросы). Это именно то, что я хочу, поскольку эта часть данных лучше всего отражает фактическую тенденцию.
Я свободно говорю на C++, но, поскольку я пытаюсь сделать код открытым и кроссплатформенным, я придерживаюсь стандартов ISO C++. Это подразумевает отсутствие .NET, но если у вас есть пример .NET, я был бы признателен, если бы вы также помогли мне преобразовать его в ISO C++. У меня также есть знания JAVA, немного ассемблера и фортрана.
Сами наборы данных невелики, но их около 150 миллионов, поэтому перебор может быть не лучшим способом.
заранее спасибо
Я понимаю, что оставил некоторые вещи в воздухе, поэтому позвольте мне уточнить:
- Каждый набор данных может и, вероятно, будет иметь разные тенденции; то есть я не ищу одну и ту же тенденцию во всех наборах данных.
- Пользователь программы сам определит, насколько близкая посадка ему нужна.
- Пользователь программы определит, насколько непрерывным должно быть подмножество, прежде чем оно будет рассмотрено для подбора тренда.
- В случае, если программа будет расширена для обеспечения любого типа подгонки (не просто линейной), пользователь определит, какая модель должна подходить - ЭТО НЕ ПРИОРИТЕТ, и если вышеуказанный запрос будет решен, то я уверен, что это расширение будет быть относительно тривиальным
- Выбросы возникают в результате характера эксперимента и метода сбора данных, при котором данные из «плохих» участков все равно необходимо собирать, даже если известно, что эти области дают выбросы. Отбрасывание этих выбросов НЕ означает, что данные манипулируются, чтобы соответствовать какой-либо тенденции (отказ от ответственности за статистику, хе-хе).