Upload
Download free for 30 days
Login
Submit Search
Granger因果による時系列データの因果推定(因果フェス2015)
53 likes
39,364 views
Takashi J OZAKI
因果フェス2015(8月6日・駒場)での発表資料です。
Data & Analytics
Related topics:
Data Science Insights
Read more
1 of 43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Most read
38
Most read
39
40
41
42
43
Most read
More Related Content
PDF
ベイズモデリングと仲良くするために
Shushi Namba
PPTX
ベイズファクターとモデル選択
kazutantan
PDF
質的変数の相関・因子分析
Mitsuo Shimohata
PDF
階層モデルの分散パラメータの事前分布について
hoxo_m
PPTX
社会心理学者のための時系列分析入門_小森
Masashi Komori
PDF
『バックドア基準の入門』@統数研研究集会
takehikoihayashi
PDF
Stanコードの書き方 中級編
Hiroshi Shimizu
PDF
臨床疫学研究における傾向スコア分析の使い⽅ 〜観察研究における治療効果研究〜
Yasuyuki Okumura
ベイズモデリングと仲良くするために
Shushi Namba
ベイズファクターとモデル選択
kazutantan
質的変数の相関・因子分析
Mitsuo Shimohata
階層モデルの分散パラメータの事前分布について
hoxo_m
社会心理学者のための時系列分析入門_小森
Masashi Komori
『バックドア基準の入門』@統数研研究集会
takehikoihayashi
Stanコードの書き方 中級編
Hiroshi Shimizu
臨床疫学研究における傾向スコア分析の使い⽅ 〜観察研究における治療効果研究〜
Yasuyuki Okumura
What's hot
(20)
PDF
Prophet入門【理論編】Facebookの時系列予測ツール
hoxo_m
PPTX
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
PDF
負の二項分布について
Hiroshi Shimizu
PDF
相関と因果について考える:統計的因果推論、その(不)可能性の中心
takehikoihayashi
PDF
心理学におけるベイズ統計の流行を整理する
Hiroshi Shimizu
PDF
ベータ分布の謎に迫る
Ken'ichi Matsui
PDF
最適輸送入門
joisino
PDF
pymcとpystanでベイズ推定してみた話
Classi.corp
PPTX
重回帰分析で交互作用効果
Makoto Hirakawa
PDF
Rで架空データの発生
Makoto Hirakawa
PDF
グラフィカルモデル入門
Kawamoto_Kazuhiko
PDF
Stan超初心者入門
Hiroshi Shimizu
PPT
100614 構造方程式モデリング基本の「き」
Shinohara Masahiro
PDF
因果探索: 基本から最近の発展までを概説
Shiga University, RIKEN
PDF
クラシックな機械学習入門:付録:よく使う線形代数の公式
Hiroshi Nakagawa
PDF
渡辺澄夫著「ベイズ統計の理論と方法」5.1 マルコフ連鎖モンテカルロ法
Kenichi Hironaka
PDF
計量経済学と 機械学習の交差点入り口 (公開用)
Shota Yasui
PDF
正準相関分析
Akisato Kimura
PPTX
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Hiroshi Shimizu
PDF
Probabilistic Graphical Models 輪読会 #1
Takuma Yagi
Prophet入門【理論編】Facebookの時系列予測ツール
hoxo_m
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
負の二項分布について
Hiroshi Shimizu
相関と因果について考える:統計的因果推論、その(不)可能性の中心
takehikoihayashi
心理学におけるベイズ統計の流行を整理する
Hiroshi Shimizu
ベータ分布の謎に迫る
Ken'ichi Matsui
最適輸送入門
joisino
pymcとpystanでベイズ推定してみた話
Classi.corp
重回帰分析で交互作用効果
Makoto Hirakawa
Rで架空データの発生
Makoto Hirakawa
グラフィカルモデル入門
Kawamoto_Kazuhiko
Stan超初心者入門
Hiroshi Shimizu
100614 構造方程式モデリング基本の「き」
Shinohara Masahiro
因果探索: 基本から最近の発展までを概説
Shiga University, RIKEN
クラシックな機械学習入門:付録:よく使う線形代数の公式
Hiroshi Nakagawa
渡辺澄夫著「ベイズ統計の理論と方法」5.1 マルコフ連鎖モンテカルロ法
Kenichi Hironaka
計量経済学と 機械学習の交差点入り口 (公開用)
Shota Yasui
正準相関分析
Akisato Kimura
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Hiroshi Shimizu
Probabilistic Graphical Models 輪読会 #1
Takuma Yagi
Ad
Similar to Granger因果による時系列データの因果推定(因果フェス2015)
(20)
PPTX
Time series analysis with python 1 3
ShoKumada
PPTX
ブートストラップ法とその周辺とR
Daisuke Yoneoka
PPTX
第五回統計学勉強会@東大駒場
Daisuke Yoneoka
PDF
みどりぼん3章前半
Akifumi Eguchi
PPTX
Feature Selection with R / in JP
Sercan Ahi
PDF
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
hirokazutanaka
PDF
星野「調査観察データの統計科学」第3章
Shuyo Nakatani
PDF
Analysis of clinical trials using sas 勉強用 isseing333
Issei Kurahashi
PDF
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
Shiga University, RIKEN
PDF
一般化線形混合モデル isseing333
Issei Kurahashi
PDF
統計的因果推論への招待 -因果構造探索を中心に-
Shiga University, RIKEN
PDF
Rで学ぶロバスト推定
Shintaro Fukushima
PPTX
PRML4.3
hiroki yamaoka
PPTX
Rで学ぶ観察データでの因果推定
Hiroki Matsui
PDF
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
PPTX
統計的学習の基礎_3章
Shoichi Taguchi
PDF
修士論文発表:「非負値行列分解における漸近的Bayes汎化誤差」
Naoki Hayashi
PDF
Rで学ぶ回帰分析と単位根検定
Nagi Teramo
PDF
Rで計量時系列分析~CRANパッケージ総ざらい~
Takashi J OZAKI
PDF
みどりぼん9章前半
Akifumi Eguchi
Time series analysis with python 1 3
ShoKumada
ブートストラップ法とその周辺とR
Daisuke Yoneoka
第五回統計学勉強会@東大駒場
Daisuke Yoneoka
みどりぼん3章前半
Akifumi Eguchi
Feature Selection with R / in JP
Sercan Ahi
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
hirokazutanaka
星野「調査観察データの統計科学」第3章
Shuyo Nakatani
Analysis of clinical trials using sas 勉強用 isseing333
Issei Kurahashi
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
Shiga University, RIKEN
一般化線形混合モデル isseing333
Issei Kurahashi
統計的因果推論への招待 -因果構造探索を中心に-
Shiga University, RIKEN
Rで学ぶロバスト推定
Shintaro Fukushima
PRML4.3
hiroki yamaoka
Rで学ぶ観察データでの因果推定
Hiroki Matsui
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
統計的学習の基礎_3章
Shoichi Taguchi
修士論文発表:「非負値行列分解における漸近的Bayes汎化誤差」
Naoki Hayashi
Rで学ぶ回帰分析と単位根検定
Nagi Teramo
Rで計量時系列分析~CRANパッケージ総ざらい~
Takashi J OZAKI
みどりぼん9章前半
Akifumi Eguchi
Ad
More from Takashi J OZAKI
(16)
PDF
直感的な単変量モデルでは予測できない「ワインの味」を多変量モデルで予測する
Takashi J OZAKI
PDF
Taste of Wine vs. Data Science
Takashi J OZAKI
PDF
Tech Lab Paak講演会 20150601
Takashi J OZAKI
PDF
なぜ統計学がビジネスの 意思決定において大事なのか?
Takashi J OZAKI
PDF
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Takashi J OZAKI
PDF
『手を動かしながら学ぶ ビジネスに活かすデータマイニング』で目指したもの・学んでもらいたいもの
Takashi J OZAKI
PDF
Jc 20141003 tjo
Takashi J OZAKI
PDF
データ分析というお仕事のこれまでとこれから(HCMPL2014)
Takashi J OZAKI
PDF
「データサイエンティスト・ブーム」後の企業におけるデータ分析者像を探る
Takashi J OZAKI
PDF
Visualization of Supervised Learning with {arules} + {arulesViz}
Takashi J OZAKI
PDF
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
Takashi J OZAKI
PDF
ビジネスの現場のデータ分析における理想と現実
Takashi J OZAKI
PDF
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
Takashi J OZAKI
PDF
最新業界事情から見るデータサイエンティストの「実像」
Takashi J OZAKI
PPTX
21世紀で最もセクシーな職業!?「データサイエンティスト」の実像に迫る
Takashi J OZAKI
PPTX
Simple perceptron by TJO
Takashi J OZAKI
直感的な単変量モデルでは予測できない「ワインの味」を多変量モデルで予測する
Takashi J OZAKI
Taste of Wine vs. Data Science
Takashi J OZAKI
Tech Lab Paak講演会 20150601
Takashi J OZAKI
なぜ統計学がビジネスの 意思決定において大事なのか?
Takashi J OZAKI
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Takashi J OZAKI
『手を動かしながら学ぶ ビジネスに活かすデータマイニング』で目指したもの・学んでもらいたいもの
Takashi J OZAKI
Jc 20141003 tjo
Takashi J OZAKI
データ分析というお仕事のこれまでとこれから(HCMPL2014)
Takashi J OZAKI
「データサイエンティスト・ブーム」後の企業におけるデータ分析者像を探る
Takashi J OZAKI
Visualization of Supervised Learning with {arules} + {arulesViz}
Takashi J OZAKI
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
Takashi J OZAKI
ビジネスの現場のデータ分析における理想と現実
Takashi J OZAKI
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
Takashi J OZAKI
最新業界事情から見るデータサイエンティストの「実像」
Takashi J OZAKI
21世紀で最もセクシーな職業!?「データサイエンティスト」の実像に迫る
Takashi J OZAKI
Simple perceptron by TJO
Takashi J OZAKI
Granger因果による時系列データの因果推定(因果フェス2015)
1.
Granger因果による 時系列データの因果推定 株式会社リクルートコミュニケーションズ 尾崎 隆 (Takashi
J. OZAKI, Ph. D.) 2015/8/6 1
2.
今更ですが、自己紹介を… ブログやってます 2015/8/6 2
3.
今更ですが、自己紹介を… 実はGranger因果を使った論文を大昔書いたことがあります 2015/8/6 3 (Ozaki,
PLoS One, 2011)
4.
今回のお題はこちらから(以下この2冊から全て引用) 2015/8/6 4
5.
今回の大前提 2015/8/6 5 + で、基本的にやっていきます
6.
2015/8/6 6 (下準備:サンプルデータを取っておく)
7.
下準備 2015/8/6 7 サンプルデータとして{RFinanceYJ}で株価時系列を取ってくる > library(RFinanceYJ) >
st1<-quoteStockTsData('4751.t',since='2012-01-01',date.end='2013-07-31') > st2<-quoteStockTsData('2432.t',since='2012-01-01',date.end='2013-07-31') > st3<-quoteStockTsData('3632.t',since='2012-01-01',date.end='2013-07-31') > st4<-quoteStockTsData('4755.t',since='2012-01-01',date.end='2013-07-31') > st5<-quoteStockTsData('3793.t',since='2012-01-01',date.end='2013-07-31') > stock1<-ts(st1$adj_close) > stock2<-ts(st2$adj_close) > stock3<-ts(st3$adj_close) > stock4<-ts(st4$adj_close) > stock5<-ts(st5$adj_close)
8.
下準備 2015/8/6 8
9.
2015/8/6 9 Granger因果の基礎: VAR(ベクトル自己回帰)モデル
10.
2015/8/6 10 ※面倒なので単変量時系列、即ち AR, MA,
ARIMA過程の説明は飛ばします 自己回帰の発想は後で話します
11.
VAR (Vector Auto
Regressive)モデルとは VAR(p)過程 ベクトル自己回帰過程 ラグ次数pと各係数について 「見かけ上無相関なモデル」(SUR)で各説明変数が相互に共 通なので推定は容易、ただOLSを解くだけ(AICで次数選択) 多変量時系列モデリングの基本 AR過程を並べるだけでパラメータいっぱい だいたいの多変量時系列はこれで十分表現できる 2015/8/6 11
12.
Rでは{vars}パッケージで実践できる とりあえず株価3系列のVARモデルを推定してみる ※ある程度スパイクの少ない3系列に限定しました 2015/8/6 12 >
vstock<-cbind(stock2,stock3,stock4) 株価3系列のマトリクスを組む > VARselect(vstock,lag.max=5) VAR次数pを推定 $selection AIC(n) HQ(n) SC(n) FPE(n) 1 1 1 1 VAR次数p = 1ということに $criteria 1 2 3 4 5 AIC(n) 2.245074e+01 2.247979e+01 2.249565e+01 2.252026e+01 2.251009e+01 HQ(n) 2.249960e+01 2.256531e+01 2.261782e+01 2.267908e+01 2.270557e+01 SC(n) 2.257395e+01 2.269543e+01 2.280370e+01 2.292071e+01 2.300296e+01 FPE(n) 5.626414e+09 5.792362e+09 5.885075e+09 6.031926e+09 5.971320e+09 > vstock.var<-VAR(vstock,p=1) VAR(){vars}関数で次数p=1を与えて係数推定
13.
{vars}:多変量時系列をモデリング・予測・因果性の推定 2015/8/6 13 > summary(vstock.var) VAR
Estimation Results: ========================= Endogenous variables: stock2, stock3, stock4 Deterministic variables: const Sample size: 389 Log Likelihood: -6010.006 Roots of the characteristic polynomial: 0.9926 0.9926 0.9615 Call: VAR(y = vstock, p = 1) Estimation results for equation stock2: ======================================= stock2 = stock2.l1 + stock3.l1 + stock4.l1 + const Estimate Std. Error t value Pr(>|t|) stock2.l1 0.96768 0.01167 82.953 < 2e-16 *** stock3.l1 -0.01560 0.01005 -1.552 0.121417 stock4.l1 -0.08362 0.02780 -3.008 0.002800 ** const 172.01591 48.83806 3.522 0.000479 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 80.51 on 385 degrees of freedom Multiple R-Squared: 0.953, Adjusted R-squared: 0.9526 F-statistic: 2601 on 3 and 385 DF, p-value: < 2.2e-16 (以下省略) VAR係数の概要はsummary()で
14.
{vars}:多変量時系列をモデリング・予測・因果性の推定 2015/8/6 14 > plot(vstock.var) VARモデルの推定残差・自己相関・偏自己相関はplot.varest()で
15.
{vars}:多変量時系列をモデリング・予測・因果性の推定 2015/8/6 15 > vstock.prd<-predict(vstock.var,n.ahead=100,ci=0.95) >
plot(vstock.prd) VARモデルの予測はpredict.varest()で
16.
2015/8/6 16 いよいよここからGranger因果
17.
Granger因果を考え出した人 2015/8/6 17 Clive W.
J. Granger (1934-2009) 2003年ノーベル経済学賞 *Photo from Wikimedia Commons **実は授賞理由は共和分に関する理論的研究の成果です
18.
Granger因果の基本的な発想 2015/8/6 18 時系列Aの未来値予測が、 時系列Bを予測式に入れることに よって改善する場合、 「Grangerの意味でBAなる因果関係にある」 と言う
19.
Granger因果の基本的な発想 2015/8/6 19 時系列AのOLS残差が、 時系列Bを予測式に入れることで OLS残差が小さくなる場合、 「Grangerの意味でBAなる因果関係にある」 と言う
20.
Granger因果の基本的な発想 2015/8/6 20 時系列AのVARモデルのOLS残差が、 時系列BをVARモデルに入れることで OLS残差が小さくなる場合、 「Grangerの意味でBAなる因果関係にある」 と言う これなら定式化できる
21.
Granger因果のイメージ 2015/8/6 21 時系列Aの生データ
22.
Granger因果のイメージ 2015/8/6 22 時系列Aの生データ 時系列AのARモデル
23.
Granger因果のイメージ 2015/8/6 23 時系列Aの生データ 時系列Aの ARモデルの OLS誤差 時系列AのARモデル
24.
Granger因果のイメージ 2015/8/6 24 時系列Aの生データ 時系列Aの ARモデルの OLS誤差 時系列Bの生データ 時系列AのARモデル
25.
イメージ 2015/8/6 25 時系列Aの生データ 時系列AとBのVARモデル 時系列Aの ARモデルの OLS誤差 時系列Bの生データ 時系列AのARモデル
26.
Granger因果のイメージ 2015/8/6 26 時系列Aの生データ 時系列AとBのVARモデル 時系列Aの ARモデルの OLS誤差 時系列Bの生データ 時系列AのARモデル 時系列ABの VARモデルの OLS誤差 改善!
27.
Granger因果のイメージ 2015/8/6 27 時系列AとBのVARモデル 時系列Bの生データ 時系列Aの生データ 「Grangerの意味でBAなる因果関係あり」
28.
沖本本から定義の抜粋 2015/8/6 28
29.
Granger因果の定義(1) 2015/8/6 29
30.
Granger因果の定義(2) 2015/8/6 30
31.
Granger因果の定義(3) 2015/8/6 31 ※厳密な説明は例えばHamilton本pp.302-8などを参照のこと
32.
Granger因果性検定はcausality()で 2015/8/6 32 > dstock<-diff(vstock,lag=1)
Granger因果性検定なので1階階差を取る > VARselect(dstock,lag.max=5) > dstock.var<-VAR(dstock,p=1) > causality(dstock.var,cause=“stock2”) stock2からの因果性を見る $Granger Granger causality H0: stock2 do not Granger-cause stock3 stock4 data: VAR object dstock.var F-Test = 1.8703, df1 = 2, df2 = 1152, p-value = 0.1545 $Instant H0: No instantaneous causality between: stock2 and stock3 stock4 data: VAR object dstock.var Chi-squared = 124.7876, df = 2, p-value < 2.2e-16
33.
一応有意なGranger因果が得られる例を… 2015/8/6 33 > data(Canada)
{vars}パッケージ同梱の”Canada”データより > var.2c <- VAR(Canada, p = 2, type = “const”) > causality(var.2c, cause = “e”)”e”からの因果性を見る $Granger Granger causality H0: e do not Granger-cause prod rw U data: VAR object var.2c F-Test = 6.2768, df1 = 6, df2 = 292, p-value = 3.206e-06 $Instant H0: No instantaneous causality between: e and prod rw U data: VAR object var.2c Chi-squared = 26.0685, df = 3, p-value = 9.228e-06
34.
ちなみにcausality関数は実際にはこう動いてます(汗) 2015/8/6 34 function (x,
cause = NULL, vcov. = NULL, boot = FALSE, boot.runs = 100) { if (!(class(x) == "varest")) { stop("¥nPlease provide an object of class 'varest', generated by 'var()'.¥n") } K <- x$K p <- x$p obs <- x$obs type <- x$type obj.name <- deparse(substitute(x)) y <- x$y y.names <- colnames(x$y) if (is.null(cause)) { cause <- y.names[1] warning("¥nArgument 'cause' has not been specified;¥nusing first variable in 'x$y' (", cause, ") as cause variable.¥n") } else { if (!all(cause %in% y.names)) stop("Argument cause does not match variables names.¥n") } y1.names <- subset(y.names, subset = y.names %in% cause) y2.names <- subset(y.names, subset = !(y.names %in% cause)) Z <- x$datamat[, -c(1:K)] xMlm <- toMlm(x) PI <- coef(xMlm) PI.vec <- as.vector(PI) R2 <- matrix(0, ncol = ncol(PI), nrow = nrow(PI)) g <- which(gsub("¥¥.l[[:digit:]]", "", rownames(PI)) %in% cause) j <- which(colnames(PI) %in% cause) R2[g, -j] <- 1 w <- which(as.vector(R2) != 0) N <- length(w) R <- matrix(0, ncol = ncol(PI) * nrow(PI), nrow = N) for (i in 1:N) R[i, w[i]] <- 1 sigma.pi <- if (is.null(vcov.)) vcov(xMlm) else if (is.function(vcov.)) vcov.(xMlm) else vcov. df1 <- p * length(y1.names) * length(y2.names) df2 <- K * obs - length(PI) STATISTIC <- t(R %*% PI.vec) %*% solve(R %*% sigma.pi %*% t(R)) %*% R %*% PI.vec/N if (boot) { co.names <- Bcoef(x) k <- which(gsub("¥¥.l[[:digit:]]", "", colnames(co.names)) %in% cause) l <- which(rownames(co.names) %in% cause) R2inv <- matrix(1, ncol = nrow(PI), nrow = ncol(PI)) R2inv[-l, k] <- 0 xres <- restrict(x, method = "man", resmat = R2inv) pred <- sapply(xres$varresult, predict) res <- residuals(xres) if (is.null(vcov.)) { Zmlm <- model.matrix(xMlm) cross <- crossprod(Zmlm) inside <- solve(R %*% sigma.pi %*% t(R)) boot.fun <- function(x = 1) { Ynew <- pred + res * rnorm(n = obs, mean = 0, sd = x) PI.boot <- solve(cross, crossprod(Zmlm, Ynew)) PI.boot.vec <- as.vector(PI.boot) t(R %*% PI.boot.vec) %*% inside %*% (R %*% PI.boot.vec)/N } } else { X <- x$datamat if (x$type %in% c("const", "both")) X <- X[, -grep("const", colnames(X))] boot.fun <- function(x = 1) { X[, 1:K] <- pred + res * rnorm(n = obs, sd = x, mean = 1) xMlm.boot <- update(xMlm, . ~ .) sigma.pi.boot <- if (is.function(vcov.)) vcov.(xMlm.boot) else { vcov. warning("vcov. should be function, not an object, when used with boot=TRUE") } PI.boot.vec <- as.vector(coef(xMlm.boot)) t(R %*% PI.boot.vec) %*% solve(R %*% sigma.pi.boot %*% t(R)) %*% R %*% PI.boot.vec/N } } res.rep <- replicate(boot.runs, boot.fun(x = 1)) pval <- mean(res.rep > as.numeric(STATISTIC)) } names(STATISTIC) <- "F-Test" if (!boot) { PARAMETER1 <- df1 PARAMETER2 <- df2 names(PARAMETER1) <- "df1" names(PARAMETER2) <- "df2" PVAL <- 1 - pf(STATISTIC, PARAMETER1, PARAMETER2) PARAM <- c(PARAMETER1, PARAMETER2) } else { PARAMETER1 <- boot.runs names(PARAMETER1) <- "boot.runs" PVAL <- pval PARAM <- PARAMETER1 } METHOD <- paste("Granger causality H0:", paste(y1.names, collapse = " "), "do not Granger-cause", paste(y2.names, collapse = " ")) result1 <- list(statistic = STATISTIC, parameter = PARAM, p.value = PVAL, method = METHOD, data.name = paste("VAR object", obj.name)) class(result1) <- "htest" sigma.u <- crossprod(resid(x))/(obs - ncol(Z)) colnames(sigma.u) <- y.names rownames(sigma.u) <- y.names select <- sigma.u[rownames(sigma.u) %in% y2.names, colnames(sigma.u) %in% y1.names] sig.vech <- sigma.u[lower.tri(sigma.u, diag = TRUE)] index <- which(sig.vech %in% select) N <- length(index) Cmat <- matrix(0, nrow = N, ncol = length(sig.vech)) for (i in 1:N) { Cmat[i, index[i]] <- 1 } Dmat <- .duplicate(K) Dinv <- ginv(Dmat) lambda.w <- obs %*% t(sig.vech) %*% t(Cmat) %*% solve(2 * Cmat %*% Dinv %*% kronecker(sigma.u, sigma.u) %*% t(Dinv) %*% t(Cmat)) %*% Cmat %*% sig.vech STATISTIC <- lambda.w names(STATISTIC) <- "Chi-squared" PARAMETER <- N names(PARAMETER) <- "df" PVAL <- 1 - pchisq(STATISTIC, PARAMETER) METHOD <- paste("H0: No instantaneous causality between:", paste(y1.names, collapse = " "), "and", paste(y2.names, collapse = " ")) result2 <- list(statistic = STATISTIC, parameter = PARAMETER, p.value = PVAL, method = METHOD, data.name = paste("VAR object", obj.name)) class(result2) <- "htest" result2 return(list(Granger = result1, Instant = result2)) } <environment: namespace:vars> causality関数のR内部実装(読めば色々理解できるかと思います)
35.
2015/8/6 35 Granger因果の長所と短所
36.
長所:時系列データのみから仮説フリーに因果性を推論できる 元々は計量経済学上の要請 従来は複雑な経済・ファイナンス理論的な仮説に基づいてAとB との間に因果関係があるかないかを論じてきた
だが、それでは時系列データのみに着目して計量分析を行う 利点がない データドリブン&仮説フリーではやれないの? Grangerが打ち建てたのは「何の理論にも基づかない、仮説 フリーで予測を基準とする因果性」のアイデア 2015/8/6 36
37.
短所:真の意味での「因果」ではない Granger因果性は通常の因果性が存在する 必要条件であるが、十分条件ではない VARモデルに依存する以上、あくまでも「時間差」(ラグ)に着目した指標
時系列上のラグが不明確なケースでは使えない 逆に言えば、ラグの存在する時系列同士ならGranger因果性検定さえ通過して しまえば何でも因果関係があることになりかねない 例えば、「稲妻が光る雷鳴が轟く」 確かに「稲妻が光」ってから「雷鳴は轟」く だが雷鳴が轟くのは稲妻が光ることそれ自体によるものではない あくまでも高電圧放電が空気中を伝わることで空気が瞬時に高温に熱せられ、 その空気の振動により雷鳴が発生する 真に因果関係を持つのは「高電圧放電による空気の過熱雷鳴」であり、「稲 光」ではない 2015/8/6 37
38.
短所:単位根過程に対してGranger因果は使えない 単位根過程(ランダムウォークを含む非定常な時系列)を含むVARモ デルのOLS推定では、F検定が使えない(漸近的にF分布から外れる) 沖本本p.122
このためF検定に依拠するGranger因果性検定は、単位根過程を含 むVARモデルに対しては適用できない 一階階差VARモデルを用いるという解決策もあるが、その原理を鑑みるに本 質的にその感度は下がると見るべき(株価データでの実践例は実は非推奨 だったりする…) さらに時系列A、Bが共和分の関係にある場合、一階階差VARモデル 自体が定義できないため(共和分の定義による)、Granger因果性 検定はそもそも成立しない それらの場合はインパルス応答など別の手法を用いる必要がある 2015/8/6 38
39.
2015/8/6 39 ※偏Granger因果というテクニック
40.
第三者効果? 2015/8/6 40 ABなる因果関係がある際に、 ACBなる因果関係があるとすると、 ABなる因果関係は実はないのではないか?
41.
第三者効果? 2015/8/6 41 ABなる因果関係がある際に、 ACBなる因果関係があるとすると、 ABなる因果関係は実はないのではないか? 偏相関のアナロジーでキャンセルしたい
42.
煩雑なので詳しくは原典をどうぞ…(ブログにちろっと書きました) 2015/8/6 42
43.
最後に 2015/8/6 43 計量時系列分析の世界には因果推論の手法として、他にも • インパルス応答 •
分散分解 などの手法がありますが、これらはおいおい… おしまい