¿Podría alguien explicarme un ejemplo sobre cómo usar el filtrado DLM Kalman en R en una serie temporal? Digamos que tengo estos valores (valores trimestrales con estacionalidad anual); ¿Cómo usaría DLM para predecir los siguientes valores? Y por cierto, ¿tengo suficientes datos históricos (cuál es el mínimo)?
89 2009Q1
82 2009Q2
89 2009Q3
131 2009Q4
97 2010Q1
94 2010Q2
101 2010Q3
151 2010Q4
100 2011Q1
? 2011Q2
Estoy buscando un tipo de respuesta paso a paso de estilo de libro de cocina de código R. La precisión de la predicción no es mi objetivo principal, solo quiero aprender la secuencia de código que me da un número para 2011Q2, incluso si no tengo suficientes datos.
r
time-series
forecasting
datayoda
fuente
fuente
dlm
paquete lo hace lo más fácil posible.dlm
paquete? Como dije en mi respuesta, los DLM se parecen mucho más a crear un programa que conectar algunas variables a una llamada de función. datayoda nunca aceptó una respuesta, por lo que no estoy seguro de que hayan superado esta observación.Respuestas:
El documento en JSS 39-02 compara 5 paquetes de filtrado R de Kalman diferentes y proporciona un código de muestra.
fuente
Los DLM son geniales, pero no son tan simples como, por ejemplo, ARIMA u otros métodos. En otros métodos, conecta sus datos y luego modifica algunos parámetros del algoritmo, tal vez refiriéndose a varios diagnósticos para guiar su configuración.
Con un DLM, está creando una máquina de espacio de estado, que consta de varias matrices que básicamente implementan algo como un modelo oculto de Markov. Algunos paquetes (
sspir
creo, entre otros) esperan que comprenda el concepto y lo que hacen las matrices. Recomiendo encarecidamente que comience con eldlm
paquete y, como recomienda @RockScience, recorra la viñeta.Con
dlm
vas a básicamente tomar varias medidas:¿Qué tipo de componentes describen mi serie? ¿Una tendencia? Estacionalidad? Variables exógenas? Utilizará
dlm
herramientas comodlmModPoly
implementar estos componentes, utilizando el+
operador para unirlos en un solo modelo.Cree una subrutina R que tome todos los parámetros requeridos por este modelo, cree los componentes con esos parámetros, luego los sume y devuelva el modelo resultante.
Use
dlmMLE
para hacer una búsqueda / optimización para encontrar los parámetros apropiados (usando MLE, que es básicamente optimización, con las dificultades que pueden ocurrir en la optimización).dlmMLE
llama repetidamente a su subrutina R con parámetros candidatos para crear modelos, luego los prueba.Cree su modelo final, utilizando la subrutina R que creó más los parámetros que encontró en el paso 3.
Filtre sus datos con
dlmFilter
, luego quizás con suavidaddlmSmooth
.Si usa
dlmModReg
o hace algo que hace que el modelo tenga parámetros variables en el tiempo, no puede usardlmForecast
para pronosticar su serie. Si termina con un modelo de variante de tiempo, deseará completar sus datos de entrada con NA y dejar quedlmFilter
complete los NA por usted (el pronóstico de un hombre pobre), yadlmForecast
que no funciona con parámetros que varían en el tiempo.Si desea examinar los componentes individualmente (digamos la tendencia, por separado de la temporada), necesitará comprender las matrices y lo que hay en cada columna, además de comprender un poco cómo
dlm
los une (¡el orden importa!).Hay otro paquete, cuyo nombre se me escapa, que intenta crear un front-end que puede usar varios de estos paquetes (incluso
dlm
como el back-end). Desafortunadamente, nunca he conseguido que funcione bien, pero ese podría ser yo.Realmente recomiendo conseguir un libro sobre DLM. Conseguí un par de ellos y jugué mucho
dlm
para llegar a donde estoy, y no soy el experto de ninguna manera.fuente
dlm
la viñeta del paquete. Aprenderás lo que necesitas saber. Por eso lo recomiendodlm
, porque no creas FF, etc., tú mismo.Le sugiero que lea la viñeta dlm http://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf, especialmente el capítulo 3.3.
fuente