Couteau-jack avec modèles de séries chronologiques

8

introduction

Je vise à prévoir les taux de croissance annuels pour un certain nombre d’indicateurs macroéconomiques (notons un par Yt). L'une des tâches consiste à tester les performances de prévision des modèles de séries chronologiques rivaux avec et sans variables exogènes (Xt, une T×kmatrice). La liste des modèles concurrents comprend:

  1. Modèle AR (I) MA (il est peu probable que les taux de croissance annuels aient une "unité Roo", bien que cette dernière soit supposée ou testée)
    A(L)Yt=μ+B(L)εt
  2. modèle de régression linéaire avec erreurs ARMA
    Yt=Xtβ+ηt,  A(L)ηt=B(L)εt
  3. modèle de variable dépendante décalée (modèle autorégressif avec variables exogènes)
    A(L)Yt=Xtβ+εt
  4. modèle de régression linéaire
    Yt=Xtβ+εt

εt est supposé être un processus iid à fort bruit blanc, à variance constante moyenne nulle; A(L) et B(L) sont autorégressifs (d'ordre p) et moyenne mobile (de l'ordre q) polynômes avec L - un opérateur de rétrogradation (décalage).

Notez que l'objectif principal et le seul est la prévision des performances, donc toutes les «bonnes» propriétés des estimations de paramètres sont de préoccupation secondaire. Tout ce dont j'ai besoin est de tester le prévisionniste le plus parcimonieux et le plus robuste aux conditions de départ. La décision sera prise avec l'une des accuracy()options, mais je dois d'abord obtenir le matériel pour la comparaison.

Les modèles 1. et 2. sont estimés par la méthode d'estimation par auto.arima()défaut "CSS-ML". Les modèles 3. et 4. sont estimés par les moindres carrés ordinaires ( lm()).T est à propos 40 trimestres.

Approches essayées jusqu'à présent

Pour faire les résidus de cric-couteau, la première approche dénotée par «roulement» a été mise en œuvre. En partant d’un sous-échantillon de données chronologiques potentiellement important, les paramètres sont estimés ethla prévision est faite par la predict()fonction (EDIT: c'est la même suggestion que dans la première partie de la réponse de Rob à la deuxième question). Après cela, un point est ajouté et les étapes d'estimation \ prédiction sont répétées.

Un point faible de ces expériences est que le nombre de ticks de temps (taille d'échantillon) utilisés pour estimer les paramètres est différent. Alors que je voudrais tester la robustesse des conditions de départ, garder la taille de l'échantillon pour l'estimation fixe.

Gardant cela à l'esprit, j'ai essayé de définir plusieurs valeurs suivantes (EDIT: pour l'intervalle k+p+q<t0<t1<Th+1) dans Ytétant des valeurs manquantes (NA). Dans les modèles 2.-4. cela implique également de supprimer les lignes suivantes correspondantes dans la matrice de donnéesXt. La prévision pour 3. et 4. est simple (la même chose predict()avec omisXtles lignes de données fonctionnent bien). Toutes mes préoccupations concernent les modèles 1. et 2.

Avec juste l'AR (p) les prédictions se font en partie de façon séquentielle Yt+1|t=A^(L)Yt. Mais avec la présence de MA (q) on ne pouvait pas (?) utiliser directement les paramètres estimés. Du chapitre 3.3 de Brockwell et Davis "Introduction aux séries chronologiques et aux prévisions", il s'ensuit que l'on a besoin d'un algorithme d'innovation pour estimerθn,jdu système spécifique d'équations qui implique des paramètres moyens autorégressifs et mobiles estimés. EDIT: cesθn,j les paramètres sont utilisés pour faire la prédiction ARMA, pas les paramètres initialement estimés θj. On remarque cependant dans le même chapitre queθn,j approches asymptotiques θjsi le processus est inversible. Il n'est pas évident que 30 à 40 points suffisent pour que le résultat asymptotique soit utilisé même s'il est inversible.

Remarques: je ne veux pas restreindre qà zéro, car je ne le fais pas dans de véritables prévisions hors échantillon. EDIT: pas non plus qu'il ne s'agit pas d'un problème d'imputation de valeur manquante, mais d'une expérience de prévision, que la trajectoire n'est pas censée combler deux sous-échantillons en imputant les valeurs manquantes.

Des questions

  1. Fonctionne auto.arima()correctement avec la présence de valeurs manquantes à l'intérieur de l'échantillon? [Déjà répondu par Rob.]
  2. (La partie réellement cruciale de ce post) Comment prévoir correctement (PAS imputer) ces points manqués du modèle ARMA lorsque les deux p>0 et q>0? (J'espère qu'il existe des moyens déjà mis en œuvre en langage R, mais il me manque simplement quelque chose.)

EDIT: puisque les paramètres des pièces ARMA sont estimés correctement, pourrais-je réorganiser légalement l'objet arima pour inclure les paramètres estimés et les données uniquement pour le premier sous-échantillon, puis utiliser une fonction de prédiction?

EDIT2: J'ai essayé de modifier la modstructure estimée - la prévision résultante predict.Arimaest identique (différences de double précision) à la prévision où j'utilise les coefficients estimés MA et AR prédisantYt+1|t directement comme A^(L)(YtXtβ^)+Xtβ^+B^(L)ε^t, sans KalmanForecast(). Cela était attendu car la représentation de l'espace d'état est fournie avec la même estimationθj, ne pas θn,j. La seule question qui reste est donc la différence entreθj et θn,jsignificatif pour influencer les prévisions ponctuelles? J'espère que la réponse est négative.

Dmitrij Celov
la source
Dans la itsmrbibliothèque, la mise en œuvre de la prévision du processus ARMA pour les modèles 1. et 2. nécessite laηt être à moyenne nulle (puisque εtest supposé être une moyenne nulle). Cependant, la sortie de arimasuggère que le résidu n'est pas de moyenne nulle, c'est-à-direYtXtβ^n'est pas à moyenne nulle. Dois-je alors augmenter le terme d'interception dans l' Arimaobjet estimé , avant de faire la prévision en jack-knives? Dois-je faire de même pour les prédictions ordinaires de Arima?
Dmitrij Celov
PS les estimations sont presque identiques (dans le sens des écarts de double précision), si je mets μ=0dans itsmrou augmenter l'interception pour Arimaassurer que les résidus sont à moyenne nulle.
Dmitrij Celov

Réponses:

4

Je ne comprends pas pourquoi tu penses q>0est un problème de prédiction. Il est assez facile de prévoir l'utilisation d'un modèle ARIMA avec des termes MA et vous n'avez pas besoin d'utiliser l'algorithme des innovations de Brockwell et Davis. Cet algorithme est utile pour l' estimation ; en particulier, pour obtenir des valeurs de départ lors de l'optimisation de la probabilité.

Pour répondre à vos questions spécifiques:

  1. auto.arima()appels arima()qui utilise une représentation de l'espace d'états pour calculer la probabilité. Les valeurs manquantes sont gérées naturellement dans un format d'espace d'état. Donc, oui, ils sont traités correctement.

  2. Les valeurs historiques manquantes ne sont pas estimées par arima(). Si vous souhaitez les prévoir (c'est-à-dire en utilisant uniquement des données antérieures), ajustez simplement un modèle jusqu'au début de la séquence manquante, puis effectuez une prévision à partir de celle-ci. Si vous souhaitez les estimer (en utilisant des données avant et après), vous devez utiliser un lisseur Kalman basé sur le modèle d'espace d'état équivalent. Un autre fudge qui donne presque les mêmes résultats consiste à faire la moyenne des prévisions en utilisant des données jusqu'aux dernières données non manquantes avec les retransmissions en utilisant des données jusqu'aux premières données non manquantes après la séquence manquante.

Rob Hyndman
la source