Як використовувати DLM з фільтруванням Калмана для прогнозування


19

Невже хтось може провести мене через приклад того, як використовувати фільтрацію DLM Kalman в R за часовим рядом. Скажіть, я маю ці значення (квартальні значення з річною сезонністю); як би ви використовували DLM для прогнозування наступних значень? І BTW, чи вистачає мені історичних даних (який мінімум)?

89  2009Q1  
82  2009Q2  
89  2009Q3  
131 2009Q4  
97  2010Q1  
94  2010Q2  
101 2010Q3  
151 2010Q4  
100 2011Q1  
?   2011Q2

Я шукаю тип відповіді, як поетапно відповідати, як покроковий тип відповіді. Точність прогнозування не є моєю основною метою, я просто хочу вивчити послідовність коду, який дає мені номер за 2011Q2, навіть якщо у мене недостатньо даних.


3
Це може отримати кращі відповіді на stats.stackexchange.com
Джошуа Ульріх

Bump ... Я досі не можу зрозуміти, як це зробити. Хтось відповів на оригінальний пост?
datayoda

2
З DLM це не так у кулінарній книзі, як вам може сподобатися. Я б взяв відповідь RockScience (віньєтка DLM) і пройшов її. DLM більше схожий на розробку програми, ніж на інші методи, які просто потребують підключення деяких даних та налаштування деяких параметрів. Зрештою, ви проектуєте набір масивів, які реалізують щось на зразок прихованої моделі Маркова, і dlmпакет робить це максимально простим.
Уейн

Ви вирішили свою проблему? Я шукаю рішення для подібного типу проблем з тимчасовими журналами, але не можу знайти рішення.

Ви працювали над документом, запропонованим @RockScience? Ви подивилися на dlmпакет? Як я вже говорив у своїй відповіді, DLM набагато більше схожі на створення програми, ніж включення деяких змінних у виклик функції. datayoda так і не прийняв відповідь, тому я не впевнений, що вони пройшли через це спостереження.
Уейн

Відповіді:



16

DLM круті, але вони не такі прості, як, скажімо, ARIMA або інші методи. В інших методах ви підключаєте свої дані, а потім налаштовуєте деякі параметри алгоритму, можливо, посилаючись на різні діагностики для керівництва вашими налаштуваннями.

За допомогою DLM ви створюєте космічну машину стану, яка складається з декількох матриць, які в основному реалізують щось на зразок прихованої моделі Маркова. Деякі пакети ( sspirя думаю, серед інших) очікують, що ви розумієте поняття і те, що роблять матриці. Я настійно рекомендую почати з dlmпакету, і як рекомендує @RockScience, пройдіться по віньєтці.

По dlmсуті ви збираєтесь зробити кілька кроків:

  1. Які компоненти описують мою серію? Тенденція? Сезонність? Екзогенні змінні? Ви будете використовувати dlmтакі інструменти, як dlmModPolyреалізація цих компонентів, використовуючи +оператор, щоб об'єднати їх в одну модель.

  2. Створіть підпрограму R, яка приймає скільки завгодно параметрів, необхідних для цієї моделі, створює компоненти з цими параметрами, потім додає їх разом і повертає отриману модель.

  3. Використовуйте dlmMLEдля пошуку / оптимізації для пошуку відповідних параметрів (використовуючи MLE, який в основному є оптимізацією, із підводними каменами, які можуть виникнути при оптимізації). dlmMLEкілька разів викликає вашу підпрограму R з параметрами-кандидатами для створення моделей, а потім тестує їх.

  4. Створіть остаточну модель, використовуючи створену підпрограму R плюс параметри, знайдені на кроці 3.

  5. Фільтруйте свої дані за допомогою dlmFilter, а потім, можливо, згладжуйте dlmSmooth.

  6. Якщо ви використовуєте dlmModRegабо робите щось, що спричиняє наявність у моделі параметрів часового варіанту, ви не можете використовувати dlmForecastдля прогнозування своєї серії. Якщо ви закінчите модель з часовим варіантом, ви хочете заповнити свої вхідні дані з NA та дозволити dlmFilterзаповнити НС для вас (прогноз поганої людини), оскільки dlmForecastвін не працює з різними параметрами часу.

  7. Якщо ви хочете вивчити компоненти окремо (скажімо тенденцію, окремо від сезонних), вам потрібно буде зрозуміти матриці та що в кожному стовпці, а також трохи зрозуміти, як dlmїх поєднувати (замовити питання!).

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

Я дуже рекомендую отримати книгу на DLM. Я отримав пару з них і багато грав з тим, dlmщоб дістатися до місця, де я є, і я ніяк не експерт.


Дякую Уейн, я думаю, що мій випадок є досить простим, оскільки я не помітив чітких тенденцій чи сезонності у візуальному огляді. (Однак, якщо вам відомі будь-які тести на R, будь ласка, повідомте мене, я спробую їх запустити). Моя проблема полягає в тому, що я не знаю, як заповнити такі аргументи, як (FF, V, GG, W, m0, C0, dV тощо) у функціях dlm для моїх даних? Це для мене головне питання. Якщо у мене є дані двовимірного ряду (y = X1 + X2), наприклад (ціна = попит + пропозиція), то як я можу йти про обчислення цих аргументів для моїх даних? FF, V, GG, W, m0, C0, dV тощо, необхідні для функцій
dlm

1
@nclfinance Будь ласка, прочитайте поширені запитання та не розглядайте це місце як форум.

@nclfinance: опрацюйте dlmвіньєтку пакета. Ви дізнаєтесь, що вам потрібно знати. Тому я рекомендую dlm, оскільки ви не створюєте FF тощо.
Уейн

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.