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
чтобы добраться туда, где я нахожусь, и я ни в коем случае не эксперт.