Time-series-arima
時系列-ARIMA
定常時系列では、時刻「t」の変数は以前の観測値または残留誤差の線形関数であることをすでに理解しています。 したがって、2つを組み合わせて、自己回帰移動平均(ARMA)モデルを作成するときが来ました。
ただし、時系列は定常的ではない場合があります。つまり、平均などの系列の統計的性質は、時間とともに変化します。 そして、これまで研究してきた統計モデルは、時系列が定常であると仮定しているため、時系列を差異化して定常にする前処理ステップを含めることができます。 今、私たちが扱っている時系列が静止しているかどうかを知ることが重要です。
時系列の定常性を見つけるさまざまな方法は、時系列のプロットで季節性または傾向を探し、さまざまな期間の平均と分散の差を確認し、Augmented Dickey-Fuller(ADF)テスト、KPSSテスト、Hurstの指数などを調べます。
データセットの「温度」変数が定常時系列であるかどうか、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値は、時系列が非定常であることも示唆しています。
または、p値が0.05以下、または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