Comment effectuer un test de causalité Granger dans R
Le test de causalité de Granger est utilisé pour déterminer si une série chronologique est utile ou non pour en prévoir une autre.
Ce test utilise les hypothèses nulles et alternatives suivantes :
Hypothèse nulle (H 0 ) : la série temporelle x ne provoque pas la série temporelle y de Granger
Hypothèse alternative (H A ) : Série chronologique x Série chronologique des causes de Granger y
Le terme « causes de Granger » signifie que connaître la valeur de la série chronologique x avec un certain décalage est utile pour prédire la valeur de la série chronologique y à une période ultérieure.
Ce test produit une statistique de test F avec une valeur p correspondante. Si la valeur p est inférieure à un certain niveau de signification (c’est-à-dire α = 0,05), alors nous pouvons rejeter l’hypothèse nulle et conclure que nous disposons de preuves suffisantes pour affirmer que la série temporelle x Granger provoque la série temporelle y.
Pour effectuer un test Granger-Causalité dans R, nous pouvons utiliser la fonction grangertest() du package lmtest , qui utilise la syntaxe suivante :
grangertest(x, y, ordre = 1)
où:
- x : la première série chronologique
- y : la deuxième série chronologique
- order : nombre de décalages à utiliser dans la première série temporelle. La valeur par défaut est 1.
L’exemple suivant, étape par étape, montre comment utiliser cette fonction dans la pratique.
Étape 1 : Définir les deux séries chronologiques
Pour cet exemple, nous utiliserons l’ensemble de données ChickEgg préchargé dans le package lmtest. Cet ensemble de données contient des valeurs pour le nombre d’œufs fabriqués ainsi que le nombre de poulets aux États-Unis de 1930 à 1983 :
#load lmtest package library(lmtest) #load ChickEgg dataset data(ChickEgg) #view first six rows of dataset head(ChickEgg) chicken egg [1,] 468491 3581 [2,] 449743 3532 [3,] 436815 3327 [4,] 444523 3255 [5,] 433937 3156 [6,] 389958 3081
Étape 2 : Effectuer le test de causalité de Granger
Ensuite, nous utiliserons la fonction grangertest() pour effectuer un test de causalité Granger afin de voir si le nombre d’œufs fabriqués est prédictif du nombre futur de poules. Nous allons exécuter le test en utilisant trois décalages :
#perform Granger-Causality test grangertest(chicken ~ egg, order = 3, data = ChickEgg) Granger causality test Model 1: chicken ~ Lags(chicken, 1:3) + Lags(egg, 1:3) Model 2: chicken ~ Lags(chicken, 1:3) Res.Df Df F Pr(>F) 1 44 2 47 -3 5.405 0.002966 ** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Voici comment interpréter le résultat :
- Modèle 1 : Ce modèle tente de prédire le nombre de poulets en utilisant le nombre de poulets au cours des trois années précédentes et le nombre d’œufs au cours des trois années précédentes comme variables prédictives.
- Modèle 2 : Ce modèle tente de prédire le nombre de poulets en utilisant uniquement le nombre de poulets au cours des trois années précédentes comme variables prédictives.
- F : Il s’agit de la statistique du test F. Il s’avère que c’est 5,405.
- Pr(>F) : Il s’agit de la valeur p qui correspond à la statistique du test F. Il s’avère qu’il s’agit de .002966.
Puisque la valeur p est inférieure à 0,05, nous pouvons rejeter l’hypothèse nulle du test et conclure que connaître le nombre d’œufs est utile pour prédire le nombre futur de poules.
Étape 3 : Effectuer le test de causalité de Granger à l’envers
Bien que nous ayons rejeté l’hypothèse nulle du test, il est en fait possible qu’un cas de causalité inverse se produise. Autrement dit, il est possible que le nombre de poules entraîne une modification du nombre d’œufs.
Pour exclure cette possibilité, nous devons effectuer le test de Granger-Causalité à l’envers, en utilisant les poules comme variable prédictive et les œufs comme variable de réponse :
#perform Granger-Causality test in reverse grangertest(egg ~ chicken, order = 3, data = ChickEgg) Granger causality test Model 1: egg ~ Lags(egg, 1:3) + Lags(chicken, 1:3) Model 2: egg ~ Lags(egg, 1:3) Res.Df Df F Pr(>F) 1 44 2 47 -3 0.5916 0.6238
La valeur p du test est de 0,6238. Comme ce n’est pas inférieur à 0,05, nous ne pouvons pas rejeter l’hypothèse nulle. Autrement dit, le nombre de poules ne permet pas de prédire le nombre futur d’œufs.
Ainsi, nous pouvons conclure que connaître le nombre d’œufs est utile pour prédire le nombre futur de poules.