【Python】KPSS検定で単位根の有無を調べる
以下の書籍を読んでて、単位根の有無を調べるのにKPSS検定を行うと書かれている箇所があります(pp.67)。 このPythonコードが欲しかったのでメモしておきます。 ちなみにKPSS検定の帰無仮説は単位根なし、対立仮説は単位根ありとなります。
時系列分析と状態空間モデルの基礎: RとStanで学ぶ理論と実装
- 作者: 馬場真哉
- 出版社/メーカー: プレアデス出版
- 発売日: 2018/02/14
- メディア: 単行本
- この商品を含むブログ (3件) を見る
# ホワイトノイズに対してKPSS検定を行います。帰無仮説は棄却されません import numpy as np import statsmodels.api as sm def create_white_noise(n): return np.random.rand(n) - 0.5 if __name__ == '__main__': data = create_white_noise(1000) stats, p_value, lags, crit = sm.tsa.kpss(data) # 0.1が出力される print(p_value)
# ランダムウォークに対してKPSS検定を行います。帰無仮説は棄却されます import numpy as np import statsmodels.api as sm def create_random_walk(n): w = np.random.rand(n) w = np.where(w > 0.5, 1, -1) w = w.cumsum() return w if __name__ == '__main__': data = create_random_walk(1000) stats, p_value, lags, crit = sm.tsa.kpss(data) # 大体0.01が出力されます print(p_value)
# ランダムウォークの1階差分に対してKPSS検定を行います。帰無仮説は棄却されません import numpy as np import statsmodels.api as sm import pandas as pd def create_random_walk(n): w = np.random.rand(n) w = np.where(w > 0.5, 1, -1) w = w.cumsum() return w if __name__ == '__main__': data = create_random_walk(1000) data = pd.Series(data) data = data.diff().dropna() stats, p_value, lags, crit = sm.tsa.kpss(data) # 0.1が出力されます print(p_value)