ディッキー・フラー検定(DF検定)

ディッキー・フラー検定(DF検定)とは?

ディッキー・フラー検定(DF検定)は、時系列データがどのような統計的性質を持っているかを調べるためのツールです。この検定の目的は、時系列データが時間とともにその特性が変化するか(非定常)、それとも基本的に一定の状態を保つか(定常)を見分けることです。

この記事では、ディッキー・フラー検定を発展させた拡張ディッキー・フラー検定(ADF検定)を実際に行ってみたいと思います。

 ライブラリのインポート

import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import adfuller

 データセットの生成

np.random.seed(0)
n_samples = 100
x = np.random.normal(0, 1, n_samples).cumsum()

numpyを使ってランダムウォークのデータを生成しています。

正規分布からランダムに生成された値を累積しているため、生成されるデータはランダムウォークの形をしています。ランダムウォークは一般的に非定常な時系列とされます。

 ADF検定

result = adfuller(x)

print("ADF Statistic:", result[0])
print("p-value:", result[1])
print("Critical Values:")
for key, value in result[4].items():
    print(f'\t{key}: {value}')

それではADF検定を行なってみます。ADF検定にはstatsmodelsライブラリのadfullerを利用します。

またadfullerの返却値として、ADF統計量 (ADF Statistic)、p値、臨界値 (Critical Values)を表示しています。

結果は下記の通りとなりました。

ADF Statistic: -1.1320384625097901
p-value: 0.7021277385898382
Critical Values:
  1%: -3.498198082189098
  5%: -2.891208211860468
  10%: -2.5825959973472097

  • ADF統計量 (ADF Statistic)

ADF統計量は、時系列データが単位根を持つ(非定常である)かどうかをテストするために使用されます。この値がより小さい(負の値が大きい)ほど、データが定常である可能性が高いことを示します。

  • 臨界値 (Critical Values)

臨界値は、ADF検定で用いられる特定の信頼水準(通常は1%、5%、10%)に基づいています。これらの値は、ADF統計量がこれらの臨界値以下であれば、帰無仮説を棄却するためのしきい値として機能します。

今回の結果を見てみると、ADF統計量がどの信頼水準の臨界値も下回っておらず、p値が非常に高いため、データは非定常であると言えそうです。