ARIMA
差分を取ってから ARMA を当てるモデルです。右肩上がり・右肩下がりのトレンドがあるデータに使います。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
| エラー情報 | データ |
Spark エンジンでは動きません。
入力の行はそのままでは残りません。 出力は実測値と予測値を縦に並べた別の表になります。
出力の形
出力は次の 4 列です。グループごとにモデルを作成するを使ったときは、グループの列がいちばん右に付きます。
| 列名 | 内容 |
|---|---|
カテゴリ | 実測 / 過去データ検証 / 予測 |
予測対象 | 予測した列の名前 |
| 日付列と同じ名前の列 | 日付 |
値 | 実測値または予測値 |
形も意味も AR と同じです。カテゴリ の 3 つの値の意味は AR で説明しています。
差分を取っても、出力の値は元のスケールに戻してあります。 差分のままの値は出ません。
2 つ目の エラー情報 には エラーメッセージ の列が入ります。エラーが 1 つも起きなかったときは、全てのグループで正常に終了しました という 1 行だけが入ります。
設定項目
- 予測対象列を選択必須
- 予測したい値の列。数値の列だけ選べます。複数選べます。
- 日付列を選択必須
- 時間の軸。日付・日付時間・時間の列だけ選べます。
- 自己回帰パラメータ(p)必須
- モデルの設定の下に出ます。何期前までの値を使うか。既定は
1。 - 差分の回数(d)必須
- 何回差分を取るか。既定は
1。 - 移動平均パラメータ(q)必須
- 何期前までの予測のずれを使うか。既定は
3。 - 予測期間の設定必須
- 何期先まで予測するか。既定は
3。1 期の長さは、日付列の間隔そのものです。
オプション
- グループごとにモデルを作成する
- on にするとグルーピングする列を選択が出て、店舗ごと・商品ごとに別々のモデルを作ります。
- エラーを無視する
- on にすると、失敗したグループ・失敗した予測対象列を飛ばして続けます。
入力データの前提
1 時点 1 行で、日付が連続している必要があります。前提と直し方は AR と同じです。入力の行順は問いません。 中で日付の昇順に並べ替えてから計算します。
差分の回数(d)
差分とは「前の期との差」 です。右肩上がりのデータでも、差分を取れば水平に近づきます。
| d | 使いどころ |
|---|---|
| 0 | トレンドがない(ARMA と同じ) |
| 1 | 直線的なトレンドがある(既定) |
| 2 | トレンド自体が変化している |
まず 1 で試してください。 大きくしすぎると予測がぶれます。
p・d・q の効き方
3 つは出力への効き方が違います。
| 設定項目 | 出力への効き方 |
|---|---|
p | 行数は変わりません。大きくすると「ARの係数が定常的でない」で止まりやすくなります |
d | 行数は変わりません。出力の 値 は元のスケールに戻してあるので、差分のままの値は出ません |
q | 過去データ検証 の行数が 実測の行数 − q になります。 先頭から q 行分、当てはめ値が出ません |
q を大きくすると、当てはまりを確かめられる行が減ります。 24 か月のデータなら次のようになります。
| q | 実測 | 過去データ検証 | 予測(予測期間 3) |
|---|---|---|---|
| 1 | 24 行 | 23 行 | 3 行 |
| 3(既定) | 24 行 | 21 行 | 3 行 |
| 12 | 24 行 | 12 行 | 3 行 |
| 24 | 24 行 | 0 行 | 3 行 |
決め方の手順 — ①d は 1 から始める → ②自己相関と偏自己相関を求めるで p q の候補を出す → ③その組で流す → ④出力を折れ線グラフに入れ、実測 と 過去データ検証 のずれを見る → ⑤「ARの係数が定常的でない」で止まったら d を 1 増やすか p を減らす。
エラーと対処
「エラーを無視する」を on にすると、途中で止まらずに済みます。 失敗した分は出力から抜け、理由が エラー情報 に入ります。ただしひとつも作れなかったときは「全てのグループでモデル作成に失敗しました」で止まります。
日付列に欠損値がある
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
直し方 — 日付が空の行を欠損値処理で落としてください。
予測対象列に欠損値がある
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
日付列でも予測対象列でも、画面に出る文面は同じです。 どちらの列が原因かはメッセージからは分かりません。
直し方 — 時系列に沿った欠損値処理で埋めてください。
予測対象列に数値以外がある
処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。
直し方 — 列の型変更で数値にしてください。
日付列の値が重複している
同じ日付の行が複数あるときに出ます。
{{index_label}}列の値が重複しています。集計するなどして重複をなくしてください。
直し方 — データ集計で日付をキーにまとめてください。
係数が定常的でない
指定した p d q ではモデルが安定しないときに出ます。
列:
{{X_label}}での処理は、計算されたARの係数が定常的でないため中断されました。差分系列でモデルを作成するか、別のパラメータ、別のモデルを選択してください。
直し方 — d を 1 つ増やすか、p を小さくしてください。
予測モデルの作成に失敗した
計算が収束しなかったときに出ます。値がほとんど動かない列や、行数の少ないグループで起きます。
予測モデルの作成に失敗しました。各種パラメータを変更してください。
直し方 — p q を小さくするか、その列を対象から外してください。
日付が連続していない
抜けている期間があるときに出ます。
{{index_label}}が連続ではありません。時系列データの補間をお試しください。
直し方 — 連続数値、日付の補間で抜けている日付の行を作り、時系列に沿った欠損値処理で値を埋めてください。
すべてのグループで失敗した
全てのグループでモデル作成に失敗しました。:
{{error_msg}}
直し方 — グループの分け方を粗くして、1 グループあたりの行数を増やしてください。
選んだ列が入力にない
前のノードで列名を変えたり削除したりすると出ます。
対象の列が選択されていません。
対象の列が存在しません。
直し方 — 予測対象列を選択・日付列を選択・グルーピングする列を選択を選び直してください。
よく使う例
1. 右肩上がりの売上を予測する
売上が伸び続けていて、ARMA では途中で頭打ちになるとき。
入力
| 年月 | 売上 |
|---|---|
| 2024-01-01 | 100 |
| 2024-02-01 | 115 |
| 2024-03-01 | 132 |
| …(24 か月分) | … |
設定
| 設定項目 | 値 |
|---|---|
| 予測対象列を選択 | 売上 |
| 日付列を選択 | 年月 |
| 自己回帰パラメータ(p) | 1 |
| 差分の回数(d) | 1 |
| 移動平均パラメータ(q) | 3 |
| 予測期間の設定 | 3 |
出力 — 実測 24 行・過去データ検証 21 行(24 − q)・予測 3 行の 48 行になります。予測 の 3 行が、伸びを引き継いだ値です。
2. 伸び方そのものが変わっているデータ
途中から伸びが加速していて、d が 1 では追いつかないとき。
入力 — 例 1 と同じだが、後半で伸び幅が大きくなっている
設定
| 設定項目 | 値 |
|---|---|
| 差分の回数(d) | 2 |
出力 — 加速を取り込んだ予測になります。d を上げると予測の幅が大きくぶれるので、過去データ検証 と 実測 を見比べてください。
3. ACF と PACF を見て p と q を決める
既定で当てはまりが悪いとき。
入力 — 例 1 と同じ
設定 — 先に自己相関と偏自己相関を求めるを掛け、PACF が切れる位置を p、ACF が切れる位置を q にします。
出力 — 過去データ検証 が 実測 に近づきます。
4. 店舗ごとに予測する
店舗別に先を見たいとき。
入力
| 店舗 | 年月 | 売上 |
|---|---|---|
| 渋谷 | 2024-01-01 | 100 |
| 池袋 | 2024-01-01 | 50 |
設定
| 設定項目 | 値 |
|---|---|
| グループごとにモデルを作成する | on(列に 店舗) |
| エラーを無視する | on |
出力 — 4 列に 店舗 が加わります。収束しなかった店舗は出力から抜け、理由が エラー情報 に入ります。
5. 季節の波も扱いたい
毎年同じ時期に上がる動きが残っているとき。
入力 — 例 1 と同じ
設定 — ARIMA には周期の設定がありません。SARIMA に替えて、周期成分(s) を指定します。
出力 — 季節の山谷が予測に反映されます。