R でグレンジャー因果関係テストを実行する方法
グレンジャー因果関係テストは、ある時系列が別の時系列の予測に役立つかどうかを判断するために使用されます。
この検定では、次の帰無仮説と対立仮説を使用します。
帰無仮説 (H 0 ):時系列x は時系列yをグレンジャーに引き起こさない
対立仮説 ( HA ):時系列xグレンジャーの時系列がyを引き起こす
「グレンジャー原因」という用語は、一定の遅れを持って時系列xの値を知ることが、後の期間の時系列yの値を予測するのに役立つことを意味します。
この検定では、対応する p 値を含む F 検定統計量が生成されます。 p 値が特定の有意水準 (つまり、α = 0.05) を下回っている場合、帰無仮説を棄却し、時系列xグレンジャーが時系列 y を引き起こすと主張する十分な証拠があると結論付けることができます。
R でグレンジャー因果関係テストを実行するには、 lmtestパッケージのgrangertest()関数を使用できます。この関数は次の構文を使用します。
グレンジャーテスト(x, y, order = 1)
金:
- ×:最初の時系列
- y: 2 番目の時系列
- order:最初の時系列で使用するオフセットの数。デフォルト値は 1 です。
次のステップバイステップの例は、この関数を実際に使用する方法を示しています。
ステップ 1: 2 つの時系列を定義する
この例では、lmtest パッケージにプリロードされたChickEggデータセットを使用します。このデータセットの値には、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
ステップ 2: グレンジャー因果関係テストを実行する
次に、 grangertest()関数を使用してグレンジャー因果関係テストを実行し、作られた卵の数が将来の鶏の数を予測できるかどうかを確認します。 3 つのオフセットを使用してテストを実行します。
#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
結果を解釈する方法は次のとおりです。
- モデル 1:このモデルは、過去 3 年間の鶏の数と過去 3 年間の卵の数を予測変数として使用して、鶏の数を予測しようとします。
- モデル 2:このモデルは、過去 3 年間の鶏の数のみを予測変数として使用して、鶏の数を予測しようとします。
- F:これは F 検定統計量です。結果は5.405でした。
- Pr(>F):これは、F 検定統計量に対応する p 値です。 .002966であることが判明しました。
p 値は 0.05 未満であるため、検定の帰無仮説を棄却し、卵の数を知ることが将来の鶏の数を予測するのに役立つと結論付けることができます。
ステップ 3: グレンジャー因果関係テストを逆に実行する
検定の帰無仮説は棄却されましたが、実際には、逆の因果関係のケースが発生する可能性があります。つまり、鶏の数によって卵の数が変化する可能性があるのです。
この可能性を排除するには、ニワトリを予測変数として、卵を応答変数として使用して、グレンジャー因果関係検定を逆に実行する必要があります。
#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
検定の p 値は 0.6238 です。これは 0.05 未満ではないため、帰無仮説を棄却できません。言い換えれば、鶏の数は将来の卵の数を予測するものではありません。
したがって、卵の数を知ることは、将来の鶏の数を予測するのに役立つと結論付けることができます。