web-dev-qa-db-ja.com

statespace.SARIMAXモデル:モデルがすべてのデータを使用してモードをトレーニングし、トレーニングモデルの範囲を予測する理由

私はチュートリアルに従ってSARIMAXモデルを研究しました: https://www.digitalocean.com/community/tutorials/a-guide-to-time-series-forecasting-with-arima-in-python- 。データの日付範囲は1958-2001です。

mod = sm.tsa.statespace.SARIMAX(y,
                                order=(1, 1, 1),
                                seasonal_order=(1, 1, 1, 12),
                                enforce_stationarity=False,
                                enforce_invertibility=False)

results = mod.fit()

aRIMA時系列モデルをフィッティングしているときに、著者がすべての日付範囲データをモデルのパラメーターにフィッティングすることがわかりました。しかし、予測を検証する際、著者は1998-01-01から始まる日付を、モデルのデータの日付範囲の一部として使用しました。

pred = results.get_prediction(start=pd.to_datetime('1998-01-01'), dynamic=False)

機械学習モデルでは、トレーニングデータと検証(テスト)データが異なります。つまり、範囲が異なります。著者が正しいということですか?なぜこのようにするのですか(すべてのトレーニングデータを使用する理由を意味します)、私はSARIMAXモデルの新しいモデルです。

このモデルについて詳しく教えてください。たとえば、月だけでなく日や週を予測する方法、つまり、order =(1,1,1)、seasonal_order =(1、1、1、12 )。ありがとう!

9
tktktk0711

著者は正しいです。回帰を行う場合(線形、高次、またはロジスティック-重要ではありません)-トレーニングデータからの逸脱があってもまったく問題ありません(たとえば、トレーニングデータであってもロジスティック回帰によって誤検出が生じる場合があります)。

同じは時系列を表します。この方法で著者はモデルが正しく構築されていることを示したかったと思います。

seasonal_order=(1, 1, 1, 12)

Tsa stats documentation を見ると、四半期データで操作したい場合、最後のパラメータ(s)を割り当てる必要があることがわかります。値は4です。月次-12。週次データで操作したい場合、seasonal_orderは次のようになります。

seasonal_order=(1, 1, 1, 52)

毎日のデータは

seasonal_order=(1, 1, 1, 365)

次数成分は、非季節性パラメーターp、d、qをそれぞれ担当するパラメーターです。データの動作に応じてそれらを見つける必要があります

  • p。あなたはそれをどちらかと解釈することができます enter image description hereenter image description here 。または言い換えると、日次データがあり、pが6の場合、火曜日のデータが日曜日のデータに影響を与えるかどうかを理解できます。
  • d。差分パラメータ。プロセスの統合レベルを定義します。これは、時系列を定常にするために時系列を適用する回数 差分演算子 を意味します
  • q。現在の値に影響する以前のノイズ(エラー)の数としてそれを解釈できます

これが良い answer 非季節成分の値を見つける方法です

9
papadoble151