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.