Los DLM son geniales, pero no son tan sencillos como, por ejemplo, ARIMA u otros métodos. En otros métodos, se introducen los datos y luego se ajustan algunos parámetros del algoritmo, quizás consultando varios diagnósticos para orientar los ajustes.
Con un DLM, estás creando una máquina de espacio de estados, que consiste en varias matrices que básicamente implementan algo así como un Modelo de Markov Oculto. Algunos paquetes ( sspir
Creo, entre otros) esperan que entiendas el concepto y lo que hacen las matrices. Yo recomendaría encarecidamente que empieces con el dlm
y, como recomienda @RockScience, recorre la viñeta.
Con dlm
vas a dar básicamente varios pasos:
-
¿Qué tipo de componentes describen mi serie? ¿Una tendencia? ¿Estacionalidad? ¿Variables exógenas? Utilizará dlm
herramientas como dlmModPoly
para implementar estos componentes, utilizando el +
para unirlos en un solo modelo.
-
Cree una subrutina en R que tome tantos parámetros como requiera este modelo, cree los componentes con esos parámetros, luego los sume y devuelva el modelo resultante.
-
Utilice dlmMLE
hacer una búsqueda/optimización para encontrar los parámetros apropiados (usando MLE, que es básicamente optimización, con las trampas que pueden ocurrir en la optimización). dlmMLE
llama repetidamente a su subrutina R con parámetros candidatos para crear modelos, y luego los prueba.
-
Cree su modelo final, utilizando la subrutina R que creó más los parámetros que encontró en el paso 3.
-
Filtrar los datos con dlmFilter
, entonces tal vez se alise con dlmSmooth
.
-
Si utiliza dlmModReg
o hacer cualquier cosa que provoque que el modelo tenga parámetros variables en el tiempo, no se puede utilizar dlmForecast
para pronosticar su serie. Si termina con un modelo variable en el tiempo, querrá rellenar sus datos de entrada con NA's y dejar que el dlmFilter
rellenar las NA por usted (una previsión de los pobres), ya que dlmForecast
no funciona con parámetros variables en el tiempo.
-
Si quiere examinar los componentes individualmente (por ejemplo, la tendencia, por separado de la estacionalidad), tendrá que entender las matrices y lo que hay en cada columna, además de entender un poco cómo dlm
los pone juntos (¡el orden importa!).
Hay otro paquete, cuyo nombre se me escapa, que intenta crear un front end que pueda utilizar varios de estos paquetes (incluyendo dlm
como extremo posterior). Desgraciadamente, nunca he conseguido que funcione bien, pero puede que sólo sea yo.
Realmente recomendaría conseguir un libro sobre DLMs. Tengo un par de ellos y jugué mucho con dlm
para llegar a donde estoy, y no soy un experto ni mucho menos.
3 votos
Esto puede obtener mejores respuestas en stats.stackexchange.com
0 votos
Bump... Sigo sin entender cómo hacer esto. ¿Algún interesado en contestar el post original?
2 votos
Con un DLM no es tan parecido a un libro de cocina como se podría desear. Yo tomaría la respuesta de RockScience (la viñeta DLM) y la recorrería. Un DLM es más parecido al diseño de un programa que otras técnicas que simplemente requieren introducir algunos datos y ajustar algunos parámetros. En última instancia, estás diseñando un conjunto de matrices que implementan algo así como un Modelo de Markov Oculto, y el
dlm
hace que esto sea lo más fácil posible.0 votos
¿Tienes solución a tu problema? Estoy buscando una solución para un problema similar de series de tiempo pero no he podido encontrar una solución.
0 votos
¿Has trabajado con el documento sugerido por @RockScience? ¿Has mirado el
dlm
¿paquete? Como dije en mi respuesta, los DLM son mucho más parecidos a la creación de un programa que a la introducción de algunas variables en una llamada a una función. datayoda nunca aceptó una respuesta, así que no estoy seguro de que hayan superado esta observación.