Ordonnance de retard pour le test de causalité de Granger

11

Supposons que je considère plusieurs variables indépendantes pour une éventuelle inclusion dans un modèle ARIMAX que je développe. Avant d'ajuster différentes variables, je voudrais filtrer les variables qui présentent une causalité inverse en utilisant un test de Granger (j'utilise la granger.testfonction du MSBVARpackage dans R, bien que je pense que d'autres implémentations fonctionnent de la même manière). Comment déterminer le nombre de retards à tester?

La fonction R est:, granger.test(y, p)yest une trame de données ou une matrice, et pest les décalages.

L'hypothèse nulle est que les dernières valeurs de ne aident pas à prédire la valeur de .pXY

Y a-t-il une raison de ne pas sélectionner ici un décalage très élevé (autre que la perte d'observations)?

Notez que j'ai déjà différencié chaque série chronologique dans ma base de données, en fonction de l'ordre d'intégration de ma série chronologique dépendante. (Par exemple, différencier une fois ma série chronologique dépendante l' a rendue stationnaire. Par conséquent, j'ai également différencié une fois toutes les séries chronologiques "indépendantes".)

ch-pub
la source
1
Notez que votre stratégie de différenciation pour obtenir la stationnarité est soumise à l'absence de cointégration. Voir l'excellent article de blog "Testing for Granger Causality" de Dave Giles pour plus de détails.
Richard Hardy

Réponses:

12

Le compromis est entre biais et pouvoir. Trop peu de retards, vous avez un test biaisé en raison de l'auto-corrélation résiduelle. Un trop grand nombre, vous permettent de potentiellement fallacieux rejet de l'hypothèse nulle - une certaine corrélation aléatoire pourrait faire ressembler aide à prédire . Que ce soit ou non une préoccupation pratique dépend de vos données, je suppose que vous devriez vous pencher plus haut, mais la longueur du décalage peut toujours être déterminée comme suit:XY

La causalité de Granger doit toujours être testée dans le contexte d'un modèle. Dans le cas spécifique de la granger.testfonction dans R, le modèle a p valeurs passées de chacune des deux variables dans le test bivarié. Le modèle qu'il utilise est donc:

yi,t=α+l=1pβlyi,tl+γlxi,tl+ϵi,t

Une manière conventionnelle de choisir pour ce modèle serait d'essayer cette régression avec différentes valeurs de et d'utiliser garder une trace de l'AIC ou du BIC pour chaque longueur de décalage. Relancez ensuite le test en utilisant la valeur de qui avait le CI le plus bas dans vos régressions.ppp

En général, le nombre de décalage dans le modèle peut être différent pour et et un test de Granger sera toujours approprié. C'est dans le cas particulier de l'implémentation de ce que vous êtes contraint au même nombre de décalages pour les deux. C'est une question de commodité et non une nécessité théorique. Avec des longueurs de décalage différentes pour les deux variables, vous pouvez toujours utiliser l'AIC ou le BIC pour sélectionner votre modèle, il vous suffira de comparer de nombreuses combinaisons décalages de et décalages de . Regardez ça .xygranger.testnxmy

Juste un mot supplémentaire - parce que le test de Granger dépend du modèle, le biais des variables omises peut être un problème pour la causalité de Granger. Vous souhaiterez peut-être inclure toutes les variables dans votre modèle, puis utiliser la causalité de Granger pour en exclure des blocs au lieu d'utiliser la granger.testfonction qui ne fait que des tests par paire.

jayk
la source
Voyons si je comprends bien ... Donc, si je vérifie si y provoque des changements dans x1, alors j'effectue plusieurs ajustements: x1 ~ L (y, 1), x1 ~ L (y, 1) + L (y, 2), x1 ~ L (y, 1) + L (y, 2) + L (y, 3) ... Alors, celui avec le meilleur IC est le décalage que je choisis utiliser pour le test de Granger?
ch-pub
1
Oui, bien que les valeurs décalées de x devraient également être incluses.
jayk
Je ne suis pas sûr de comprendre cette partie. Tu veux dire quelque chose comme ca? x1 ~ L (y, 1) + L (x1,1) contre x1 ~ L (y, 1) + L (x1,1) + L (y, 2) + L (x1,2) contre ...
ch-pub
2
Oui. En général, vous n'avez pas à le faire de cette façon car les longueurs de décalage n'ont pas à être les mêmes pour x et y. Voir: en.wikipedia.org/wiki/Granger_causality#Mathematical_statement Cependant, la commande R granger.test utilise p les valeurs passées de x ET y. Avec cette spécification sous-jacente au test, vous devez essayer d'utiliser IC avec n valeurs passées de x ET y contre IC avec n + 1 valeurs passées de x ET y.
jayk
Aucun problème! Je viens de modifier ma réponse d'origine pour la rendre un peu moins opaque.
jayk