Time-series-variations-of-arima

提供:Dev Guides
移動先:案内検索

時系列-ARIMAのバリエーション

前の章では、ARIMAモデルの仕組みと、季節データや多変量時系列を処理できないという制限があるため、これらの機能を含む新しいモデルが導入されました。

これらの新しいモデルの一部をここに示します-

ベクトル自動回帰(VAR)

これは、多変量定常時系列の自動回帰モデルの一般化バージョンです。 「p」パラメータが特徴です。

ベクトル移動平均(VMA)

これは、多変量定常時系列の移動平均モデルの一般化バージョンです。 「q」パラメータが特徴です。

ベクトル自動回帰移動平均(VARMA)

VARとVMAの組み合わせであり、多変量定常時系列用のARMAモデルの一般化バージョンです。 「p」および「q」パラメータによって特徴付けられます。 同様に、ARMAは「q」パラメーターを0に設定することでARモデルのように機能し、「p」パラメーターを0に設定することでMAモデルのように機能します。また、VARMAは「q」パラメーターを設定することでVARモデルのように機能することもできます「p」パラメーターを0に設定して、0およびVMAモデルとして。

[209]で:

df_multi = df[[T', 'C6H6(GT)']]
split = len(df) - int(0.2*len(df))
train_multi, test_multi = df_multi[0:split], df_multi[split:]

[211]で:

from statsmodels.tsa.statespace.varmax import VARMAX

model = VARMAX(train_multi, order = (2,1))
model_fit = model.fit()
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\tsa\statespace\varmax.py:152:
   EstimationWarning: Estimation of VARMA(p,q) models is not generically robust,
   due especially to identification issues.
   EstimationWarning)
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\tsa\base\tsa_model.py:171:
   ValueWarning: No frequency information was provided, so inferred frequency H will be used.
  % freq, ValueWarning)
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\base\model.py:508:
   ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
  "Check mle_retvals", ConvergenceWarning)

[213]で:

predictions_multi = model_fit.forecast( steps=len(test_multi))
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\tsa\base\tsa_model.py:320:
   FutureWarning: Creating a DatetimeIndex by passing range endpoints is deprecated.  Use `pandas.date_range` instead.
   freq = base_index.freq)
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\tsa\statespace\varmax.py:152:
   EstimationWarning: Estimation of VARMA(p,q) models is not generically robust, due especially to identification issues.
   EstimationWarning)

[231]で:

plt.plot(train_multi['T'])
plt.plot(test_multi['T'])
plt.plot(predictions_multi.iloc[:,0:1], '--')
plt.show()

plt.plot(train_multi['C6H6(GT)'])
plt.plot(test_multi['C6H6(GT)'])
plt.plot(predictions_multi.iloc[:,1:2], '--')
plt.show()

コードスニペット14

コードスニペット14

上記のコードは、VARMAモデルを使用して多変量時系列をモデル化する方法を示していますが、このモデルはデータに最適ではない場合があります。

外生変数を持つVARMA(VARMAX)

これはVARMAモデルの拡張であり、共変量と呼ばれる追加の変数を使用して、関心のある主変数をモデル化します。

季節性自己回帰統合移動平均(SARIMA)

これは、季節データを処理するためのARIMAモデルの拡張です。 データを季節成分と非季節成分に分割し、同様の方法でモデル化します。 ARIMAモデルと同じ非季節部分(p、d、q)パラメーターと、季節部分(P、D、Q、m)パラメーターの7つ​​のパラメーターが特徴です。 P、D、Qは、ARIMAモデルのパラメーターに似ています。 これらのパラメーターは、グリッド検索または遺伝的アルゴリズムを使用して調整できます。

外生変数を使用したSARIMA(SARIMAX)

これは、興味のある変数をモデル化するのに役立つ外因性変数を含むSARIMAモデルの拡張です。

変数を外生変数として配置する前に、相関関係分析を行うと役立つ場合があります。

[251]で:

from scipy.stats.stats import pearsonr
x = train_multi['T'].values
y = train_multi['C6H6(GT)'].values

corr , p = pearsonr(x,y)
print ('Corelation Coefficient =', corr,'\nP-Value =',p)
Corelation Coefficient = 0.9701173437269858
P-Value = 0.0

ピアソンの相関関係は2つの変数間の線形関係を示しています。結果を解釈するために、まずp値を調べます。0.05未満の場合は係数の値が重要で、そうでない場合は係数の値は重要ではありません。 有意なp値の場合、相関係数の正の値は正の相関を示し、負の値は負の相関を示します。

したがって、データでは、「温度」と「C6H6」は非常に正の相関があるようです。 したがって、私たちは

[297]:

from statsmodels.tsa.statespace.sarimax import SARIMAX

model = SARIMAX(x, exog = y, order = (2, 0, 2), seasonal_order = (2, 0, 1, 1), enforce_stationarity=False, enforce_invertibility = False)
model_fit = model.fit(disp = False)
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\base\model.py:508:
   ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
   "Check mle_retvals", ConvergenceWarning)

[298]で:

y_ = test_multi['C6H6(GT)'].values
predicted = model_fit.predict(exog=y_)
test_multi_ = pandas.DataFrame(test)
test_multi_['predictions'] = predicted[0:1871]

[299]で:

plt.plot(train_multi['T'])
plt.plot(test_multi_['T'])
plt.plot(test_multi_.predictions, '--')

アウト[299]:

[<matplotlib.lines.Line2D at 0x1eab0191c18>]

ここでの予測は、単変量ARIMAモデリングとは対照的に、より大きなバリエーションをとるようです。

言うまでもなく、SARIMAXは、対応するパラメーターのみをゼロ以外の値に設定することにより、ARX、MAX、ARMAXまたはARIMAXモデルとして使用できます。

フラクショナル自己回帰統合移動平均(FARIMA)

時折、シリーズが静止していないことがありますが、値「1」をとる「d」パラメータとの差はそれを過大差する可能性があります。 そのため、小数値を使用して時系列を区別する必要があります。

データサイエンスの世界では、優れたモデルはありません。データで機能するモデルは、データセットに大きく依存します。 さまざまなモデルの知識があれば、データを処理するモデルを選択し、そのモデルで実験して最良の結果を得ることができます。 また、結果はプロットおよびエラーメトリックとして表示される必要があります。小さなエラーも悪い場合があるため、結果をプロットして視覚化することが不可欠です。

次の章では、別の統計モデルである指数平滑法について説明します。