1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SPSS Modelerで始める店舗別需要予測 ── 時系列モデル

1
Last updated at Posted at 2026-09-03

POSデータとカレンダー情報(祝日・販促・長期休暇フラグ)を組み合わせ、店舗ごとの日次出荷数を3日先まで予測するストリームを構築します。データ読み込みからグラフ可視化まで一気通貫で完成させます。

  • 稼働確認環境

    • Modeler 19.0
    • Windows 11
  • データ

ファイル 内容
01pos.csv POSトランザクションデータ
02calendar.csv カレンダー・フラグデータ

  • 完成ストリーム

この記事でわかること

  • レコード集計ノードでPOSトランザクションを「日付 × 店舗 × 出荷数」形式に変換する方法
  • カレンダーデータをキー結合し、祝日・販促フラグを外部変数として付与する方法
  • データ型ノードで「分割(Split)」を設定し、店舗ごとのモデルを一括生成する方法
  • 時系列ノードにイベント変数を登録し、将来フラグ値を指定して3日先を予測する方法
  • 折れ線グラフ(マルチプロット)で実績と予測を重ねて可視化する方法

ストリーム全体像

最終的に構築するストリームのノード構成は以下のとおりです。

image.png


ハンズオン手順

Step 0 ストリームの初期設定

「ツール」メニューの「ストリームのプロパティ」の「オプション」を選びます。
image.png

今回データをUTF-8という文字コードで準備しています。
エンコードを「UTF-8」に設定し、データプレビューに表示する最大行数を「2000」に設定し、「OK」で閉じます。

image.png

Step 1 POSデータの読み込み(可変ファイルノード)

01pos.csvをキャンバスにドラッグ&ドロップします。
右クリックでプレビューすることができます。
image.png

01pos.csv のフィールド構成

フィールド名 説明
CUSTID 顧客識別子
SDATE 購買日(日付型)
店舗 店舗名(店舗1 / 店舗2)
商品 商品名
数量 購買数量
価格 販売価格

image.png


Step 2 レコード集計:日次 × 店舗単位に集約(レコード集計ノード)

POSデータには「1取引 = 1レコード」の形式でデータが入っています。需要予測では 「いつ・どの店舗で何個売れたか」 という日次 × 店舗単位のデータが必要なため、レコード集計ノードで変換します。

「レコード設定」 パレットから 「レコード集計」 ノードをドラッグし、01pos.csvのノードと接続してダブルクリックで設定を開きます。

設定項目 値
キーフィールド SDATE、店舗 の2フィールドを追加
集計フィールド 数量 を追加
集計方法 合計(Sum)のみにチェック(平均のチェックを外す)
レコード数を含める チェックを外す

image.png

実行後の出力フィールドは SDATE、店舗、数量_Sum の3フィールドになります。

image.png


Step 3 カレンダーデータの読み込みと結合(可変ファイル② + レコード結合ノード)

祝日・販促・長期休暇・イベントフラグをモデルのイベント変数として使うため、カレンダーデータを別の可変ファイルノードで読み込み、POSの集計データと結合します。

カレンダーデータの読み込み

Step 1と同様に02calendar.csv をキャンバスに追加します。

02calendar.csv のフィールド構成

フィールド名 説明
SDATE 日付(POSデータと同じ形式)
祝日フラグ 1(祝日)/ 0(平日)
販促フラグ 1(販促実施)/ 0(なし)
長期休暇フラグ 1(長期休暇中)/ 0(通常)
イベントフラグ 1(イベント有)/ 0(なし)

image.png

レコード結合の設定

「レコード設定」 パレットから 「レコード結合」 ノードをドラッグします。POSの集計ノードとカレンダーノードの両方を接続してください。

設定項目 値
結合方法 キー
結合キーフィールド SDATE

image.png

結合後は SDATE、店舗、数量_Sum に加え、4つのフラグフィールドが揃った状態になります。

image.png


Step 4 データ型の設定:役割と尺度を定義(データ型ノード)

「フィールド設定」 パレットから 「データ型」 ノードをドラッグし、Step 3のノードと接続します。「値の読み込み」 をクリックしてすべてのフィールドを認識させてから、下表のとおりに設定します。

フィールド 測定尺度 役割 設定の意図
SDATE 連続 入力 時系列の日付基準
店舗 フラグ 分割 店舗ごとに個別モデルを自動生成
数量_Sum 連続 入力 予測したい値
祝日フラグ フラグ 入力 イベント変数として時系列ノードに登録
販促フラグ フラグ 入力 同上
長期休暇フラグ フラグ 入力 同上
イベントフラグ フラグ 入力 同上

image.png

重要:「分割」の役割について
店舗 フィールドの役割を 「分割」 に設定することがこのストリームのキーポイントです。この設定により、時系列ノードが「店舗1」「店舗2」それぞれに対して独立したモデルを自動的に構築します。値として 店舗1 と 店舗2 が認識されていることを「値の読み込み」後に確認してください。


Step 5 時系列モデルの構築(時系列ノード)

「モデル作成」 パレットから 「時系列」 ノードをドラッグし、Step 4のデータ型ノードと接続します。ダブルクリックして設定ダイアログを開きます。

「フィールド」タブ

設定項目 値
フィールドの割り当て 「ユーザー設定フィールドの割り当てを使用」を選択
対象 数量_Sum
イベントおよび干渉 祝日フラグ、販促フラグ、長期休暇フラグ、イベントフラグ を追加

image.png

「データの指定」タブ

設定項目 値
日付/時刻フィールド SDATE
時間区分 日

image.png

「モデルのオプション」タブ

設定項目 値
レコードの将来への拡張 チェックをつける(3日先まで予測)
値をデータに追加するフィールドの選択 チェックをつける
フィールド 祝日フラグ 〜 イベントフラグ を選択
image.png

将来の3日分(2026年1月1日〜3日)のフラグ値を下表のとおり入力します。

フィールド 1月1日(元日) 1月2日 1月3日
祝日フラグ 1(元日) 0 0
販促フラグ 0 0 0
長期休暇フラグ 1 1 1
イベントフラグ 0 0 0

祝日フラグの入力手順は以下。
image.png

image.png

同様に他のフラグも設定します。
image.png

設定完了後、ノードを 実行 します。

image.png

完了するとキャンバス上に モデルナゲット(ゴールドのダイヤモンドアイコン)が自動生成されます。

確認ポイント
モデルナゲットをダブルクリックで開くと、「店舗1の予測モデル」と「店舗2の予測モデル」が個別に生成されていることが確認できます。Step 4で「分割」に設定した店舗フィールドがここで機能しています。

image.png


Step 6 予測の実行と全データ確認(テーブルノード)

Step 4のデータ型ノードからモデルナゲット(applyts)へ接続し、さらに 「出力」 カテゴリの 「テーブル」 ノードをモデルナゲットに接続して実行します。

出力の見方
テーブルの末尾行まで確認すると、2026年1月1日〜3日のレコードに $TF-数量_Sum(フューチャーフラグ)が 1(True) になった行が表示されます。これが未来の予測データです。この行では実績値(数量_Sum)はNULLで、予測値($TS-数量_Sum)のみが入っています。

image.png


Step 7 12月以降に絞り込む(条件抽出ノード)

全期間をグラフ表示すると確認しづらいため、直近の12月1日以降に絞り込みます。
"2025-12-01"のセルを選択し、「生成」メニューの「条件抽出ノード("AND")」を選びます。

image.png

「条件抽出」 ノードが (生成) という名前で自動生成されるので、モデルナゲットとテーブルノードの間に入れます。
image.png

「レコード設定」 カテゴリから 「条件抽出」 ノードをドラッグし、モデルナゲットと接続します。そして条件式を=から>=に修正して、12月1日以降に絞り込みます。

設定項目 値
条件式 SDATE >= "2025-12-01"

image.png


Step 8 折れ線グラフで予測結果を可視化(線グラフノード)

「グラフ」 パレットから 「線グラフ」 ノードをドラッグし、Step 7の条件抽出ノードと接続してダブルクリックで設定を開きます。

設定項目 値
Xフィールド SDATE
Yフィールド 数量_Sum(実績)と $TS-数量_Sum(予測)を両方追加
パネルフィールド 店舗

「パネルで店舗を選んで実行」 すると、店舗ごとにパネルが分かれた折れ線グラフが表示されます。

image.png

グラフの見方
青い折れ線が実績、赤い折れ線が予測です。グラフ右端の3点(1月1日〜3日)は実績がなく、予測値のみが表示されます。土日に売上が増減する周期的なパターンをモデルが捉えていれば、実績線と予測線がよく重なって見えるはずです。

image.png


まとめ

今回のハンズオンでは、以下のノードを繋いで需要予測ストリームを構築しました。

  1. 可変ファイルでPOSデータとカレンダーデータをそれぞれ読み込む
  2. レコード集計でPOSを日次 × 店舗単位に変換(数量_Sum)
  3. レコード結合でカレンダーの祝日・販促フラグを付与
  4. データ型で「店舗=分割」「フラグ=フラグ尺度」を設定
  5. 時系列でイベント変数・日次間隔・3日先予測・将来フラグ値を設定してモデル生成
  6. テーブルで全予測データ(フューチャーフラグ行)を確認
  7. 条件抽出で12月1日以降に絞り込む
  8. 折れ線グラフで実績と予測を重ねて可視化

次のステップ

予測粒度の細分化
商品もキーにして集計を行い、データ型ノードの「分割」フィールドに 商品 も追加することで、商品 × 店舗単位のより細かい需要予測モデルを一括生成することもできます。
image.png

image.png
image.png

image.png

なお、本来はすべての商品 × 店舗のモデルができますが、ここでは欠損値が多いため、一部の組合せのみ作成されました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?