Як робити прогнози на часовий ряд?


9

Я не такий знайомий з аналізом даних часових рядів. Однак у мене є те, що, на мою думку, є простим завданням передбачення.

У мене є близько п'яти років даних із загального процесу генерації. Кожен рік представляє монотонно зростаючу функцію з нелінійною складовою. У мене підраховується щотижня протягом циклу 40 тижнів на кожен рік. Процес починається, функція починається з нуля, доволі швидко зростає протягом першої половини функції, сповільнюючись над другою половиною до вирівнювання протягом останніх п’яти тижнів. Процес узгоджується протягом багатьох років з невеликими різницями у швидкості зміни та обсязі в сегментах з року в рік.

y1={0,Nt1,Nt2,...Nt39,Nt40}

y5={0,Nt1,Nt2,...Nt39,Nt40}

Де Ntx дорівнює підрахунку часу x.

Мета - взяти N у tx (або краще) t0 до txабо нахил до цієї точки) і передбачити значення N у t40. Наприклад, якщоNt10 становить 5000, яка очікувана величина Nt40за той рік. Отже, питання полягає в тому, як би ви моделювали такі дані? Це досить просто узагальнити та візуалізувати. Але я хотів би, щоб модель полегшила прогнози та включила міру помилок.


2
Ви впевнені, що хочете так сильно обмежити себе? Якщо ця проблема має будь-яке практичне застосування, то до моменту, коли ви знаєте підрахунок за час x, ви також знаєте всі попередні підрахунки. Чому б не використати їх, щоб допомогти з передбаченням?
whuber

Справді. Ти прав. Дякуємо, що вказали на це.
Бретт

Відповіді:


6

Напевно, найпростіший підхід - це, як запропонував Енді У., використовувати сезонну універсальну модель часових рядів. Якщо ви використовуєте R, спробуйте auto.arima()або ets()з пакета прогнозу .

Або має працювати нормально, але загальний метод часових рядів не використовує всю надану інформацію. Зокрема, здається, що ви знаєте форму кривої в кожному році, тому може бути краще використовувати цю інформацію, моделюючи дані кожного року відповідно. Далі йде пропозиція, яка намагається включити цю інформацію.

Здається, якась сигмоїдальна крива зробить трюк. наприклад, зміщена логістика:

ft,j=rteat(jbt)1+eat(jbt)
за рік t і тиждень j де at, bt і rt - це параметри, що підлягають оцінці. rt - це асимптотичний максимум, at контролює швидкість збільшення і bt є серединою, коли ft,j=rt/2. (Ще один параметр знадобиться для того, щоб дозволити асиметрію, яку ви описуєте, завдяки чому швидкість збільшення до часуbt швидше, ніж після цього bt. Найпростіший спосіб зробити це - дозволитиat приймати різні значення до та після часу bt.)

Параметри можна оцінити, використовуючи найменші квадрати на кожен рік. Параметри кожного часового ряду форми:a1,,an, b1,,bn і r1,,rn. Їх можна прогнозувати за допомогою стандартних методів часових рядів, хоча зn=5ви, ймовірно, не можете зробити багато, крім використання середнього значення для кожної серії для створення прогнозів. Потім, для 6 року, оцінка вартості за тижденьj просто f^(6,j) де прогнози a6, b6 і r6 використовуються.

Після того, як дані почнуть спостерігатися протягом 6 року, ви хочете оновити цю оцінку. Отримавши кожне нове спостереження, оцініть сигмоїдальну криву за даними 6 року (для початку вам знадобиться принаймні три спостереження, оскільки є три параметри). Потім візьміть середньозважене значення прогнозів, отриманих з використанням даних до 5 року, і прогноз, отриманий з використанням лише даних 6 року, де ваги рівні(40t)/36 і (t4)/36відповідно. Це дуже спеціально, і я впевнений, що це можна зробити більш об'єктивним, розмістивши його в контексті більшої стохастичної моделі. Тим не менш, це, ймовірно, спрацює нормально для ваших цілей.


4

Ваше запитання - це, по суті, те, що робить моделювання ARIMA Box Jenkins (ваші щорічні цикли називаються сезонними компонентами). Окрім пошуку матеріалів самостійно, я б запропонував

Прикладний аналіз часових рядів для соціальних наук 1980 р. Макклеарі; Р. А. Сіно; EE Meidinger; Д Макдоуал

Хоча я можу подумати про розумні причини, чому ви хочете прогнозувати подальше майбутнє (а отже, оцінювати помилку при цьому), на практиці це часто буває дуже складно. Якщо у вас дуже сильні сезонні компоненти, це буде більш реально. Інакше ваші оцінки, швидше за все, досягнуть рівноваги за порівняно невеликі майбутні періоди часу.

Якщо ви плануєте використовувати R для відповідності вашим моделям, ви, мабуть, перегляньте веб-сайт Роб Хайндмана (сподіваємось, він дасть вам кращі поради, ніж я!)


-2

у вас є 5 років даних і 40 спостережень на рік. Чому б ви не розмістили їх в Інтернеті і не дозволите нам реально відповісти на це на нулі, а не філософствувати на висоті 500 миль. Я з нетерпінням чекаю на цифри. Ми бачили подібні дані, наприклад, кількість клієнтів, які торгують у тиждень, де діють щоденно, щотижня. Серія щороку починається з нуля і накопичується до граничного значення.


1
-1 Це звучить швидше як самореклама, ніж корисна відповідь.
whuber

@whuber: Не навмисно. Просто роздуми про подібну "липку проблему", в яку я зіткнувся.
IrishStat

Тоді це зробить цікавий коментар. Коментарі - це хороші способи ввести частину цього цінного досвіду, який ми так раді, що ви поділитесь з нами. Відповіді мають бути зарезервовані для фактичних відповідей на запитання: вони будуть проголосовані, заархівовані, зроблені для пошуку тощо, і тому вони повинні мати більш безпосереднє значення, постійне значення та мати можливість краще протистояти критиці. (Звичайно, це ідеалізація, але до цього ми прагнемо. :-)
whuber

@whuber: Ви вчите! Я вчу ! Я залишаю зауваження для "області коментарів". Знову повторюю, що абсолютно не було наміру просувати щось або будь-який конкретний програмний продукт / консультацію, а лише навмисне бажання поділитися досвідом з іншими людьми в селі. Я впевнений, що ОП вважає мої коментарі корисними. Що ти кажеш, Бретт?
IrishStat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.