いっかくのデータサイエンティストをいく

1からプログラミングとデータサイエンスを独習したい

【時系列】VAR(グレンジャーの因果性検定)

沖本本4章3から。

グランジャーの因果性

現在と過去のxの値だけに基づいた将来のxの予測と、現在と過去のxとyの値に基づいた将来のxの予測を比較して、後者のMSE(残渣平方和)の方が小さくなる場合、ytからxtへのグレンジャー因果性(Granger causality)が存在するといわれています。

つまり、個人収入と個人消費の場合、

今年の個人収入 = 去年の個人収入×傾きA + 去年の個人消費×傾きB + 切片C

今年の個人収入 = 去年の個人収入×傾きA + 切片C

を比較した場合、前者のほうがMSEが小さい場合、去年の個人消費を変数に入れたほうがいいということになります。 f:id:imakoto0323:20181031211009p:plain

Granger因果による 時系列データの因果推定(因果フェス2015)から拝借)

グランジャーの因果性検定

グランジャーの因果性検定とは、現在と過去のxの値だけに基づいた将来のxの予測と、現在と過去のxとyの値に基づいた将来のxの予測を比較して、後者のMSE(残渣平方和)の方が有意に小さくなるか検定するものです。

グランジャーの因果性検定の手順は (1) VARモデルにおけるyktのモデルをOLSで推定し、その残差平方和をSSR1とする。

(2) VARモデルにおけるyktのモデルに制約を課したモデル(例でいうと個人消費がないモデル)をOLSで推定し、その残差平方和をSSR0とする。

(3) F統計量を F≡(SSR0−SSR1)/rSSR1/(T−np−1) で計算する。ここで、rはグレンジャー因果性検定に必要な制約の数である。

(4) rFをχ2(r)の95%点と比較し、rFのほうが大きければ、ある変数(群)からyktへのグレンジャー因果性は存在し、小さければグレンジャー因果性は存在しないと結論する。

という方法です。

Rで実装

Rで計算するにはcausality(){vars}関数を使います。

causality(Canada.var, cause = "e")

$`Granger`

    Granger causality H0: e do not Granger-cause prod rw
    U

data:  VAR object Canada.var
F-Test = 5.5053, df1 = 9, df2 = 240, p-value =
6.882e-07


$Instant

    H0: No instantaneous causality between: e and prod
    rw U

data:  VAR object Canada.var
Chi-squared = 23.585, df = 3, p-value = 3.049e-05