22 votos

Cómo usar el DLM con el filtro de Kalman para la previsión

¿Podría alguien explicarme un ejemplo de cómo usar el filtro DLM Kalman en R en una serie temporal? Digamos que tengo estos valores (valores trimestrales con estacionalidad anual); ¿cómo usarías el 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 código R de respuesta paso a paso, estilo libro de cocina. La exactitud de la predicción no es mi principal objetivo, sólo quiero aprender la secuencia de código que me da un número para el 2011Q2, incluso si no tengo suficientes datos. Gracias.

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.

18voto

Daryl Spitzer Puntos 220

El documento en JSS 39-02 compara 5 paquetes diferentes de filtrado Kalman en R y ofrece un código de ejemplo.

17voto

Loren Pechtel Puntos 2212

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:

  1. ¿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.

  2. 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.

  3. 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.

  4. Cree su modelo final, utilizando la subrutina R que creó más los parámetros que encontró en el paso 3.

  5. Filtrar los datos con dlmFilter , entonces tal vez se alise con dlmSmooth .

  6. 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.

  7. 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.

0 votos

Gracias Wayne, creo que mi caso es bastante simple en el sentido de que no he detectado ninguna tendencia clara o estacionalidad en la inspección visual. (Sin embargo, si conoces alguna prueba en R, por favor házmelo saber, intentaré ejecutarla). Mi problema es que no sé cómo rellenar los argumentos (FF, V, GG, W, m0, C0, dV, etc.) en las funciones dlm para mis datos. Este es el principal problema para mí. Si tengo una serie de datos bivariados (y = X1 + X2), por ejemplo (precio = demanda + oferta), ¿cómo puedo calcular estos argumentos para mis datos? FF, V, GG, W, m0, C0, dV, etc. que se requieren en las funciones dlm

1 votos

@nclfinance Por favor, lee las preguntas frecuentes y no trates este lugar como un foro.

0 votos

@nclfinance: Trabajar a través de la dlm viñeta del paquete. Aprenderás lo que necesitas saber. Por eso recomiendo dlm porque no creas FF, etc, por ti mismo.

8voto

Anders Sandvig Puntos 7964

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X