Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сезонные колебания

341
10 февраля 2010 года
Der Meister
874 / / 21.12.2007
Всем здрасте, есть вопрос из серии "матстатистика" и иже и сними.
Имеется временной ряд навроде
Код:
6,702
6,631
8,457
8,456
9,1
10,586
10,593
10,479
9,044
7,837
7,855
8,115
7,206
6,934
9,099
9,11
10,038
10,491
9,83
10,392
8,947
8,312
8,096
8,331
7,772
7,287
8,744
9,334
10,162
10,27
11,482
10,987
Необходимо провести декомпозицию его на тренд (общую тенденцию), сезонные колебания и белый шум. Тренд выделять умею (правда, не всегда правильно определяю его наличие). Умею выделять сезонные колебания для заданного периода (например, год или неделя), однако доверительный интервал оценок сезонности достаточно велик - до 30% (экспоненциально взвешенные скользящие средние + индекс сезонности), непрактично никак. Хочу ошибку не более пяти-семи процентов, хочу также уметь выделять сезонность с произвольным периодом (точнее, периоды наиболее значимых колебаний), хочу уметь очищать шум и давать его вероятностную оценку: меня интересует именно выраженная сезонность с целью получения качественного прогноза. Книг просмотрел много (экономика + статистика), однако в них основной упор делается на прогноз тренда - не нужен он мне. Посоветуйте лучше, пожалуйста, если знает кто, какую-нибудь одну, но по моей части? :) Фурьё не помогает (ну не синус там), регрессионный анализ на практике даёт слишком большую ошибку и не работает с произвольным периодом. Заранее спасибо.
87
10 февраля 2010 года
Kogrom
2.7K / / 02.02.2008
Короче, я ничего не понял, но примерно знаю, как фильтровать сигнал рабоче-крестьянским методом. Для последовательности из n чисел можно получить такую же по размеру фильтрованную последовательность, если заменять составляющие как-то так:

b(i) = ( a(i) + a(i+1) + ... + a(i+m) ) / m,

где m - константа фильтра (например 5 или 10) или оставшееся количество чисел.

Для большей плавности надо применять двойной фильтр (тройной, и т.д.). То есть, аналогичным способом отфильтровывать полученную последовательность (из b(i) ).

Ну, ещё есть другой метод удаления шума, но надо знать период изменения сигнала. Там складываем числа через периоды. Второй метод позволяет лучше выделить картинку. Например, мне хватало 20 периодов для зашумленного сигнала, чтобы что-то достаточно ясное выделить.

Иногда лучше применить оба способа.

Добавлено позже:
Вообще, я стараюсь по возможности заменять слова на понятные - интеграл на площадь или сумму, производную на скорость и т.д. Это помогает яснее представить цель. Для иллюстрации профильтровал сигнал (2 по 5). Жирная линия - отфильтрованный сигнал.
87
10 февраля 2010 года
Kogrom
2.7K / / 02.02.2008
А вот 2 по 3. Ещё ближе к исходному сигналу :)
341
11 февраля 2010 года
Der Meister
874 / / 21.12.2007
Цитата: Kogrom
Короче, я ничего не понял, но примерно знаю, как фильтровать сигнал рабоче-крестьянским методом. Для последовательности из n чисел можно получить такую же по размеру фильтрованную последовательность, если заменять составляющие как-то так:

b(i) = ( a(i) + a(i+1) + ... + a(i+m) ) / m,

где m - константа фильтра (например 5 или 10) или оставшееся количество чисел.

Наверное так:
b(i) = (a(i - m) + a(i - m + 1) + ... + a(i) + a(i + 1) + ... + a(i + m)) / 2*m
Это формула скользящей средней, она применяется для выявления тренда. Сглаженный ряд становится короче на 2*m, в нём могут образоваться автокорелированные колебания, которых не было в изначальном ряде и т. д, поэтому я применяю адаптивные методы сглаживания. Если вычесть из исходного ряда тренд, получим сезонные колебания + шум.
Объясню задачу яснее:
Есть, например, последовательность объёмов продаж товаров марки Durex в круглосуточной аптеке за пару лет, взятые с интервалом в 12 часов. Необходимо спрогнозировать объёмы продаж на следующую неделю с целью подготовки оптимального запаса товара. Классический прогноз подразумевает экстраполяцию основной тенденции, остальное считая случайным шумом. Я исхожу из соображений, что весной/летом товар продаётся лучше, что к пятнице-субботе, к новому году/14 февраля объёмы продаж возрастают - мне необходимо получить именно такие всплески/спады продаж в зависимости от календарных событий или даже времени суток.

252
11 февраля 2010 года
koderAlex
1.4K / / 07.09.2005
ряд фурье . отсекаете высокие частоты с периодом меньше месяца или недели . вот и весь прогноз . )
341
11 февраля 2010 года
Der Meister
874 / / 21.12.2007
Цитата: koderAlex
ряд фурье . отсекаете высокие частоты с периодом меньше месяца или недели . вот и весь прогноз . )


Было бы, конечно, клёво, но там колебания не синусоидальные, а, скорее, трапецевидные или пилообразные. Их длина и интервал между ними не совпадают.
Если просто отсекать высокие частоты ДПФ - такая фигня получается (пробовал)! Получить какой-либо спектр, видимо, не удастся. Курю модель Уинтерса, вроде оно.

252
11 февраля 2010 года
koderAlex
1.4K / / 07.09.2005
для Фурье преобразования всё равно какого вида колебания . почитайте теорию интеграла Фурье и применение его для экстраполяции .
ещё можно ряд Тейлора попробовать .
87
11 февраля 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: Der Meister
Наверное так:
b(i) = (a(i - m) + a(i - m + 1) + ... + a(i) + a(i + 1) + ... + a(i + m)) / 2*m
Это формула скользящей средней, она применяется для выявления тренда. Сглаженный ряд становится короче на 2*m, в нём могут образоваться автокорелированные колебания, которых не было в изначальном ряде и т. д, поэтому я применяю адаптивные методы сглаживания. Если вычесть из исходного ряда тренд, получим сезонные колебания + шум.


Спасибо за науку. Вероятно, .../(2*m + 1), но это мелочи.

Хотя у меня были другие задачи - мне не надо было оценивать шум, а только увидеть форму сигнала, потому недофильтрованность по краям была допустима.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог