Как обнаружить тренд внутри нестационарных данных (например, Trendly)? - PullRequest
0 голосов
/ 14 июля 2010

Мне было интересно, какую модель / метод / технику Trendly можно использовать для достижения этой модели:

alt text

[Она пытается найти моментыгде происходят значительные изменения и игнорируются случайные движения]

Любые указатели приветствуются!:)

Ответы [ 2 ]

0 голосов
/ 09 августа 2010

Простая «медианная» функция может создавать более плавные кривые по большей части негладкой кривой.

В противном случае можно использовать грубый или генетический алгоритм; пытаясь найти способ разбить данные на разделы, чтобы больше разделов = худшее решение и меньшая точность линий = худшее решение.

Другой способ был бы таким: начать с начала. Как только линия выйдет за пределы некоторого радиуса (например, на 3 выше или на 3 ниже первого), задайте для новой высоты среднее значение высоты текущей линии и предыдущего маркера.
Если вы продолжите делать это, он будет игнорировать небольшие колебания. Однако, если флуктуация была достаточно велика, она все равно произвела бы ее.

0 голосов
/ 14 июля 2010

Я никогда не видел 'Trendly' и ничего о нем не знаю, но если бы я хотел получить эту красную линию из этой синей линии алгоритмическим способом, я бы попробовал:

  1. Фурье весь набор данных
  2. Выберите размер блока длиннее периода доминирующей частоты
  3. Разделить данные на блоки выбранного размера
  4. Сравните соседние с статистическим тестом некоторого вида.
  5. Если тест говорит, что два блока принадлежат одному и тому же базовому распределению, объедините их.
  6. Если они были объединены, вернитесь к 4.
  7. Красная линия тренда - среднее значение каждого блока.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...