introduction
Je vise à prévoir les taux de croissance annuels pour un certain nombre d’indicateurs macroéconomiques (notons un par ). 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 (, une matrice). La liste des modèles concurrents comprend:
- 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)
- modèle de régression linéaire avec erreurs ARMA
- modèle de variable dépendante décalée (modèle autorégressif avec variables exogènes)
- modèle de régression linéaire
Où est supposé être un processus iid à fort bruit blanc, à variance constante moyenne nulle; et sont autorégressifs (d'ordre ) et moyenne mobile (de l'ordre ) polynômes avec - 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()
). est à propos 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 etla 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 ) dans é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ées. La prévision pour 3. et 4. est simple (la même chose predict()
avec omisles lignes de données fonctionnent bien). Toutes mes préoccupations concernent les modèles 1. et 2.
Avec juste l'AR () les prédictions se font en partie de façon séquentielle . Mais avec la présence de MA () 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 estimerdu système spécifique d'équations qui implique des paramètres moyens autorégressifs et mobiles estimés. EDIT: ces les paramètres sont utilisés pour faire la prédiction ARMA, pas les paramètres initialement estimés . On remarque cependant dans le même chapitre que approches asymptotiques si 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 à 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
- Fonctionne
auto.arima()
correctement avec la présence de valeurs manquantes à l'intérieur de l'échantillon? [Déjà répondu par Rob.] - (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 et ? (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 mod
structure estimée - la prévision résultante predict.Arima
est identique (différences de double précision) à la prévision où j'utilise les coefficients estimés MA et AR prédisant directement comme , sans KalmanForecast()
. Cela était attendu car la représentation de l'espace d'état est fournie avec la même estimation, ne pas . La seule question qui reste est donc la différence entre et significatif pour influencer les prévisions ponctuelles? J'espère que la réponse est négative.
la source
itsmr
bibliothèque, la mise en œuvre de la prévision du processus ARMA pour les modèles 1. et 2. nécessite laarima
suggère que le résidu n'est pas de moyenne nulle, c'est-à-direArima
objet estimé , avant de faire la prévision en jack-knives? Dois-je faire de même pour les prédictions ordinaires deArima
?itsmr
ou augmenter l'interception pourArima
assurer que les résidus sont à moyenne nulle.Réponses:
Je ne comprends pas pourquoi tu pensesq>0 est 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:
auto.arima()
appelsarima()
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.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.la source