Dickey-Fuller 検定
注目する時系列データに自己回帰モデルを適用するとき、それが単位根を持つかどうかを調べる検定。
理論
時系列 $r_t$ に対し、一次の自己回帰モデル $\mathrm{AR}(1)$ を適用する。
\[r_t = \phi_0 + \phi_1 r_{t-1} + \varepsilon_t \tag{1}\]両辺から $r_{t-1}$ を引いて $\Delta r_t = r_t - r_{t-1}$ と置くと、
\[\Delta r_t = \phi_0 + (\phi_1-1) r_{t-1} + \varepsilon_t \tag{2}\]- 帰無仮説 $H_0$:時系列 $r_t$ が単位根を持つ($\phi_1 = 1$)
- 
    対立仮説 $H_1$:時系列 $r_t$ が単位根を持たず($ \phi_1 < 1$)、弱定常である 
(ToDo:検定統計量と分布について記載 → 分かりやすい分布による検定はできない??)
ADF 検定
Dickey-Fuller 検定の拡張。
実験
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller
def generate(phi0, phi1, sigma, n):
	es = np.random.normal(size=n-1)
	r = [0.0 if phi1==1.0 else phi0/(1.0-phi1)]  # 定常な AR(1) モデルの期待値を初期値に設定
	for e in es:
		r.append(phi0 + phi1*r[-1] + e)
	return r
def my_dftest(r):
	dftest = adfuller(r)
	print('ADF Statistic   : %f' % dftest[0])
	print('p-value         : %f' % dftest[1])
	print('Critical values :')
	for k, v in dftest[4].items():
		print('\t', k, v)
def func(phi0, phi1, sigma, n):
	r = generate(phi0=phi0, phi1=phi1, sigma=sigma, n=n)
	my_dftest(r)
	plt.plot(range(n), r)
	plt.title(r'$\phi_0={}, \phi_1={}, \sigma={}$'.format(phi0, phi1, sigma))
	plt.show()
func(phi0=1, phi1=0.7, sigma=0.5, n=300)
"""
ADF Statistic   : -6.710218
p-value         : 0.000000
Critical values :
	 1% -3.4524113009049935
	 5% -2.8712554127251764
	 10% -2.571946570731871
"""
func(phi0=1, phi1=0.9, sigma=0.5, n=300)
"""
ADF Statistic   : -3.672402
p-value         : 0.004519
Critical values :
	 1% -3.4524113009049935
	 5% -2.8712554127251764
	 10% -2.571946570731871
"""
func(phi0=1, phi1=0.99, sigma=0.5, n=300)
"""
ADF Statistic   : -1.095170
p-value         : 0.716994
Critical values :
	 1% -3.4524113009049935
	 5% -2.8712554127251764
	 10% -2.571946570731871
"""
func(phi0=1, phi1=1.0, sigma=0.5, n=300)
"""
ADF Statistic   : -0.079003
p-value         : 0.951490
Critical values :
	 1% -3.4525611751768914
	 5% -2.87132117782556
	 10% -2.5719816428028888
"""
|  $p = 0.000000$ |  $p = 0.004519$ | 
|---|---|
|  $p = 0.716994$ |  $p = 0.951490$ | 
 Technical Note - Dickey-Fuller 検定
Technical Note - Dickey-Fuller 検定