医療職からデータサイエンティストへスマートフォン用の表示で見る医療職からデータサイエンティストへ統計学、機械学習に関する記事をまとめています。R一変量時系列の代表格であるARIMAモデルは、過去の自分が現在へ影響していることを前提としていました。時系列データではその他の変数から影響を受けることは往々にしてあります。あるお店の売り上げは、そのお店の過去の売り上げだけでなく、周辺のライバル店の売り上げ、景気の影響、気温、店長さんの気分など様々な要因が影響すると考えらます。そんな多数の変数同士の関連も含めて考えることができるのが、多変量時系列モデルの良いところです。ライバル店の売り上げは、自分のお店の売り上げにはどれぐらい影響があるのか、など変数間の動的な変動を見ることで因果関係も推定できてしまいます。今回は、そんな多変量時系列解析の中でも、VARモデル、グレンジャー因果性、インパルス応答関数についてまとめていきます。前回までの内容はこちらです。多変量時系列モデルの代表的なものにARモデルを拡張したベクトル自己回帰モデル:VARモデルがあります。ベクトルかというと、ARモデルの係数や系列をベクトルや行列で表すことができ、多変量に拡張できるからです。見るまずは簡単な一次、二変量のVARモデルを考えてみましょう。VARモデルでは、お互いに影響し合うことを前提としているので、こんな感じになります。これをライバル店同士であるY店、X店の売り上げモデルだと仮定しましょう。これが意味するところは、Y店の売り上げは、過去一期前のY店の売り上げだけでなく、X店の売り上げも関係していることを表しています。この二店舗データを仮想的に2021年から2030年まで1ヶ月ごとに売り上げが記録されているものとしてというVARモデルで表されるデータを作成し、グラフにしたものがこちらです。VARモデルは一見すると無相関に見えます。model)と呼び、VARモデルはSURモデルの一種であると言えます。補足:VARモデルをちょっと詳しくVARモデルには変数同士の同時点の係数が含まれいてません。そのため、VARモデルの係数推定は、各個別の方程式に対してOLS(最小二乗法)や最尤法で係数を推定できることが知られています。この簡便さのためにVARモデルは一般的に広まったそうです。model)は、係数の推定が複雑であり、様々な前提条件が必要になるためあまり用いられていません。VARモデルの他にもVMAやVARMAも存在していますが、モデルの推定が困難であり、VARモデルでもかなり複雑な関係を表すことができるため、VARモデルが主に利用されているのです。グレンジャー因果性VARモデルを使う大きな理由の一つに、変数間に因果関係があるかどうかを調べることできるということあります。先ほどの二店舗の売り上げデータが全く情報なく与えられたとして、この二店舗間の売り上げに因果関係があるかどうかを調べたい時に、グレンジャー因果性を使って、調べることができます。グレンジャー因果性とは、簡単に言ってしまうと、Y店舗の売り上げに対して、Y店舗の値のみを使ったモデルと、X店舗の値を加えたモデルとで後者の方がデータに対して当てはまりがよければ、XからYに対してグレンジャー因果性があるとなります。Y店舗のみのAR(1)モデルとX店舗を加えたVAR(1)モデルを重ねてみましょう。みた感じでもVARモデルの方が変動を上手く捉えて、当てはまりが良さそうですね!実際に、グレンジャー因果性の検定なるものを行うとグレンジャー因果性ありとなります。注意すべきはグレンジャー因果性と本物の因果性とは区別する必要があります。グレンジャー因果性はデータの関係性のみから推定されるため、本当に因果関係があるかどうかはわからないのです。そのために因果性ではなく、グレンジャー因果性とわざわざ名前がついているのですね。補足:グレンジャーの因果性をどう検定するか具体的には、それぞれのモデルを作成して、残差平方和から求めた統計量を使って、f分布で検定します。Y店舗とX店舗の値を使ってVARモデルを作ります。こんなモデルでしたね。このモデルをOLSで推定し、その残差平方和をSSR1とします。続いて、VARモデルと同じ次数のARモデル(今回はAR(1)モデル)を作成し、その残差をSSR0とします。これらの残差を使って、という統計量を使って、帰無仮説をグレンジャー因果性なしとしてf検定を行います。(rはVARモデルにおけるxの項数、nは変数の数、pは次数を表す)つまり、SSR1がSSR0に比べて十分に小さくなるときに統計量は大きくなるので、棄却されやすくなります。因果関係がわかれば、それがどれぐらいの大きさの影響を与え合っているのか知りたくなりますよね。そんなときに使うのがインパルス応答関数です。インパルス応答関数は、ある変数の変動が他の変数に与える影響がどれぐらい続くかということを調べることができます。以下をみてみましょう。これは、店舗Xの売り上げがある一時点でプラスになったときにY店舗、X店舗の売り上げにどれぐらい影響するかを表しています。ここからX店舗の売り上げがある一時点でプラスになるとY店舗の売り上げには、6ヶ月ぐらい続くマイナスの影響を与えていることが分かります。X店舗自身へのプラスの影響も6ヶ月ほど続いています。次にY店舗からX店舗に与える影響をみてみましょう。先ほどとは違い、X店舗へ少しだけマイナス影響はありますが、すぐに影響力が無くなっています。自店舗へのプラスの影響もすぐに無くなってしまっています。ここからX店舗は強豪店舗で、Y店舗はX店舗から大きな影響を与えられていることが分かります。補足:インパルス応答関数はどうやって求めるのか?インパルス応答関数は、直感的には分かりやすいのですがその求め方は複雑です。数学的な意味としては、ある変数の誤差項(撹乱項)を1単位または1標準偏差だけ増加させた場合に、その他の変数がどれぐらい変動するかという意味になります。インパルス応答関数には、誤差項同士の無相関を仮定した非直交化インパルス応答関数と、誤差項同士もお互いに相関することを仮定した直交化インパルス応答関数があります。通常は直交化インパルス応答関数を使いますが、その際にはコレスキー分解を用いて、誤差項を相関する部分と無相関な部分に分割し、偏微分を使ってその変動を求めるという方法を使います。詳しい計算方法は下記の参考書(沖本本)をご参照ください。Rでの実践ここからは本日の内容をRで実践していきます。今回はこんなVARモデルになるようにデータを作成しました。使っても作成できます。S)VARモデルの推定VARモデルを扱うためには{vars}パッケージを入れましょう。流れとしては、VARselect{vars}を使い、AICを含む様々な情報量基準に従って次数を選択する。推定された次数からVAR{vars}を使ってVARモデルを作成する。