Holt-Winters за многосезонно прогнозиране в Python

Моите данни: Имам два сезонни модела в почасовите си данни... дневни и седмични. Например... всеки ден в моя набор от данни има приблизително еднаква форма въз основа на часа от деня. Въпреки това, определени дни като събота и неделя показват увеличения на моите данни, а също и малко по-различни часови форми.

(Използване на holt-winters, както открих тук: https://gist.github.com/andrequeiroz/5888967)

Пуснах алгоритъма, използвайки 24 като мои периоди на сезон и прогнозирайки 7 сезона (1 седмица), забелязах, че прогнозата ще бъде надвишена за делничните дни и по-ниска за уикенда, тъй като оценява кривата на съботите въз основа на кривата на петък и не е комбинация от кривата на петък и кривата на събота (t-1). Какъв би бил добър начин да включа вторичен период в моите данни, както в 24, така и в 7? Техният различен алгоритъм ли е, който трябва да използвам?


person user1152532    schedule 10.09.2014    source източник


Отговори (1)


Един очевиден начин за отчитане на различните форми би бил да се използва само един вид период, но той да има периодичност 7*24, така че ще прогнозирате цялата седмица като една форма.

Опитвали ли сте линейна регресия, при която прогнозираната стойност е линейна тенденция плюс принос от фиктивни променливи? Най-простият пример за обяснение би бил тренд плюс само дневен принос. Тогава щеше да имаш

Y = X*t + c + A*D1 + B*D2 + ... F * D6 (+ шум)

Тук използвате линейна регресия, за да намерите най-подходящите стойности на X, c и A...F. t е времето, отброяващо 0, 1, 2, 3,... безкрайно, така че монтираната стойност на X ви дава тенденция. c е постоянна стойност, така че премества всички предвидени Y нагоре или надолу. D1 е настроен на 1 във вторник и 0 в противен случай, D2 е настроен на 1 в сряда и 0 в противен случай... D6 е настроен на 1 в неделя и 0 в противен случай, така че условията A..F дават вноски за дни, различни от понеделник. Ние не отговаряме на термин за понеделник, защото ако го направихме, тогава не бихме могли да различим члена c - ако добавите 1 към c и извадите по едно от всяко от A..F, прогнозите ще бъдат непроменени.

Надяваме се, че вече можете да видите, че можем да добавим 23 термина, за да отчетем форма за 24 часа на всеки ден, и общо 46 термина, за да отчетем форма за 24 часа от всеки делничен ден и различните 24 часа от всеки уикенд ден.

Най-добре е да потърсите статистически пакет, който да се справи с това вместо вас, като безплатния R пакет (http://www.r-project.org/). Той наистина има известна крива на учене, но вероятно можете да намерите книги или статии, които ще ви помогнат да го използвате само за този вид прогнозиране.

Каквото и да правите, аз ще продължа да проверявам методите за прогнозиране спрямо вашите исторически данни - хората са открили, че най-точните методи за прогнозиране на практика често са изненадващо прости.

person mcdowella    schedule 11.09.2014