時系列-ARIMA

定常時系列の場合、時間 't'の変数は、以前の観測値または残余誤差の線形関数であることはすでに理解しています。したがって、2つを組み合わせて、自己回帰移動平均(ARMA)モデルを作成するときが来ました。

ただし、時系列が定常ではない場合、つまり平均のような系列の統計的特性では、分散は時間とともに変化します。また、これまでに調査した統計モデルでは、時系列が静止していると想定しているため、時系列を差分して静止させる前処理ステップを含めることができます。ここで、処理している時系列が定常であるかどうかを確認することが重要です。

時系列の定常性を見つけるさまざまな方法は、時系列のプロットで季節性または傾向を探し、さまざまな期間の平均と分散の差をチェックし、拡張ディッキー-フラー(ADF)検定、KPSS検定、ハーストの指数などです。 。

ADFテストを使用して、データセットの「温度」変数が定常時系列であるかどうかを確認しましょう。

[74]で:

from statsmodels.tsa.stattools import adfuller

result = adfuller(train)
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
print('Critical Values:')
for key, value In result[4].items()
   print('\t%s: %.3f' % (key, value))

ADF統計:-10.406056

p値:0.000000

重要な値:

1%:-3.431

5%:-2.862

10%:-2.567

ADFテストを実行したので、結果を解釈してみましょう。最初に、ADF統計を臨界値と比較します。臨界値が低いほど、系列が非定常である可能性が高いことを示します。次に、p値を確認します。0.05より大きいp値は、時系列が非定常であることも示しています。

あるいは、0.05以下のp値、または臨界値未満のADF統計は、時系列が定常であることを示します。

したがって、私たちが扱っている時系列はすでに静止しています。定常時系列の場合、「d」パラメーターを0に設定します。

ハースト指数を使用して時系列の定常性を確認することもできます。

[75]で:

import hurst

H, c,data = hurst.compute_Hc(train)
print("H = {:.4f}, c = {:.4f}".format(H,c))

H = 0.1660、c = 5.0740

H <0.5の値は反永続的な動作を示し、H> 0.5は永続的な動作またはトレンド系列を示します。H = 0.5は、ランダムウォーク/ブラウン運動を示します。H <0.5の値。これは、シリーズが定常であることを確認します。

非定常時系列の場合、「d」パラメーターを1に設定します。また、自己回帰トレンドパラメーター「p」と移動平均トレンドパラメーター「q」の値は、定常時系列で、つまりプロットによって計算されます。時系列を区別した後のACPとPACP。

3つのパラメーター(p、d、q)で特徴付けられるARIMAモデルが明確になったので、時系列をモデル化して、温度の将来の値を予測しましょう。

[156]で:

from statsmodels.tsa.arima_model import ARIMA

model = ARIMA(train.values, order=(5, 0, 2))
model_fit = model.fit(disp=False)

[157]で:

predictions = model_fit.predict(len(test))
test_ = pandas.DataFrame(test)
test_['predictions'] = predictions[0:1871]

[158]で:

plt.plot(df['T'])
plt.plot(test_.predictions)
plt.show()

[167]で:

error = sqrt(metrics.mean_squared_error(test.values,predictions[0:1871]))
print ('Test RMSE for ARIMA: ', error)

ARIMAのRMSEのテスト:43.21252940234892