らくがき入門

環境と研究テーマが大幅に変わりました。だいたい何かに入門しています。

時系列データにおける定常過程と単位根過程の違いとADF検定(Pythonによる実装例あり)

前回の記事では、「時系列データの定常性を確認する」というタイトルで記事を書きました。与えられた時系列データが定常過程であれば、ARMAモデルなどの基礎的なモデルに落とし込むことができます。

今回はよく用いられる単位根検定である拡張 Dickey-Fullar(augmented Dickey-Fullar test;ADF test)を取り上げます。

使用言語はPythonです。 今回も沖本本を参照しています。

経済・ファイナンスデータの計量時系列分析 (統計ライブラリー)

経済・ファイナンスデータの計量時系列分析 (統計ライブラリー)

単位根過程とは

前回の記事で、定常過程に関しては取り上げているのでそちらを参照してください。

leisurelab.hatenablog.com

単位根過程とは、原系列 y_tが非定常過程であり、差分系列 \Delta y_t = y_t - y_{t-1}が定常過程であるとき、過程は単位根過程であるといわれる。

単位根過程は、別名がいくつかあり、差分系列が定常となるため差分定常過程と呼ばれることがあります。

さて今回Pythonのコード中の検証データとして使用しているランダムウォークに関しても記述しておきます。 なぜ今回ランダムウォークを検証データとして使用しているかと言うと、ランダムウォークが単位根過程の代表選手だからです。 ランダムウォークの定義は、

過程 y_t
 \displaystyle
y_t = \delta + y_{t-1} + \varepsilon_t
,  \varepsilon_t \sim \text{iid}(0, \sigma ^2)
と表現されるとき、 y_tランダムウォークと呼ばれる。定数項 \deltaはドリフト率と呼ばれる。

上記の定義より、繰り返し代入すると、
 \displaystyle
y_t = \delta t + \nu_t
と表現できます。ただし、 \nu_t = \varepsilon_1 + \varepsilon_2 + \cdots + \varepsilon_tという撹乱項の線形和で表現され、これは確率的トレンドと呼ばれます。 ドリフト率 \deltaは線形トレンドの傾きを表しているので、単位根過程は線形トレンドと確率的トレンドを併せ持つ過程と言えます。

定常過程と単位根過程との性質の違い

定常過程と単位根過程の違いを以下の表にまとめました。

性質 定常過程 単位根過程
トレンド もたない 線形トレンドを持つ
長期予測 過去の観測値が減衰していき過程の期待値に近づく 過去の観測値の影響が消えない
予測誤差(MSE) 予測期間が長くなるにつれて過程の分散(有限値)に近づく 長期的に線形的に増大していく
インパルス応答関数 ショックは一時的な影響力を持つ ショックは恒久的な影響力を持つ

表のトレンドに関して詳しく説明します。
定常過程(弱定常性に従う過程)は前回の記事で説明したように、期待値と自己共分散が時間によらず一定であるという仮定を置いています。 この仮定より、明らかに定常過程はトレンドを持ちません(時間によらず一定であるから)。 定常過程は平均回帰性を持ち、過程が長期的には必ず平均の方向に戻っていくことを意味します。
ただし、定常過程であっても線形トレンドを記述できるモデルとして、トレンド定常過程と言われるものが存在します。
トレンド定常過程は、文字通り定常過程にトレンド項を加えることで線形トレンドを記述できるようにしたモデルを指します。
それでは、トレンドを持つトレンド定常過程と単位根過程は線形トレンドを記述できるという点で同じなわけですが、前述したように単位根過程は確率的トレンドも持つ点で異なります。 単位根過程は不確実性を線形的に増大させていると言えます。

インパルス応答関数に関してですが、VARモデルに関して取り上げる際に書こうと思っているので一旦保留とします。 簡単に概要だけ説明すると、ある時点の影響が将来どの程度影響をもつかを定量的に表現できるツールです。

単位根検定

単位根検定として有名なADF検定について説明します。 ADF検定は真の過程をAR(p)モデルと仮定し、仮定が単位根AR(p)過程であるという帰無仮説を、過程が定常AR(p)過程であるという対立仮説に対して検定するものです。 これが厳密な定義ですが、帰無仮説「単位根がある」、対立仮説「単位根がない(=定常である)」と言ってしまってもいいと思います。

この検定を用いる場合、ある有意水準に対して帰無仮説を棄却できれば、対立仮説が支持されて与えられた時系列データが定常過程であると言って良さそうです。 ただし、帰無仮説を棄却できなかった場合は、帰無仮説を積極的に支持したことにはならないことに注意してください。これは統計学的非対称性によるのですが長くなりそうなのでまた別の機会に取り上げます。

したがって、与えられた時系列データが単位根過程であるかは、冒頭で取り上げた単位根過程の定義である過程の差分系列が定常課程であることを用います。 したがって、手順としては以下のようになります。

  1. 与えられたデータに対してADF検定→
    帰無仮説が棄却されれば、与えられたデータは定常過程
  2. 帰無仮説を棄却できなければ差分系列を求め、その系列に対してADF検定→
    帰無仮説が棄却できれば、与えられたデータは単位根過程
  3. 帰無仮説が棄却できなければ、与えられたデータは単位根過程ではない非定常過程

このようにしてデータを分類することになります。

この手順をPythonで実装した例を示します。

gist7fb5ceb03fae95dc3f0774debf880340