状態空間モデル
観測されない「本当の水準」を推定しながら予測するモデルです。ノイズの多いデータや、水準が徐々に変わるデータに向いています。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
| エラー情報 | データ |
Spark エンジンでは動きません。
入力の行はそのままでは残りません。 出力は実測値と予測値を縦に並べた別の表になります。
出力の形
説明変数を使うかどうかで、出力の列が変わります。
説明変数を使わないとき
| 列名 | 内容 |
|---|---|
カテゴリ | 実測 / 過去データ検証 / 予測 |
予測対象 | 予測した列の名前 |
| 日付列と同じ名前の列 | 日付 |
値 | 実測値または予測値 |
AR と同じ形です。グループごとにモデルを作成するを使ったときは、グループの列がいちばん右に付きます。
説明変数を使うとき
| 列名 | 内容 |
|---|---|
カテゴリ | 実測 / 過去データ検証 / 予測 |
| 日付列と同じ名前の列 | 日付 |
| 予測対象列と同じ名前の列 | 実測値または予測値 |
| 説明変数の列 | 入力の値そのまま |
予測対象 の列はできません。 予測対象を 1 列しか選べないためです。値は 値 ではなく元の列名のまま入ります。
2 つ目の エラー情報 には エラーメッセージ の列が入ります。エラーが 1 つも起きなかったときは、全てのグループで正常に終了しました という 1 行だけが入ります。
設定項目
- 説明変数を使用する
- 既定は off。on にすると、予測対象の列以外の数値列も使います。on / off で以降の項目が変わります。
- 予測対象列を選択必須
- 数値の列だけ選べます。説明変数を使用するが off のときは複数選べ、on のときは 1 列だけです。
- 説明変数を選択必須
- 説明変数を使用するが on のときだけ出ます。数値の列だけ選べます。複数選べます。
- 日付列を選択必須
- 時間の軸。日付・日付時間・時間の列だけ選べます。
- 季節変動周期の設定必須
- 何期で 1 周するか。既定は
12。2 以上が必要です。 - 予測期間の設定必須
- 何期先まで予測するか。既定は
3。説明変数を使用するが on のときは出ません。1 期の長さは、日付列の間隔そのものです。
オプション
- グループごとにモデルを作成する
- 説明変数を使用するが off のときだけ出ます。on にするとグルーピングする列を選択が出ます。
- エラーを無視する
- 説明変数を使用するが off のときだけ出ます。失敗したグループ・失敗した予測対象列を飛ばして続けます。
モデルの形は「ローカル線形トレンド+季節性」で固定です。 選べるのは周期だけで、トレンドの扱いは変えられません。
説明変数を使うときの違い
「予測期間の設定」がありません。 説明変数の未来の値が分からなければ先は読めないためです。
ただし、予測そのものはできます。 予測対象の列が空欄になっている行は 予測 として計算されます。先を予測したいときは、連続数値、日付の補間で未来の日付の行を足し、説明変数だけ埋めて予測対象列は空欄のままにしてください。prophet と同じやり方です。
グループごとのモデル作成とエラーを無視する設定は使えません。 1 本のモデルだけを作ります。
他のモデルとの使い分け
| 向いている場面 | 使うもの |
|---|---|
| 単純な自己回帰で足りる | AR |
| トレンドがある | ARIMA |
| 周期が 1 つで、季節の形を細かく当てたい | SARIMA |
| 季節が複数ある・日付が抜けている | prophet |
| 観測にノイズが多い・水準が揺れる | 状態空間モデル |
入力データの前提
1 時点 1 行で、日付が連続している必要があります。前提と直し方は AR と同じです。入力の行順は問いません。 中で日付の昇順に並べ替えてから計算します。
エラーと対処
「エラーを無視する」を on にすると、途中で止まらずに済みます。 失敗した分は出力から抜け、理由が エラー情報 に入ります。ただしひとつも作れなかったときは「全てのグループでモデル作成に失敗しました」で止まります。
季節変動周期が小さすぎる
季節変動周期の設定に 2 未満を入れたときに出ます。
季節変動周期の値は2以上を設定してください。
直し方 — 2 以上にしてください。季節性がないデータでも、形式上 2 以上が必要です。
日付列に欠損値がある
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
直し方 — 日付が空の行を欠損値処理で落としてください。
予測対象列を説明変数にも選んでいる
{{X_label}}が説明変数の列にも選択されているので実行できません。説明変数から取り除くか、予測対象の列を変更してください。
直し方 — 説明変数から予測対象の列を外してください。
日付列の値が重複している
同じ日付の行が複数あるときに出ます。
{{index_label}}列の値が重複しています。集計するなどして重複をなくしてください。
直し方 — データ集計で日付をキーにまとめてください。
予測対象列に欠損値がある
説明変数を使用するが off のときに出ます。日付列の欠損と同じ文面です。
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
直し方 — 時系列に沿った欠損値処理で埋めてください。
予測対象列に数値以外がある
説明変数を使用するが off のときに出ます。
処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。
直し方 — 列の型変更で数値にしてください。
日付が連続していない
抜けている期間があるときに出ます。
{{index_label}}が連続ではありません。時系列データの補間をお試しください。
直し方 — 連続数値、日付の補間で抜けている日付の行を作り、時系列に沿った欠損値処理で値を埋めてください。
すべてのグループで失敗した
全てのグループでモデル作成に失敗しました。:
{{error_msg}}
直し方 — グループの分け方を粗くして、1 グループあたりの行数を増やしてください。
選んだ列が入力にない
前のノードで列名を変えたり削除したりすると出ます。
対象の列が選択されていません。
対象の列が存在しません。
直し方 — 予測対象列を選択・説明変数を選択・日付列を選択・グルーピングする列を選択を選び直してください。
よく使う例
1. ノイズの多い計測値を予測する
センサーの値がばらつき、移動平均では水準の変化が追えないとき。
入力
| 計測日 | 水位 |
|---|---|
| 2024-01-01 | 1.21 |
| 2024-02-01 | 1.19 |
| …(36 か月分) | … |
設定
| 設定項目 | 値 |
|---|---|
| 予測対象列を選択 | 水位 |
| 日付列を選択 | 計測日 |
| 季節変動周期の設定 | 12 |
| 予測期間の設定 | 3 |
出力 — 実測 36 行・過去データ検証 36 行・予測 3 行の 75 行になります。ARIMA と違い、過去データ検証 は 1 期目から全期間分出ます。過去データ検証 はノイズをならした水準になり、実測 のぎざぎざとは別の線で出ます。
2. 周期を最小にして水準だけ追う
周期的な動きがなく、水準の変化だけを見たいとき。季節性そのものは外せません。
入力 — 例 1 と同じ
設定
| 設定項目 | 値 |
|---|---|
| 季節変動周期の設定 | 2 |
出力 — 2 期で 1 周する季節成分(1 行おきに符号が入れ替わる成分)が入ります。季節性を外すことはできません。 周期的な動きがないデータなら、この成分はほぼ 0 に推定されるので、実質トレンドだけのモデルとして読めます。0 や 1 は入れられません。
3. 複数の列をまとめて予測する
水位と水温を同じ設定で予測したいとき。
入力
| 計測日 | 水位 | 水温 |
|---|---|---|
| 2024-01-01 | 1.21 | 8.4 |
| 2024-02-01 | 1.19 | 9.1 |
設定
| 設定項目 | 値 |
|---|---|
| 予測対象列を選択 | 水位、水温 |
| 季節変動周期の設定 | 12 |
出力 — 予測対象 が 水位 の行と 水温 の行が縦に並びます。
4. 要因を含めて当てはめる
売上が広告費に左右されるので、その関係も含めて説明したいとき。
入力
| 年月 | 売上 | 広告費 |
|---|---|---|
| 2024-01-01 | 100 | 20 |
| 2024-02-01 | 130 | 35 |
設定
| 設定項目 | 値 |
|---|---|
| 説明変数を使用する | on |
| 予測対象列を選択 | 売上 |
| 説明変数を選択 | 広告費 |
| 日付列を選択 | 年月 |
| 季節変動周期の設定 | 12 |
出力 — カテゴリ / 年月 / 売上 / 広告費 の 4 列になります。予測期間の設定は出ません。
行数は入力の 2 倍です。売上 に値のある行が 実測 としてそのまま出たうえで、同じ行が 過去データ検証(当てはめ値)としてもう一度出ます。先を予測したいときは、未来の日付の行を足して 広告費 だけ埋め、売上 は空欄のままにします(その行が 予測 になります)。
5. 広告費の計画から売上を見込む
例 4 の続きで、来月の広告費が決まっているとき。
入力 — 例 4 の表の下に、未来の行を足します。
| 年月 | 売上 | 広告費 |
|---|---|---|
| 2024-01-01 | 100 | 20 |
| 2024-03-01 | (空欄) | 50 |
設定 — 例 4 と同じ
出力 — 3 月の行が カテゴリ = 予測 になり、売上 に見込み値が入ります。