2014 dxdy logo

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

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


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Наклон графика преобразования Фурье
Сообщение21.08.2017, 14:53 


21/08/17
6
Добрый день.

Есть факт продаж товара за 15 месяцев, начиная с января 16 заканчивая мартом 17 года (синяя кривая на рисунке ниже). По данным за последние 12 месяцев строится ряд Фурье (начиная с 4 и заканчивая 15 наблюдением).

Изображение

Требуется на ряд Фурье наложить своего рода тренд. Я попробовал это сделать следующим образом:
  1. Строю линию тренда по фактическим данным (жёлтая линия)
  2. Высчитываю коэффициенты сезонности у ряда Фурье
  3. Линию тренда умножаю на этот коэффициент сезонности (серая кривая)

Из рисунка видно, что амплитуда серой кривой со временем увеличивается, а мне этого не надо. Подскажите, пожалуйста, как мне просто повернуть оранжевую кривую на угол наклона линии тренда?

Сами данные: 10 25 27 40 45 60 54 45 40 27 20 17 28 36 48
Ряд Фурье: 26 32 41 49 54 55 52 45 37 29 24 22 26 32 41 49 54 55 52 45 37

Уравнение линии тренда: y = 1,3259х + 19,431

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение21.08.2017, 15:04 
Заслуженный участник


09/05/12
25179
ilikeMagic в сообщении #1242177 писал(а):
Высчитываю коэффициенты сезонности у ряда Фурье
А это именно "коэффициенты"? По имеющимся данным складывается впечатление, что это не множители, а слагаемые, т.е. их с трендом можно разве что складывать.

P.S. Впрочем, вообще разумность использования фурье-анализа на одном с небольшим периоде, скажем так, несколько сомнительна. :-)

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение22.08.2017, 09:07 


21/08/17
6
Да, я имел ввиду индексы сезонности. Индексы сезонности рассчитываю по следующим значениям ряда Фурье:
Изображение
Делю текущее значение на среднее за весь период. Ряд Фурье периодический, поэтому индексы сезонности можно использовать для наблюдений выходящих за исходный период.

Серая кривая на рисунке получается путём прогнозирования жёлтой линии тренда с учетом сезонных колебаний по следующему уравнению: $y_t = (a + b \cdot t) \cdot i_t$, где $i_t$ - индекс сезонности, рассчитанный выше. Само уравнение тренда я приводил в первом сообщении.

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

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение22.08.2017, 12:35 
Заслуженный участник


09/05/12
25179
ilikeMagic в сообщении #1242324 писал(а):
Да, я имел ввиду индексы сезонности.
В итоге Вы фактически учитываете тренд два раза. Один раз непосредственно, второй - при вычислении "коэффициентов сезонности". Естественно, что это отражается на результате.
ilikeMagic в сообщении #1242324 писал(а):
Вообще я работаю с этой задачей в рамках прогнозирования временных рядов, поэтому такая практика по использованию гармоник ряда Фурье естественна для моделирования сезонных колебаний.
Ничего подобного. Если не вдаваться в детали, то первым обязательным требованием для использования этого аппарата является длина ряда, по крайней мере на порядок превышающая период, который в нем предполагается найти. В противном случае получить можно практически что угодно.

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение22.08.2017, 14:29 


21/08/17
6
Цитата:
длина ряда, по крайней мере на порядок превышающая период, который в нем предполагается найти.

Ряд Фурье может использоваться для отображения и прогнозирования динамики с сезонными колебаниями. При этом анализируемые ряды динамики имеет длину N и обычно N принимают равной 12, то есть числу месяцев в году. Предположу, что мы с Вами говорим о разных прикладных применениях преобразования Фурье. Я говорю с точки зрения анализа временных рядов.

Цитата:
В итоге Вы фактически учитываете тренд два раза.

С этим соглашусь. Попробовал следующим образом: применил ряд Фурье к остаточным величинам $(y_i - y_{it})$, где $y_{it} = a + b \cdot t$. То есть из исходного ряда удалил тренд. И рассчитал индексы сезонности на полученном ряду. Но результат оказался не лучше: появились отрицательные индексы сезонности.

Изображение

Pphantom, подскажите как мне получить что нужно?

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение22.08.2017, 14:44 
Заслуженный участник


09/05/12
25179
ilikeMagic в сообщении #1242374 писал(а):
Ряд Фурье может использоваться для отображения и прогнозирования динамики с сезонными колебаниями.
Может. При наличии данных на интервале хотя бы в несколько лет.
ilikeMagic в сообщении #1242374 писал(а):
При этом анализируемые ряды динамики имеет длину N и обычно N принимают равной 12, то есть числу месяцев в году.
Ну, знаете, из того, что что-то делается "обычно", совсем не следует, что это делается правильно.
ilikeMagic в сообщении #1242374 писал(а):
Предположу, что мы с Вами говорим о разных прикладных применениях преобразования Фурье. Я говорю с точки зрения анализа временных рядов.
Нет, ровно об одном и том же.
ilikeMagic в сообщении #1242374 писал(а):
Но результат оказался не лучше: появились отрицательные индексы сезонности.
А как, собственно, Вы их считаете? Напишите выражение.

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение22.08.2017, 15:00 


21/08/17
6
Кажется понял каким образом это сделать.

  1. Строим линию тренда на исходных данных
  2. Убираем из исходных данных значения тренда
  3. На полученных остатках строим ряд Фурье
  4. Строим суммарный прогноз, т.е. прогноз по тренду и плюс прогноз по ряду Фурье для остаточных величин (ранее я умножал значение тренда на индекс сезонности)

Вот что получается:
Изображение

Pphantom, спасибо за идею о двойном учёте тренда!

Хотя всё-таки поясни, зачем история в несколько лет? Ведь даже если данных будет к примеру на 36 месяцев, то меня то всё равно будет интересовать косинусоидальная кривая с периодом в 12. И я возьму последние 12 месяцев для анализа наиболее свежей сезонности продаж какого-то товара.

Цитата:
А как, собственно, Вы их считаете? Напишите выражение.

Во втором или третьем сообщении приводил пример. Коротко: делю текущее значение на среднее за период.

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение22.08.2017, 15:38 
Заслуженный участник


09/05/12
25179
ilikeMagic в сообщении #1242380 писал(а):
Убираем из исходных данных значения тренда
Если под "убираем" понимается "вычитаем" - да, можно так.
ilikeMagic в сообщении #1242380 писал(а):
Хотя всё-таки поясни, зачем история в несколько лет? Ведь даже если данных будет к примеру на 36 месяцев, то меня то всё равно будет интересовать косинусоидальная кривая с периодом в 12. И я возьму последние 12 месяцев для анализа наиболее свежей сезонности продаж какого-то товара.
Преобразование Фурье - это способ поиска и выделения периодического сигнала. Соответственно, при отсутствии этого самого периодического сигнала (а на отрезке в 1 год исследуемые данные непериодичны) можно найти только какую-то амплитуду, соответствующую заданному руками периоду. Если исходные данные похожи на кусок синусоиды, то это еще кое-как сойдет. А если нет?
ilikeMagic в сообщении #1242380 писал(а):
Во втором или третьем сообщении приводил пример. Коротко: делю текущее значение на среднее за период.
Понятно. Тогда считать их при уборке тренда бесполезно - в идеале придется вообще делить на ноль.

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение23.08.2017, 06:37 


21/08/17
6
Цитата:
а на отрезке в 1 год исследуемые данные непериодичны

Я сначала считаю коэффициент корреляции между исходным рядом и рядом Фурье. Если коэффициент больше 0.6, то считаю, что в данном ряду есть сезонность и его преобразование в ряд Фурье допустимо. А разве есть способ искать период длиной в 12 на отрезке длиной в 36 наблюдений?

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение23.08.2017, 09:02 


27/08/16
9426

(Оффтоп)

Напоминает нумерологию.
А у вас есть какая-нибудь модель, лежащая в основе ваших расчётов?
Вы, сначала, считаете ряд Фурье как набор аддитивных поправок к тренду. Но потом по нему считаете "коэффициенты сезонности". На которые умножаете ваш тренд. Разумеется, чем выше тренд, тем больше в результате амплитуда. Может быть, вам стоит ваши данные сначала прологарифмировать, и все сезонные поправки учитывать аддитивно в логарифмическом масштабе?

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение23.08.2017, 10:16 
Заслуженный участник


09/05/12
25179
ilikeMagic в сообщении #1242492 писал(а):
Я сначала считаю коэффициент корреляции между исходным рядом и рядом Фурье. Если коэффициент больше 0.6, то считаю, что в данном ряду есть сезонность и его преобразование в ряд Фурье допустимо.
Так ведь Вы, насколько я понимаю, используете фактически не ряд Фурье, а одну его компоненту с нужным периодом (при этом не располагая информацией, что амплитуда именно этой гармоники существенно больше остальных).

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение23.08.2017, 13:05 


21/08/17
6
Цитата:
А у вас есть какая-нибудь модель, лежащая в основе ваших расчётов?

Я стал путаться :shock: Для того, что бы рассчитать трендовую составляющую временного ряда, нужно сначала исключить сезонную. А с другой стороны расчёт сезонной лучше производить после исключения тренда. Так в каком порядке мне это делать?

Всё-таки склоняюсь к аддитивной модели сезонности: $y_{forecast} = y_t + y_s + y_{mean}$
  1. Рассчитываю ряд Фурье для последних 12 наблюдений
  2. Вычитаю из исходного ряда значения ряда Фурье
  3. Строю на остатках линию тренда $y_t = a + b \cdot t$
  4. Прогноз получаю путём сложения значения тренда, абсолютного показателя сезонности и среднего значения исходного ряда за весь период

При таком расчёте логарифмирование вроде как не нужно. Но я всё-таки не до конца понял: зачем именно мне ряд логарифмировать? В моём понимании логарифмирование используют для стабилизации дисперсии.

Цитата:
используете фактически не ряд Фурье, а одну его компоненту с нужным периодом

Вот тут не понял, поэтому поясню как оцениваю коэффициенты:

Изображение

Использую только 1 гармонику и период равен 12. Получается, что Фурье всегда гладко описывает данные. Если Вы считаете, что и это не верно, то поясните подробнее.

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение23.08.2017, 21:22 
Заслуженный участник


09/05/12
25179
ilikeMagic в сообщении #1242536 писал(а):
Для того, что бы рассчитать трендовую составляющую временного ряда, нужно сначала исключить сезонную. А с другой стороны расчёт сезонной лучше производить после исключения тренда. Так в каком порядке мне это делать?
В принципе, можно сделать сразу и то, и другое. Например, предположить, что данные являются суммой линейной зависимости и синусоиды, после чего найти наилучшую аппроксимацию. Будет четыре параметра (угловой коэффициент и свободный член - у прямой, амплитуда и начальная фаза - у синусоиды), их можно определить, например, МНК.
ilikeMagic в сообщении #1242536 писал(а):
Использую только 1 гармонику и период равен 12. Получается, что Фурье всегда гладко описывает данные. Если Вы считаете, что и это не верно, то поясните подробнее.
Да, именно это я и имел в виду. Вы фактически делаете то же, что описано выше - приближаете данные синусоидой с заранее известным периодом. Соответственно, это разумно в том случае, если данные действительно хорошо описываются одной синусоидой, просто их периодичности недостаточно.

 Профиль  
                  
 
 Re: Наклон графика преобразования Фурье
Сообщение24.08.2017, 09:36 


27/08/16
9426
ilikeMagic в сообщении #1242536 писал(а):
Всё-таки склоняюсь к аддитивной модели сезонности: $y_{forecast} = y_t + y_s + y_{mean}$
И у вас есть рациональные причины так думать, учитывая, что между максимумом и минимумом истории ваших продаж за год разница шесть раз, а период наблюдений всего чуть больше года?

Понятно, что вам нужно спрогнозировать продажи на ближайший год, так как нужно размещать заказ на производстве, а производственный цикл у вас где-то полгода (ничего не знаю про вас, просто предполагаю). Но если бы все знали будущее хотя бы на год вперёд, то все были бы миллионерами и не было бы банкротов. Любая экстраполяция ненадёжна, в экономике, конечно, существуют годовые циклы, но не только они, а и куча других факторов. Например, торгуя мороженным, вы можете увидеть подъём продаж за март по сравнению с предыдущим годом, и обрадоваться, что ваши годовые продажи растут, но не заметить, что весна была ранняя, а лето потом может оказаться холодным.

Что касается ряда Фурье, в него можно без проблем разложить любую гладкую периодическую функцию. Строя тренд с вычетом ряда фурье, вы полагаетесь только на годовую разницу одинаковых месяцев за год. Которых у вас три точки. Выделите эти три разности и попытайтесь по ним спрогнозировать тренд на год вперёд. Сможете?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group