Hoe u een granger-causaliteitstest uitvoert in r
De Granger-causaliteitstest wordt gebruikt om te bepalen of de ene tijdreeks al dan niet nuttig is bij het voorspellen van een andere.
Deze test maakt gebruik van de volgende nul- en alternatieve hypothesen:
Nulhypothese (H 0 ): de tijdreeks x veroorzaakt niet de tijdreeks y bij Granger
Alternatieve hypothese ( HA ): Tijdreeks x Tijdreeks van Granger veroorzaakt y
De term „Granger-oorzaken“ betekent dat het kennen van de waarde van tijdreeks x met een bepaalde vertraging nuttig is voor het voorspellen van de waarde van tijdreeks y in een latere periode.
Deze test levert een F-teststatistiek op met een overeenkomstige p-waarde. Als de p-waarde onder een bepaald significantieniveau ligt (dwz α = 0,05), dan kunnen we de nulhypothese verwerpen en concluderen dat we voldoende bewijs hebben om te beweren dat de tijdreeks x Granger de tijdreeks y veroorzaakt.
Om een Granger-Causality-test in R uit te voeren, kunnen we de functie grangertest() uit het lmtest- pakket gebruiken, die de volgende syntaxis gebruikt:
grangertest(x, y, volgorde = 1)
Goud:
- x: de eerste tijdreeks
- y: de tweede tijdreeks
- volgorde: aantal offsets dat in de eerste tijdreeks moet worden gebruikt. De standaardwaarde is 1.
Het volgende stap-voor-stap voorbeeld laat zien hoe u deze functie in de praktijk kunt gebruiken.
Stap 1: Definieer de twee tijdreeksen
Voor dit voorbeeld gebruiken we de ChickEgg- gegevensset die vooraf is geladen in het lmtest-pakket. Deze datasetwaarden bevatten voor het aantal gemaakte eieren en het aantal kippen in de Verenigde Staten van 1930 tot 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
Stap 2: Voer de causaliteitstest van Granger uit
Vervolgens zullen we de functie grangertest() gebruiken om een Granger-causaliteitstest uit te voeren om te zien of het aantal gemaakte eieren voorspellend is voor het toekomstige aantal kippen. We zullen de test uitvoeren met behulp van drie offsets:
#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
Zo interpreteert u het resultaat:
- Model 1: Dit model probeert het aantal kippen te voorspellen met behulp van het aantal kippen in de afgelopen drie jaar en het aantal eieren in de afgelopen drie jaar als voorspellende variabelen.
- Model 2: Dit model probeert het aantal kippen te voorspellen door alleen het aantal kippen in de afgelopen drie jaar als voorspellende variabelen te gebruiken.
- F: Dit is de F-teststatistiek. Het blijkt 5.405 te zijn.
- Pr(>F): Dit is de p-waarde die overeenkomt met de F-teststatistiek. Het blijkt .002966 te zijn.
Omdat de p-waarde kleiner is dan 0,05, kunnen we de nulhypothese van de test verwerpen en concluderen dat het kennen van het aantal eieren nuttig is bij het voorspellen van het toekomstige aantal kippen.
Stap 3: Voer de Granger-causaliteitstest in omgekeerde volgorde uit
Hoewel we de nulhypothese van de test hebben verworpen, is het in feite mogelijk dat er sprake is van omgekeerde causaliteit. Met andere woorden: het is mogelijk dat het aantal kippen een verandering in het aantal eieren veroorzaakt.
Om deze mogelijkheid uit te sluiten, moeten we de Granger-Causaliteitstest in omgekeerde volgorde uitvoeren, met kippen als voorspellende variabele en eieren alsresponsvariabele :
#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
De p-waarde van de test is 0,6238. Omdat dit niet minder dan 0,05 is, kunnen we de nulhypothese niet verwerpen. Met andere woorden: het aantal kippen voorspelt niet het toekomstige aantal eieren.
We kunnen dus concluderen dat het kennen van het aantal eieren nuttig is bij het voorspellen van het toekomstige aantal kippen.