読者です 読者をやめる 読者になる 読者になる

GRGと金融工学・統計解析

趣味で金融工学や統計解析を勉強しており,このブログでは自分が面白いと思ったことの紹介などをしていきます.色々な方との議論などできたらいいなぁと思います.

S&P500と日経225の時系列分析(分散分解)

前回 –> S&P500と日経225の時系列分析(グレンジャー因果性・インパルス応答関数) - GRGと金融工学・統計解析

はじめに

前回は,グレンジャー因果性やインパルス応答関数について触れました.今回は,分散分解について見ていきます.分散分解は,他に予測誤差分散分解とも呼ばれます.昔から使われている手法ではあると思うのですが,案外分散分解について説明しているサイトが少ないため,多少でもこのサイトが助けになればと思います.

分散分解について

分散分解とは,予測の平均自乗誤差(MSE)に各変数固有の撹乱項がどの程度寄与しているのかを見ることで,どの変数がその予測の変動を説明するために重要なのか調べる手法のことです.また,分散分解するときには前回説明を行った再帰的構造が仮定されているのでモデルの構築の際には,変数の順番に気をつけましょう.

では,具体的に見ていきます.分散分解では,相対的分散寄与率(relative variance contribution: RVC)と呼ばれる指標を用いて予測を行う際の変数の重要性を見ていきます.RVCは以下のように表すことができます.

{ \displaystyle
RVC(i,j) = \frac{y_i のk時点先のMSEにおいてy_j が寄与する部分}{y_i のk時点先のMSE}
}

\( RVC(i,j) \)はkの関数として求めることができ,短期的に重要な変数が何か,長期的に重要な変数は何かというような分析をすることができます.この定義だけ見ても分かりにくいので,例を用いてイメージをつかみましょう.この例は,(著)沖本竜義:経済・ファイナンスデータの計量時系列分析のP95に載っているものを引用しています.

{ \displaystyle
y_1 (t) = -1 + 0.6 y_1 (t-1) + 0.3 y_2 (t-1) + u_1 (t) \dots (1)
} { \displaystyle
y_2 (t) = 1 + 0.1 y_1 (t-1) + 0.8 y_2 (t-1) + 0.3 u_1 (t) + u_2 (t) \dots (2)
}

ここで\( u_1 , u_2 \)は無相関で,それぞれ分散が4,0.64であるホワイトノイズとします.現時点がt-1時点だとして,1期間先であるt時点の予測をするとしましょう.その時の予測誤差は,\( y_1 \)の場合\( u_1 (t) \)であり,\( y_2 \)の場合\( 0.3 u_1 (t) + u_2 (t) \)であることが(1),(2)式からわかります.そのため,それぞれのMSEは以下のようになります.


\displaystyle MSE( y_1 (t) ) =  E(u_{1}^{2} (t)) = 4 \dots (3)


\displaystyle MSE( y_2 (t) ) = E( (0.3u_1 (t) + u_2 (t))^{2} ) = 0.09E(u_1^{2} (t)) + E(u_2^{2} (t))  = 0.36 + 0.64 = 1 \dots (4)

では,まず\( RVC(1,1) \)について見ていきましょう.\( RVC(1,1) \)は\( y_1 \)のMSEに\( y_1 \)固有の撹乱項である\( u_1 \)の寄与度を表しています.(3)式を見ると,MSEの計算には\( u_1 \)しか使っていないので,\( RVC(1,1) \)は1となります.また,\( RVC(1,2) \)は\( y_1 \)のMSEに\( y_2 \)固有の撹乱項である\( u_2 \)の寄与度を表していますが,(3)式には\( u_2 \)は含まれていないため,\( RVC(1,2) \)は0となります.

では次に,\( RVC(2,1) \)を見ていきます.\( RVC(2,1) \)は\( y_2 \)のMSEに\( y_1 \)固有の撹乱項である\( u_1 \)の寄与度を表しています.(4)式を見ると,\( u_1 \)が存在しており,0.36という数値分MSEに寄与していることがわかります.全体のMSEが1なので,\( RVC(2,1) \)は0.36となります.最後に\( RVC(2,2) \)については,\( y_2 \)のMSEに\( y_2 \)固有の撹乱項である\( u_2 \)の寄与度を表していますので,(4)式から0.64となります.

上記の例では,\( y_1 \)の一期先の予測の変動には,\( y_2 \)固有の情報は全く意味がないという結果となっています.また,\( y_2 \)の予測の変動には\( y_1 \)の情報は半分とは行かないまでも,少なくない影響を与えていることがわかります.例では1期間先しか見ませんでしたが,同じように2期間先やそれ以上先の期間についても同様に調べることができます.

なぜ分散(MSE)を用いるのか

なんとなく分散分解のイメージはつかめたと思いますが,なぜMSEについてみるのかについてもう少し踏み込んでみましょう.MSEは現時点の情報を使っても予測できない将来の変動について表しています(つまり,分散です.).その予測できない部分の要因が\( y_1 \)固有のものなのか,それとも\( y_2 \)固有のものなのかを知ることは確かに重要であることは想像できます.しかし,それがなぜ分散を分解することで調べることができるのでしょうか?直感的な説明として,情報量という方向から見ていきたいと思います.将来の予測できない部分が正規分布に従っているとしましょう.この仮定は基本的であり,ぶっ飛んだものではないことは理解していただけると思います.今着目しているのは,その予測できない部分の情報がどのように表せるのかということです.その情報量をエントロピーで表せるとしてみたらどうでしょう.正規分布p(x)のエントロピーは以下のように表せます.


\displaystyle - \int^{\infty}_{-\infty} p(x) \ln p(x) dx = \frac{1}{2} + \frac{1}{2} \ln (2\pi \sigma^{2}) \dots (5)

(5)式を見ると,予測できない部分が持つ情報量の大きさは正規分布の分散のみに依存していることがわかります.つまり,予測できない部分の情報の要因を分解するときには分散に着目すると上手くいきそうですね.たとえ,予測できない部分が正規分布ではなく,他の分布に従っていたとしても,大きく分布が異なっていなければ近似として分散を見ることは悪いことではないと考えられます.ちなみに,このエントロピーを用いた説明は,私個人が自分を納得させるために考えているものであり,間違っている可能性があることは言及しておきます.(もしかしたら,どこかの教科書にもっと良い説明があるかもしれませんし,同じような説明がある可能性もあります)

分散分解の結果

では,前回の続きとして,分散分解を自前のデータに適用してみましょう.varsパッケージのfevd関数を用いてみました.

#分散分解
decomposition <- fevd(VAR_parameter,n.ahead = 15)
plot(decomposition)

f:id:GRG:20170311144137j:plain

結果から,日経225のlog-returnがS&P500のlog-returnの予測に役に立たないことが見て取れます.これは前回の結果とも整合的です.逆に,S&P500のlog-returnが日経225のlog-returnには少なからず影響があることが見て取れます(だいたい20%くらいでしょうか).

最後に

次回は,GARCHモデル周りに触れていこうかと思います.他にも,自分が興味があるけど紹介しているサイトが少ないというような事柄が色々あるので,このサイトで紹介できたらなぁと思います.


参考文献

沖本竜義:経済・ファイナンスデータの計量時系列分析