2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Определение убываний на графике
Сообщение24.08.2011, 02:24 
Приветствую.
Дело такое: нужно на произвольном графике(значений по времени) идентифицировать периоды убывания определённой интенсивности... График с шумом.
Пробовал следующее:
аппроксимировал график след. способом: a[i] = (a[i-2] + a[i-1] + a[i] + a[i+1] + a[i+2]) / 5; это убирало шум и как я думал давало бы более менее ясное видение уверенных убываний.
затем искал более-менее резкие убывания(т.е. чтобы это были не какие-либо слабые колебания) по углу наклона графика...
и искал их выравнивание.
брал этот кусок за искомый, но увы, метод работает кривовато...
подскажите способы?
или как это делается правильно?

 
 
 
 Re: Определение убываний на графике
Сообщение24.08.2011, 03:32 
Аватара пользователя
TMonax в сообщении #477325 писал(а):
Пробовал следующее:
аппроксимировал график след. способом: a[i] = (a[i-2] + a[i-1] + a[i] + a[i+1] + a[i+2]) / 5; это убирало шум и как я думал давало бы более менее ясное видение уверенных убываний.

Это называется сглаживанием скользящим средним с окном =5. Можно сгладить скользящей медианой, если шум негауссовский. Все зависит от конкретной задачи.

 
 
 
 Re: Определение убываний на графике
Сообщение24.08.2011, 19:14 
Наука учит, что в таких случаях нужно строить модель случайного процесса. Так как все нужные параметры процесса Вам неизвестны, то, стало быть, их следует определить по имеющимся наблюдениям.

Вообще-то, это нетривиальная задача, требующая и соответствующего инструментария (программное обеспечение), и достаточно высокой квалификации исследователя.

Но, если перед Вами стоит не исследовательская, а чисто практическая задача, то, может быть, стоит начать с самого простого.

Вычисляем три вспомогательных ряда.
1. Ряд B: b[0]=a[0]; b[k]=b[k-1]+α*(a[k]-b[k-1]), 0<α<1.
2. Ряд С: с[0]=a[0]; с[k]=с[k-1]+β*(a[k]-b[k-1]), 0<α<β<1.
3. Ряд D: d[k]=c[k]-b[k].

Играем с параметрами α и β, и смотрим на результат (ряд D). Бывает так, что без всякой высокой науки очень быстро можно получить то, что нравится.
Или не получить. Тогда возможны два варианта.
1. Задача все же требует квалифицированного вмешательства.
2. Задача вообще не может быть решена. Имеется в виду, что особенности процесса таковы, что нельзя получить результат, который нравится. К сожалению, это можно будет узнать только после настоящей попытки реализации варианта №1. Поэтому будем надеяться, что Вам повезет, и Вы сможете удовлетвориться нулевым вариантом - то, что я предложил.
____________________________________________
P.S. Предложенный вариант опирается на экспоненциальное сглаживание. Нечто подобное можно сделать и на скользящем среднем: например, вычитаем из скользящего среднего с окном 5 скользящее среднее с окном 15.
Но... В общем, экспоненциальное и проще в вычислительном плане, и во многих случаях лучше.

 
 
 
 Re: Определение убываний на графике
Сообщение25.08.2011, 00:48 
Хотел бы пояснить визуально.

Вот 2 фрагмента графика:
Изображение

Изображение

Фиолетовыми периодами отображается так, как алгоритм определяет падения в данный момент.
А красными пометками отмечен период где на самом деле должно было определиться падение.
Можно заметить, что во время одного падения случаюстся так называемые "ступеньки" - задержки, их не нужно учитывать.

Задача чисто практическая - найти алгоритм, который будет подходить практически удовлетворительно ко всем графикам подобного типа.

Александрович и Sefko, спасибо за то что отозвались, поясните пожалуйста поподробнее, как именно применять описанные вами способы относительно данных графиков?

Ещё поясню, что это график нарастания(набора) и убывания(разгрузки). Разгрузка может быть и полной и не полной и ступенчатой. А нужно определять её фактические промежутки времени.

 
 
 
 Re: Определение убываний на графике
Сообщение25.08.2011, 01:39 
Аватара пользователя
Я бы попробовал численное дифференцирование с нахождением интервалов где производная отрицательнее заданного порога.

 
 
 
 Re: Определение убываний на графике
Сообщение25.08.2011, 10:24 
TMonax в сообщении #477532 писал(а):

Александрович и Sefko, спасибо за то что отозвались, поясните пожалуйста поподробнее, как именно применять описанные вами способы относительно данных графиков?

Простите, но я, честно говоря, не понял, что еще нужно пояснять, кроме того, что я уже написал.

И почему Вы пишите об алгоритме для графиков?
График - это изображение. В Вашем случае некоторой последовательности чисел. Она у Вас есть - вот те самые, которые a[0], a[1], a[2],...? Если есть (а как без нее Вы могли бы делать то, что написали в стартовом сообщении ветки?), то что Вам мешает проделать то, что написал я?

 
 
 
 Re: Определение убываний на графике
Сообщение25.08.2011, 13:21 
Sefko, т.е. ваш способ может подойти к данным графикам?
я просто думал что возможно ваши предположения изменятся, после того как я покажу точную картину...

 
 
 
 Re: Определение убываний на графике
Сообщение25.08.2011, 15:52 
TMonax в сообщении #477635 писал(а):
Sefko, т.е. ваш способ может подойти к данным графикам?

TMonax!
Предложения могут подойти, или не подойти - я же об этом писал.
Что касается вида графика, то никаких противопоказаний не видно. Разумеется, это не значит, что их нет.
Но, с другой стороны, попробовать применить - это же делов-то на полчаса. Или я чего-то не понимаю в Вашей задаче.

 
 
 
 Re: Определение убываний на графике
Сообщение25.08.2011, 16:57 
Для подобных задач неплохо зарекомендовал себя метод наименьших квадратов. Для каждой точки (за исключением краев графика) выделить окрестность. Например, 7 точек (3 слева и 3 справа). Потом методом МНК для каждой точки и ее окрестности подобрать аппроксимирующую прямую $kt+b$. Коэффициент $k$ и будет наклоном. При подборе прямой подбираются 2 коэффициента, а точек в используется больше (в нашем случае 7). «Лишние точки» окрестности идут на подавление шума. Выбрав некоторый порог, получим участки времени с достаточно большим наклоном $k$.
В принципе можно пробовать не только прямые, но и параболы, и т.д. – полином до 4-ой степени. Только нужно учитывать, что часть точек окрестности должна пойти на борьбу с шумами, и чтобы окрестность не была больше длительности искомых подъема/спада.

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group