Jak wykonać test przyczynowości grangera w r
Test przyczynowości Grangera służy do określenia, czy jedna seria czasowa jest przydatna do przewidywania innej.
W teście tym wykorzystuje się następujące hipotezy zerowe i alternatywne:
Hipoteza zerowa (H 0 ): szereg czasowy x nie powoduje, że szereg czasowy y przechodzi do Granger
Hipoteza alternatywna ( HA ): Szereg czasowy x Szereg czasowy przyczyn Grangera y
Termin „przyczyny Grangera” oznacza, że znajomość wartości szeregu czasowego x z pewnym opóźnieniem jest przydatna do przewidywania wartości szeregu czasowego y w późniejszym okresie.
Test ten generuje statystykę testu F z odpowiednią wartością p. Jeśli wartość p jest poniżej pewnego poziomu istotności (tj. α = 0,05), wówczas możemy odrzucić hipotezę zerową i stwierdzić, że mamy wystarczające dowody, aby stwierdzić, że szereg czasowy x Granger powoduje szereg czasowy y.
Aby wykonać test Granger-Causality w R, możemy użyć funkcji grangertest() z pakietu lmtest , która wykorzystuje następującą składnię:
grangertest(x, y, rząd = 1)
Złoto:
- x: pierwszy szereg czasowy
- y: druga seria czasowa
- kolejność: liczba przesunięć do zastosowania w pierwszym szeregu czasowym. Wartość domyślna to 1.
Poniższy przykład krok po kroku pokazuje, jak w praktyce wykorzystać tę funkcję.
Krok 1: Zdefiniuj dwa szeregi czasowe
W tym przykładzie użyjemy zestawu danych ChickEgg wstępnie załadowanego w pakiecie lmtest. Wartości tego zbioru danych obejmują liczbę wyprodukowanych jaj oraz liczbę kurcząt w Stanach Zjednoczonych w latach 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
Krok 2: Wykonaj test przyczynowości Grangera
Następnie użyjemy funkcji grangertest() do przeprowadzenia testu przyczynowości Grangera, aby sprawdzić, czy liczba wyprodukowanych jaj pozwala przewidzieć przyszłą liczbę kur. Test przeprowadzimy przy użyciu trzech przesunięć:
#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
Oto jak zinterpretować wynik:
- Model 1: Model ten próbuje przewidzieć liczbę kurcząt, wykorzystując liczbę kurcząt w poprzednich trzech latach i liczbę jaj w poprzednich trzech latach jako zmienne predykcyjne.
- Model 2: Model ten próbuje przewidzieć liczbę kurczaków, wykorzystując jako zmienne predykcyjne wyłącznie liczbę kurczaków z poprzednich trzech lat.
- F: To jest statystyka testu F. Okazuje się, że jest to 5,405.
- Pr(>F): Jest to wartość p odpowiadająca statystyce testu F. Okazuje się, że jest to .002966.
Ponieważ wartość p jest mniejsza niż 0,05, możemy odrzucić hipotezę zerową testu i stwierdzić, że znajomość liczby jaj jest przydatna w przewidywaniu przyszłej liczby kur.
Krok 3: Wykonaj test przyczynowości Grangera w odwrotnej kolejności
Chociaż odrzuciliśmy hipotezę zerową testu, w rzeczywistości jest możliwe, że może zaistnieć przypadek odwrotnej przyczynowości. Innymi słowy, możliwe jest, że liczba kur powoduje zmianę liczby jaj.
Aby wykluczyć tę możliwość, musimy przeprowadzić odwrotny test Grangera-Przyczynowości, używając kurczaków jako zmiennej predykcyjnej i jaj jakozmiennej odpowiedzi :
#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
Wartość p testu wynosi 0,6238. Ponieważ jest to nie mniej niż 0,05, nie możemy odrzucić hipotezy zerowej. Innymi słowy, liczba kur nie przewiduje przyszłej liczby jaj.
Możemy zatem stwierdzić, że znajomość liczby jaj jest przydatna w przewidywaniu przyszłej liczby kur.