8 votos

Jack-knife con modelos de series temporales

Introducción

Mi objetivo es prever las tasas de crecimiento anual de una serie de indicadores macroeconómicos (denotados uno por $Y_t$ ). Una de las tareas consiste en probar el rendimiento de las previsiones de modelos de series temporales rivales con y sin variables exógenas ( $X_t$ , a $T\times k$ matriz). La lista de modelos rivales incluye:

  1. Modelo AR(I)MA (es improbable que las tasas de crecimiento anual tengan "Roo unitario", aunque esto último se supone o se comprueba). $$A(L)Y_t =\mu+ B(L)\varepsilon_t$$
  2. modelo de regresión lineal con errores ARMA $$Y_t = X_t\beta + \eta_t, \ \ A(L)\eta_t = B(L)\varepsilon_t $$
  3. modelo de variable dependiente retardada (modelo autorregresivo con variables exógenas) $$A(L)Y_t = X_t\beta + \varepsilon_t$$
  4. modelo de regresión lineal $$Y_t = X_t\beta + \varepsilon_t$$

Dónde $\varepsilon_t$ se supone que es un proceso i.i.d. de ruido blanco fuerte, media cero y varianza constante; $A(L)$ y $B(L)$ son autorregresivas (de orden $p$ ) y media móvil (de orden $q$ ) polinomios con $L$ - un operador de retroceso (lag).

Tenga en cuenta que el principal y único objetivo es el rendimiento de la previsión, por lo que cualquier "buena" propiedad de las estimaciones de los parámetros es una preocupación secundaria. Todo lo que necesito es probar cuál es el pronosticador más parsimonioso y robusto a las condiciones iniciales. La decisión se tomará con uno de los accuracy() opciones, pero primero necesito obtener el material para la comparación.

Los modelos 1. y 2. se estiman mediante auto.arima() por defecto "CSS-ML" método de estimación. Los modelos 3. y 4. se estiman por mínimos cuadrados ordinarios ( lm() ). $T$ se trata de $40$ cuartos.

Enfoques probados hasta ahora

Para elaborar los residuos jack-knifed se ha aplicado el primer enfoque denominado "rolling". A partir de una submuestra factible de datos de series temporales, se estiman los parámetros y se calcula un $h$ La previsión anticipada la realiza el predict() (EDIT: es la misma sugerencia que en la primera parte de la respuesta de Rob a la segunda pregunta). Después de que se añade un punto y la estimación \prediction se repiten los pasos.

Un punto débil de este tipo de experimentos es que el número de ticks temporales (tamaño de la muestra) utilizado para estimar los parámetros es diferente. Aunque me gustaría probar la robustez a las condiciones de partida, manteniendo fijo el tamaño de la muestra para la estimación.

Teniendo esto en cuenta he intentado establecer los diversos valores posteriores (EDIT: para el intervalo $k+p+q<t_0<t_1<T-h+1$ ) en $Y_t$ valores ausentes (NA). En los modelos 2.-4. esto también implica eliminar las filas posteriores correspondientes en la matriz de datos $X_t$ . La predicción para 3. y 4. es sencilla (la misma predict() con omisión $X_t$ filas de datos funciona bien). Todas mis preocupaciones se refieren a los modelos 1. y 2.

Sólo con el AR( $p$ ) parte las predicciones se realizan secuencialmente $Y_{t+1|t} = \hat A(L)Y_t$ . Pero con la presencia de MA( $q$ ) no se pueden utilizar directamente los parámetros estimados. Del capítulo 3.3 de "Introduction to Time Series and Forecasting" de Brockwell y Davis se deduce que se necesita un algoritmo de innovación para estimar recursivamente el $\theta_{n,j}$ del sistema específico de ecuaciones que implica parámetros estimados autorregresivos y de media móvil. EDIT: estos $\theta_{n,j}$ se utilizan para realizar la predicción ARMA, no los parámetros estimados originalmente $\theta_{j}$ . Sin embargo, en el mismo capítulo se señala que $\theta_{n,j}$ se aproxima asintóticamente a $\theta_{j}$ si el proceso es invertible. No es evidente que 30-40 puntos sean suficientes para utilizar el resultado asintótico aunque sea invertible.

Notas: No quiero restringir $q$ a cero, ya que no lo estoy haciendo en una verdadera previsión fuera de muestra. EDIT: tampoco es que sea problema de imputación de valores perdidos, sino experimento de previsión, que se supone que la trayectoria no puentea dos submuestras por esta imputación de los valores perdidos.

Preguntas

  1. En auto.arima() funciona correctamente con la presencia de valores perdidos dentro de la muestra? [Ya ha sido contestada por Rob.]
  2. (La parte realmente crucial de este post) Como pronosticar correctamente (NO imputar) estos puntos perdidos del modelo ARMA cuando ambos $p>0$ y $q>0$ ? (Espero que haya formas ya implementadas en el lenguaje R, pero simplemente me falta algo).

EDIT: ya que los parámetros de las partes ARMA se estiman correctamente, ¿podría legalmente reorganizar el objeto arima para incluir los parámetros estimados y los datos sólo para la primera submuestra y luego utilizar una función de predicción?

EDIT2: He intentado modificar la estimación mod estructura - la previsión resultante de predict.Arima es idéntica (diferencias de doble precisión) a la previsión en la que utilizo los coeficientes MA y AR estimados prediciendo $Y_{t+1|t}$ directamente como $\hat A(L)(Y_t-X_t\hat \beta)+ X_t\hat \beta+\hat B(L)\hat \varepsilon_t $ , sin KalmanForecast() . Esto era de esperar ya que la representación del espacio de estados se suministra con la misma estimación $\theta_j$ no $\theta_{n,j}$ . Así que la única pregunta que queda es la diferencia entre $\theta_j$ y $\theta_{n,j}$ significativa para influir en las previsiones de puntos? Espero que la respuesta sea negativa.

4voto

Senseful Puntos 116

No entiendo por qué piensas $q>0$ es un problema para la predicción. Es bastante fácil predecir utilizando un modelo ARIMA con términos MA y no es necesario utilizar el algoritmo de innovaciones de Brockwell y Davis. Ese algoritmo es útil para estimación en particular, en la obtención de valores de partida al optimizar la probabilidad.

Para responder a sus preguntas concretas:

  1. auto.arima() llama a arima() que utiliza una representación del espacio de estados para calcular la probabilidad. Los valores perdidos se tratan de forma natural en un formato de espacio de estados. Por lo tanto, sí, se gestionan correctamente.

  2. Los valores históricos que faltan no se estiman mediante arima() . Si desea pronosticarlos (es decir, utilizando sólo datos pasados), basta con ajustar un modelo hasta el inicio de la secuencia que falta y luego pronosticar a partir de él. Si desea estimarlos (utilizando datos anteriores y posteriores), tendrá que utilizar un suavizador de Kalman basado en el modelo de espacio de estados equivalente. Un truco alternativo que da casi los mismos resultados es promediar las previsiones utilizando datos hasta el último dato no faltante con las previsiones retrospectivas utilizando datos hasta el primer dato no faltante después de la secuencia faltante.

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