単位根検定の基本:なぜ重要なのか
単位根検定は、時系列データが定常か非定常かを判断するための統計的手法である。時系列データの特性を理解するためには、そのデータが定常性を持っているかどうかを知ることが重要で、その理由は以下の通りである:
- 予測のため:多くの時系列モデル(ARモデル、MAモデル、ARIMAモデルなど)は、時系列データが定常であることを前提としている。つまり、時系列データの平均と分散が時間と共に一定であるということである。非定常な時系列データにこれらのモデルを適用すると、モデルの予測結果は信頼性を欠く可能性がある。
- 回帰分析のため:非定常な時系列データを用いた回帰分析は、誤った結果を導く可能性がある(スペリオシティ(supuriousness)の問題、見せかけの相関)。定常性を持つ時系列データを用いることで、このような問題を避けることができる。
単位根検定は、時系列データが定常性を持つかどうかを確認するための手段であり、具体的にはデータに単位根(unit root)が存在するかどうかを調べる。単位根が存在する場合、データは非定常と見なされる。
Pythonで単位根検定を行う2つの方法
Pythonで単位根検定を行うための代表的な2つの方法には、Augmented Dickey-Fuller (ADF) 検定と Kwiatkowski-Phillips-Schmidt-Shin (KPSS) 検定がある。これらの検定はPythonの”statsmodels”ライブラリに実装されている。
ADF検定、KPSS検定
- ADF検定: 帰無仮説は「データに単位根が存在する」、つまり「データは非定常である」になる。したがって、p値が0.05以下であれば帰無仮説を棄却し、「データは定常である」と結論付ける。逆に、p値が0.05より大きい場合は帰無仮説を棄却できず、「データは非定常である可能性がある」と結論付ける。
- KPSS検定: 帰無仮説は「データは定常である」になる。したがって、p値が0.05以下であれば帰無仮説を棄却し、「データは非定常である」と結論付ける。逆に、p値が0.05より大きい場合は帰無仮説を棄却できず、「データは定常である可能性がある」と結論付ける。
Pythonを用いた単位根検定の例
時系列データであればなんでもいいので、ここではドル円の始値、高値などのデータを用いてみる。これをダウンロードし、以下のように読み取る。
# import libraries
import pandas as pd
import numpy as np
from statsmodels.tsa.stattools import adfuller, kpss, phillips_perron
import matplotlib.pyplot as plt
usdjpy_d = pd.read_csv("/Users/Documents/usdjpy_d.csv")
また、いちいち始値、終値などと計算するのは面倒なので、リストを作っておく。
value_list = {"opening", "high", "low", "closing"}
ADF検定はこちら。
# ADF
for l in value_list:
result = adfuller(usdjpy_d[l])
print(l, result[1])
opening 0.947330942662184
high 0.9617977707392715
low 0.9638223345630584
closing 0.9468314096232175
したがって、いずれも帰無仮説は棄却できないので、単位根過程が存在することを示唆する。
KPSS検定はこちら。
# KPSS
kpss(usdjpy_d["opening"])[1]
kpss(usdjpy_d["high"])[1]
kpss(usdjpy_d["low"])[1]
kpss(usdjpy_d["closing"])[1]
# この値はいずれも0.01になる。
こちらの結果からも単位根過程が存在することがわかる。
グラフ化
終値をグラフにしてみる(コードは以下)。
plt.plot(usdjpy_d["date"], usdjpy_d["closing"])
データを定常なものにするためには、差分を考えると良い。
adfuller(np.diff(usdjpy_d["opening"]))
p = 1.9249255653263146e-29
時系列データの差分を取ることで、データからトレンドや季節性などのパターンを除去し、定常性を得ることが可能となる。時系列データが単位根を持つ場合、そのデータは一般的に非定常である。非定常性は平均、分散、自己相関などが時間とともに変動する特性を指す。つまり、時間とともに変動するトレンドや季節性が存在する。これに対して差分を取るとは、連続する2点間の変化量(例えば、時刻\(t\)の値から時刻\(t-1\)の値を引く)を計算することを指す。この操作を行うと、データのトレンドや季節性が除去され、平均や分散が一定になることが多い。つまり、データが定常性を持つようになる。したがって、非定常なデータに差分を取ることで、そのデータは単位根を持たなくなり、定常となる可能性が高い。その結果、単位根検定で非定常と判断されていたデータが、差分を取ることで定常と判断されることがある。ここらへんは偏自己相関について以下の記事も参考に。
関連記事
経済・ファイナンスデータの計量時系列分析
与えられたデータの分布について確認する
コメント