Может ли кто-нибудь рассказать мне, как использовать фильтрацию Калмана по DLM в R для временного ряда. Скажем, у меня есть эти значения (квартальные значения с годовой сезонностью); Как бы вы использовали DLM для прогнозирования следующих значений? И кстати, у меня достаточно исторических данных (каков минимум)?
89 2009Q1
82 2009Q2
89 2009Q3
131 2009Q4
97 2010Q1
94 2010Q2
101 2010Q3
151 2010Q4
100 2011Q1
? 2011Q2
Я ищу пошаговый ответ типа поваренной книги в стиле R кода. Точность прогноза не является моей главной целью, я просто хочу изучить последовательность кода, который дает мне номер для 2011Q2, даже если у меня недостаточно данных.
r
time-series
forecasting
datayoda
источник
источник
dlm
пакет делает это максимально простым.dlm
пакет? Как я сказал в своем ответе, DLM гораздо больше похожи на создание программы, чем на включение некоторых переменных в вызов функции. Датайода никогда не принимал ответ, поэтому я не уверен, что они прошли это наблюдение.Ответы:
В документе JSS 39-02 сравниваются 5 различных пакетов фильтрации Kalman R и приводится пример кода.
источник
DLM - это круто, но они не так просты, как, скажем, ARIMA или другие методы. В других методах вы вставляете свои данные, а затем настраиваете некоторые параметры алгоритма, возможно, обращаясь к различным диагностикам, чтобы управлять вашими настройками.
С DLM вы создаете машину пространства состояний, которая состоит из нескольких матриц, которые в основном реализуют что-то вроде скрытой модели Маркова. Некоторые пакеты (
sspir
я думаю, среди прочих) ожидают, что вы понимаете концепцию и то, что делают матрицы. Я настоятельно рекомендую вам начать сdlm
пакета и, как рекомендует @RockScience, пройтись по виньетке.При этом
dlm
вы собираетесь в основном сделать несколько шагов:Какие компоненты описывают мою серию? Тенденция? Сезонность? Экзогенные переменные? Вы будете использовать
dlm
такие инструменты, какdlmModPoly
для реализации этих компонентов, с помощью+
оператора, чтобы объединить их в одну модель.Создайте подпрограмму R, которая принимает столько параметров, сколько требуется для этой модели, создает компоненты с этими параметрами, затем складывает их вместе и возвращает полученную модель.
Используйте
dlmMLE
для поиска / оптимизации, чтобы найти подходящие параметры (используя MLE, который в основном является оптимизацией, с подводными камнями, которые могут возникнуть при оптимизации).dlmMLE
несколько раз вызывает вашу подпрограмму R с параметрами-кандидатами для создания моделей, а затем проверяет их.Создайте свою окончательную модель, используя подпрограмму R, которую вы создали, плюс параметры, которые вы нашли в шаге 3.
Отфильтруйте данные с помощью
dlmFilter
, а затем, возможно, сглаживайтеdlmSmooth
.Если вы используете
dlmModReg
или делаете что-либо, что приводит к тому, что модель имеет изменяющиеся во времени параметры, вы не можете использовать ееdlmForecast
для прогнозирования ряда. Если вы в конечном итоге получите модель, изменяющуюся во времени, вы захотите заполнить свои входные данные с помощью NA и разрешитьdlmFilter
заполнение NA для вас (прогноз плохого человека), такdlmForecast
как не работает с изменяющимися во времени параметрами.Если вы хотите изучить компоненты по отдельности (скажем, тренд отдельно от сезонного), вам нужно понять матрицы и то, что находится в каждом столбце, а также немного понять, как
dlm
их собрать (порядок имеет значение!).Есть еще один пакет, имя которого избегает меня, который пытается создать внешний интерфейс, который может использовать несколько из этих пакетов (в том числе
dlm
в качестве внутреннего). К сожалению, я никогда не делал так, чтобы это работало хорошо, но это может быть только я.Я действительно рекомендовал бы получить книгу по DLM. Я получил пару из них и много играл,
dlm
чтобы добраться туда, где я нахожусь, и я ни в коем случае не эксперт.источник
dlm
виньетки пакета. Вы узнаете, что вам нужно знать. Вот почему я рекомендуюdlm
, потому что вы сами не создаете FF и т. Д.Я предлагаю вам прочитать виньетку dlm http://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf, особенно главу 3.3
источник