コンテンツにスキップ

SARIMA

ARIMA に季節性を加えたモデルです。毎年・毎週など決まった周期で繰り返す動きがあるデータに使います。

入出力

ポート内容
入力データデータ
出力データデータ
エラー情報データ

Spark エンジンでは動きません。

入力の行はそのままでは残りません。 出力は実測値と予測値を縦に並べた別の表になります。

出力の形

出力は次の 4 列です。グループごとにモデルを作成するを使ったときは、グループの列がいちばん右に付きます。

列名内容
カテゴリ実測 / 過去データ検証 / 予測
予測対象予測した列の名前
日付列と同じ名前の列日付
値実測値または予測値

形も意味も AR と同じです。カテゴリ の 3 つの値の意味は AR で説明しています。

ARIMA と違い、過去データ検証 は 1 期目から出ます。 当てはめ値を期間全体で 実測 と比べられます。

2 つ目の エラー情報 には エラーメッセージ の列が入ります。エラーが 1 つも起きなかったときは、全てのグループで正常に終了しました という 1 行だけが入ります。

設定項目

予測対象列を選択必須
予測したい値の列。数値の列だけ選べます。複数選べます。
日付列を選択必須
時間の軸。日付・日付時間・時間の列だけ選べます。
自己回帰パラメータ(p)必須
モデルの設定の下に出ます。何期前までの値を使うか。既定は 1。
差分の回数(d)必須
何回差分を取るか。既定は 1。
移動平均パラメータ(q)必須
何期前までの予測のずれを使うか。既定は 3。
周期成分(s)必須
何期で 1 周するか。既定は 7。
予測期間の設定必須
何期先まで予測するか。既定は 3。1 期の長さは、日付列の間隔そのものです。

オプション

グループごとにモデルを作成する
on にするとグルーピングする列を選択が出て、店舗ごと・商品ごとに別々のモデルを作ります。
エラーを無視する
on にすると、失敗したグループ・失敗した予測対象列を飛ばして続けます。

設定できるのは s だけで、季節の側の p・d・q は 1, 1, 1 に決め打ちです。 p d q は季節を除いた部分にだけ効きます。

入力データの前提

1 時点 1 行で、日付が連続している必要があります。前提と直し方は AR と同じです。入力の行順は問いません。 中で日付の昇順に並べ替えてから計算します。

周期成分(s)の決め方

データの 1 周期が何行分かを入れます。

データs
日次で週の波7
月次で年の波12
四半期で年の波4
時間別で日の波24

周期は 1 つしか指定できません。 週の波と年の波が両方あるときは prophet を使ってください。

エラーと対処

「エラーを無視する」を on にすると、途中で止まらずに済みます。 失敗した分は出力から抜け、理由が エラー情報 に入ります。ただしひとつも作れなかったときは「全てのグループでモデル作成に失敗しました」で止まります。

日付列に欠損値がある

処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。

直し方 — 日付が空の行を欠損値処理で落としてください。

予測対象列に欠損値がある

処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。

日付列でも予測対象列でも、画面に出る文面は同じです。 どちらの列が原因かはメッセージからは分かりません。

直し方 — 時系列に沿った欠損値処理で埋めてください。

予測対象列に数値以外がある

処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。

直し方 — 列の型変更で数値にしてください。

日付列の値が重複している

同じ日付の行が複数あるときに出ます。

{{index_label}}列の値が重複しています。集計するなどして重複をなくしてください。

直し方 — データ集計で日付をキーにまとめてください。

日付が連続していない

抜けている期間があるときに出ます。

{{index_label}}が連続ではありません。時系列データの補間をお試しください。

直し方 — 連続数値、日付の補間で抜けている日付の行を作り、時系列に沿った欠損値処理で値を埋めてください。

すべてのグループで失敗した

周期に対してデータが短いときによく出ます。

全てのグループでモデル作成に失敗しました。: {{error_msg}}

直し方 — s を小さくするか、データの期間を増やしてください。グループごとに作っているなら、分け方を粗くして 1 グループあたりの行数を増やします。

選んだ列が入力にない

前のノードで列名を変えたり削除したりすると出ます。

対象の列が選択されていません。

対象の列が存在しません。

直し方 — 予測対象列を選択・日付列を選択・グルーピングする列を選択を選び直してください。

よく使う例

1. 曜日の波がある日次データ

土日に売上が上がる動きを予測に反映したいとき。

入力

日付売上
2024-04-01100
2024-04-0295
…(180 日分)…

設定

設定項目値
予測対象列を選択売上
日付列を選択日付
周期成分(s)7
予測期間の設定14

出力 — 予測 の 14 行に、曜日の山谷が出ます。

2. 月次で年の波を扱う

12 月に売上が跳ねる動きを織り込みたいとき。

入力

年月売上
2022-01-01100
2022-02-0190
…(36 か月分)…

設定

設定項目値
周期成分(s)12
予測期間の設定3

出力 — 年の山谷を含んだ 3 か月分の予測が出ます。実測 36 行・過去データ検証 36 行・予測 3 行の 75 行です(ARIMA と違い、過去データ検証 は 1 期目から出ます)。

データは 2 年分以上用意してください。1 年分でもエラーにはなりませんが、季節の形を 1 回しか見ていないので予測は当てになりません。

3. 店舗ごとに予測する

店舗別に季節性を含めて見たいとき。

入力

店舗年月売上
渋谷2022-01-01100
池袋2022-01-0150

設定

設定項目値
周期成分(s)12
グループごとにモデルを作成するon(列に 店舗)
エラーを無視するon

出力 — 4 列に 店舗 が加わります。計算が収束しなかった店舗は出力から抜け、理由が エラー情報 に入ります。

4. 季節を抜いた動きだけを見たい

予測ではなく、「季節のせいでどれだけ上下しているか」を知りたいとき。

入力 — 例 2 と同じ

設定 — SARIMA ではなくトレンド成分・周期成分・残差へデータを分解するを使い、周期に 12 を指定します。

出力 — トレンド・周期・残差の 3 列が増え、季節の寄与をそのまま読み取れます。

関連