Come eseguire un test di causalità di granger in r


Il test di causalità di Granger viene utilizzato per determinare se una serie temporale è utile o meno per prevederne un’altra.

Questo test utilizza le seguenti ipotesi nulle e alternative:

Ipotesi nulla (H 0 ): la serie temporale x non causa la serie temporale y a Granger

Ipotesi alternativa ( HA ): Serie temporali x Serie temporali delle cause Granger y

Il termine “cause di Granger” significa che conoscere il valore della serie temporale x con un certo ritardo è utile per prevedere il valore della serie temporale y in un periodo successivo.

Questo test produce una statistica del test F con un valore p corrispondente. Se il valore p è inferiore a un certo livello di significatività (cioè α = 0,05), allora possiamo rifiutare l’ipotesi nulla e concludere che abbiamo prove sufficienti per affermare che la serie temporale x Granger causa la serie temporale y.

Per eseguire un test Granger-Causality in R, possiamo utilizzare la funzione grangertest() dal pacchetto lmtest , che utilizza la seguente sintassi:

prova di granger(x, y, ordine = 1)

Oro:

  • x: la prima serie temporale
  • y: la seconda serie temporale
  • ordine: numero di offset da utilizzare nella prima serie temporale. Il valore predefinito è 1.

Il seguente esempio passo passo mostra come utilizzare questa funzione nella pratica.

Passaggio 1: definire le due serie temporali

Per questo esempio utilizzeremo il set di dati ChickEgg precaricato nel pacchetto lmtest. I valori di questo set di dati contengono il numero di uova prodotte e il numero di polli negli Stati Uniti dal 1930 al 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

Passaggio 2: eseguire il test di causalità di Granger

Successivamente, utilizzeremo la funzione grangertest() per eseguire un test di causalità di Granger per vedere se il numero di uova prodotte è predittivo del futuro numero di galline. Eseguiremo il test utilizzando tre offset:

 #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 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Ecco come interpretare il risultato:

  • Modello 1: questo modello tenta di prevedere il numero di polli utilizzando il numero di polli nei tre anni precedenti e il numero di uova nei tre anni precedenti come variabili predittive.
  • Modello 2: questo modello tenta di prevedere il numero di polli utilizzando solo il numero di polli negli ultimi tre anni come variabili predittive.
  • F: Questa è la statistica del test F. Risulta essere 5.405.
  • Pr(>F): questo è il valore p che corrisponde alla statistica del test F. Risulta essere .002966.

Poiché il valore p è inferiore a 0,05, possiamo rifiutare l’ipotesi nulla del test e concludere che conoscere il numero di uova è utile per prevedere il futuro numero di galline.

Passaggio 3: eseguire il test di causalità di Granger al contrario

Sebbene abbiamo rifiutato l’ipotesi nulla del test, è infatti possibile che si verifichi un caso di causalità inversa. In altre parole, è possibile che il numero di galline provochi una variazione nel numero di uova.

Per escludere questa possibilità, dobbiamo eseguire il test di Granger-Causalità al contrario, utilizzando i polli come variabile predittiva e le uova come variabile di risposta :

 #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

Il valore p del test è 0,6238. Poiché questo non è inferiore a 0,05, non possiamo rifiutare l’ipotesi nulla. In altre parole, il numero di galline non predice il futuro numero di uova.

Possiamo quindi concludere che conoscere il numero di uova è utile per prevedere il futuro numero di galline.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *