Upgrade to Pro — share decks privately, control downloads, hide ads and more …

需要予測における打ち切り問題 ── 令和の米騒動から学ぶ

需要予測における打ち切り問題 ── 令和の米騒動から学ぶ

POSデータでは、在庫切れやキャパシティの上限により、「売れた数」と「本当に欲しかった数」が一致しない場合があります。本資料では、令和の米騒動を題材に、需要予測における censoring(打ち切り)問題の基本的な構造を整理します。

全5回シリーズの概要として、POSデータの限界、OLSが生む構造的バイアス、Tobitモデルの考え方、EM Unconstraining、NumPyroによるベイズ推論、新商品・廃盤商品への応用上の論点までを概観します。

特に、打ち切られた観測を単に除外するのではなく、「閾値以上である」という部分情報として扱うことが、需要予測モデルを正しく設計するうえで重要であることを説明します。

2026年5月13日 | 崔 一航

Avatar for SALT2

SALT2

May 12, 2026

More Decks by SALT2

Other Decks in Technology

Transcript

  1. 2 2 © 2026 Boost Consulting, Inc. 00 シリーズ概要 需要予測における打ち切り問題、全5回シリーズの全体構成

    回 テーマ 数式 コード 想定読者 第1回 導入編:令和の米騒動と打ち切り問題 なし なし 業務担当・PM・学生 第2回 理論編・前編:なぜ普通の予測モデルは系統的に間違えるのか 軽め 合成データ実験 データ分析に触れ始めた方 第3回 理論編・後編:Tobitモデルの数理と最尤推定 本格的 最小限 統計モデルを学ぶ方 第4回 実装編・既存商品:EM Unconstraining と NumPyro ベイズ 推論 中程度 本格実装 データサイエンティスト 第5回 実装編+発展編:新商品・廃盤商品・シリーズ総括 中程度 本格実装 実務に応用したい方
  2. 3 3 © 2026 Boost Consulting, Inc. 00 シリーズ概要 本連載が繰り返し強調する3つの最重要メッセージ

    MSG 1 POSデータの限界 棚が空になった日も「販売 = キャパシティ」と して記録される。 予測モデルは「需要が打ち切られた」事実を 識別できないまま学習してしまう。 MSG 2 OLSの構造的バイアス OLSは打ち切りを無視しても、打ち切り日を 除外しても、 どちらでもバイアスが残る。除外したサンプルは truncated になるためである。 MSG 3 Tobitの設計思想 打ち切られた観測も「捨てる」のではなく「c 以上のどこか」という 部分情報として尤度関数に組み込む。これ が OLS と Tobit を隔てる発想の核心。
  3. 4 4 © 2026 Boost Consulting, Inc. 01 問題提起 売れた数

    ≠ 欲しかった数 ── 米騒動期に POS データが捉えられなかった真実 POS が捉えるもの(観測される量) ▪ 実際に販売された数量(取引が成立した分) ▪ 平常時は「真の需要」とほぼ一致する ▪ 在庫・キャパシティの上限まで素直に記録される ▪ 曜日・気温・チラシ等の説明変数とも紐付く POS が捉えないもの(失われる量) ▪ 在庫がなくて買えなかった人の需要 ▪ 別店舗・ネット・代替商品に流れた需要 ▪ 「並んでも買えない」と諦めた潜在客 ▪ 米騒動期は売上 << 真の需要、等号が破綻する
  4. 5 5 © 2026 Boost Consulting, Inc. 01 問題提起 観測値が閾値に張り付き、本当の値はそれ以上

    ── 共通構造を3例で掴む Case 1 体重計の上限 閾値︓150 kg(測定上限) 180 kg の人が乗ると「150.0 kg」または Err 表示 分かること︓体重は 150 kg 以上 分からないこと︓150 か 170 か 200 か Case 2 100点満点のテスト 閾値︓100点(テストの天井) 実力 120 点でも 150 点でも結果は「100 点満点」 分かること︓実力は 100点相当以上 分からないこと︓丁度 100 か 120 か 150 か Case 3 米騒動の棚 閾値:その日の入荷量 50 袋 朝の行列で完売、夕方まで棚は空のまま 分かること:需要は 50 袋以上 分からないこと:50 か 100 か 200 か
  5. 6 6 © 2026 Boost Consulting, Inc. 01 問題提起 打ち切り

    → 過小予測 → 欠品 → さらなる打ち切り STEP 1 打ち切られた観測値が記録される 真の需要 200 袋 / 在庫 45 袋 → 売上「45 袋」として POS に残る ▼ STEP 2 モデルは打ち切りを認識できない 「需要は 45 袋程度か」と学習 → 翌日 50 袋発注(少しだけ増やす) ▼ STEP 3 翌日も即完売、再び打ち切り 売上「50 袋」と記録 → 「45~50 袋が新平均」とモデルがさらに確信 ▼ STEP 4 過小予測のループから抜け出せない 需要 200 袋を「認識」する手がかりがなく、是正の機会が永久に来ない
  6. 7 7 © 2026 Boost Consulting, Inc. 02 理論編・前編 似て非なる3つの概念

    ── 本シリーズは Censoring を中心に扱う 概念 定義 米騒動での対応例 本シリーズの扱い Censoring (打ち切り) 閾値超の値は閾値で置換されるが、観測自体は 残る。説明変数(曜日・気温等)はすべて分かる 。 棚が空の日に「販売 50 袋・日付あり・気温あり」と 記録される ★ 中心テーマ Truncation (切り捨て) 閾値超の値は完全にデータから消える。説明変数 すら残らない。 POS システム停止で、その日のログ自体が存在しな い 関連概念として整理 Sample selection (サンプル選択) 観測されるか否かが、別の変数 z に依存する。打 ち切りの一般化。 「1 家族 1 袋」のような店舗ルールで需要観測が歪 む 第3回で言及( Heckman)
  7. 8 8 © 2026 Boost Consulting, Inc. 02 理論編・前編 合成データで可視化する打ち切りの実態

    ── オレンジ部分が「失われた需要」 ▪ 1. 平常期(0–149 日 / 240–364 日)︓売上線(青)と真の需要線(黒)はほぼ一致 ▪ 2. 米騒動期(150–239 日)︓売上線がキャパシティ線(赤破線)に張り付く ── 真の需要は上にあるが POS には現れない ▪ 3. オレンジの塗りつぶし部分こそが「データから失われた需要」── この大きさが打ち切り問題の深刻度の目安
  8. 9 9 © 2026 Boost Consulting, Inc. 02 理論編・前編 OLSは打ち切り無視でも除外でも、真値より系統的に小さく推定される

    パラメータ オラクル (真の需要に OLS) 方針 A 打ち切り無視・全データ OLS 方針 B 打ち切り日除外 OLS Tobit (参考) 切片 99.08 88.90 98.70 99.14 トレンド係数 0.0605 0.0461 (-24%) 0.0605 0.0604 sin 係数(季節性振幅) 20.26 15.59 (-23%) 20.53 20.32 cos 係数 1.39 1.14 0.98 1.37 方針 B でも、打ち切り日を除外した時点でサンプルが truncated になり、E[u|x] = 0 が成立しないためバイアスが残る。
  9. 10 10 © 2026 Boost Consulting, Inc. 02 理論編・前編 予測精度は特にイベント期で

    Tobit が圧倒的に優位 全期間(365 日)の RMSE OLS 16.29 Tobit 9.41 Tobit は OLS の約 58% の誤差。 平常期も含む全体でも明確な改善。 米騒動期(150–239 日)の RMSE OLS 17.44 Tobit 10.06 OLS は Tobit の約 1.7 倍に膨らむ。 イベント期こそ打ち切り補正の真価が出る。 実務的含意︓在庫決定が本当に効いてくるのは、まさに異常期・イベント期。
  10. 11 11 © 2026 Boost Consulting, Inc. 02 理論編・前編 打ち切られた観測を「捨てる」のではなく「c

    以上の部分情報」として尤度に活用 OLS の発想 観測した事実 「y = 50 と観測された」 モデルが下す推論 とにかく 50 を予測したい 結果 打ち切り情報を尤度に持たないため、50 を「真の需要そのもの」として扱 う。系統的な下方バイアスが生じる。 Tobit の発想 観測した事実 「y = 50 かつ打ち切り値である」 モデルが下す推論 真の y* は 50 以上のどこか 結果 「以上のどこか」を尤度の第 2 項(上側生存確率 1 − Φ)として組み 込む。打ち切り観測も部分情報として活かす。
  11. 12 12 © 2026 Boost Consulting, Inc. 03 理論編・後編 観測

    y の背後にある「在庫無限なら買えたはずの量」を潜在変数として扱う Tobitモデルの2段構造 [1] 潜在変数の生成式(理論モデル) y* = X′β + u, u ∼ N(0, σ²) [2] 観測ルール(データ生成過程) y = y* (y* < c のとき) y = c (y* ≥ c のとき、上限で打ち切り) Tobit は観測 y に直接回帰モデルを当てはめるのではなく、その背後の y* に当てはめる。これが OLS(y = Xβ + u)と数学的構造が根本から異なる理由。 各変数の役割 y*(潜在変数) 理論上の真の需要。観測不能。マイナスも許 容する連続値。 y(観測変数) POS に記録される値。実務データに残ってい る。 推定の目標 観測 y から、背後の y* を生成するパラメー タ β と σ を推定。
  12. 13 13 © 2026 Boost Consulting, Inc. 03 理論編・後編 打ち切りなしは正規密度、打ち切りありは上側生存確率

    ── 2種の項の和 第1項︓打ち切りなしの観測 y_i < c (素直に観測できた日) log [ (1/σ) · φ((y − Xβ)/σ) ] 正規分布の対数密度関数 φ OLS の対数尤度と完全に同じ項。打ち切られていない観測は通常の正 規線形回帰として扱われる。 第2項︓打ち切られた観測(Tobit固有) y_i = c (閾値に張り付いた日) log [ 1 − Φ((c − Xβ)/σ) ] 上側生存確率 1 − Φ(標準正規分布の累積分布関数) 「真の y* は c 以上のどこか」という部分情報を尤度に組み込む。OLS との決定的な違い。 Olsen (1978) の再パラメータ化(θ = 1/σ, γ = β/σ)のもとで、Tobit の対数尤度は大域的に凹。 L-BFGS-B 等の汎用最適化でも、初期値に関わらず同じ大域最適解に到達する。
  13. 14 14 © 2026 Boost Consulting, Inc. 03 理論編・後編 「潜在需要」と「実際に買えた人の消費量」は構造的に違う

    ── Mills 比が橋渡し 期待値タイプ 数式 米騒動での解釈 潜在変数の期待値 E[ y* | x ] = x′β 全国民の本当の米需要(在庫制約なしの状態 ) 観測値の条件付き期待値 E[ y | y < c, x ] = x′β − σ · λ((c − x′β)/σ) 実際に棚で米を買えた客の消費量 Inverse Mills Ratio λ(z) = φ(z) / Φ(z) 「切断(truncated)された正規分布の平均が、元の正規分布の平均からどれだけずれるか」を表す補正項。打ち切りが多い日ほど補正が大きく、ほぼ起きな い日では 0 に近づく。Heckman 2 段階法の核心でもあり、「販売数量平均を需要の代表値とみなす」誤認を補正する装置。
  14. 15 15 © 2026 Boost Consulting, Inc. 03 理論編・後編 選択構造が結果構造と異なる場合、Tobit

    では不十分 ── Heckman 2 段階法へ Heckman モデルの 2 式構造 選択方程式(observed か否か を決める) z*_i = w′_i · α + e_i 結果方程式(y の値そのもの) y*_i = x′_i · β + u_i 観測ルール y_i = y*_i (z*_i > 0 のとき)/ 観測されない(z*_i ≤ 0 のとき) (u, e) は二変量正規分布で相関 ρ を持つ。ρ ≠ 0 のとき「選択された」事実自体が y の推定に 系統的影響を及ぼし、補正が必要になる。 Tobit との関係 Tobit ⊂ Heckman Tobit は、選択方程式と結果方程式が同一 の誤差項を共有し(u = e)、同じ変数で 説明される(w = x、α ∝ β)特殊ケース。 米騒動の例 「1 家族 1 袋」の店舗ルールは、需要 y* と は別の z(店ルール)で観測が打ち切られる ── これは Tobit ではなく Heckman の典 型例。
  15. 16 16 © 2026 Boost Consulting, Inc. 04 実装編・既存商品 既存商品

    = 大部分正常 + 一部期間のみ打ち切り ── 復元可能な構造 既存商品の典型的な需要構造 ▪ コシヒカリ・あきたこまち・ひとめぼれのような定番銘柄米は、数年~数十年の販売履歴を 持つ。 ▪ 多くの日でキャパシティは十分に大きく、需要 < キャパシティで素直に観測される。 ▪ 打ち切りは特定の期間(例︓2024 年 8 ~ 10 月の米騒動期)に集中して発生す る。 この構造のおかげで [1] 正常期データはトレンド・季節性のパラメータ推定に使える [2] 打ち切り期データも上側からの情報として尤度に組み込める [3] 両者を組み合わせれば、打ち切り期の真の需要を復元できる 既存商品の2手法 EM Unconstraining Salch (1997) 由来の点推定アルゴリズム。 計算が高速で実務で広く使われる。 NumPyro ベイズ推論 事後分布から信用区間を得られる。トレンド・ 季節性・自己回帰を同時にモデル化可能。
  16. 17 17 © 2026 Boost Consulting, Inc. 04 実装編・既存商品 打ち切り日を「現在のパラメータ下での条件付き期待値」で置換

    → 反復 E-step ─ Expectation 計算式 imputed = μ + σ · λ((c − μ)/σ) 解説 打ち切られた観測を、現在の (μ, σ) 推定値の下での条件付き期待値 で置換する。この置換値は「打ち切りがなかったとしたら、おそらくこのくらい だった」というモデルの最良推測。 M-step ─ Maximization 計算式 (μ, σ) = argmax log L( imputed ) 解説 置換したデータで最尤推定(線形回帰版なら通常の最小二乗)を行 い、パラメータを更新。E-step と M-step を交互に繰り返し、典型的に 13 反復程度で収束する。 起源は航空券収益管理(Salch 1997 / Talluri & van Ryzin 2004)。 tensor-house・pricing-revenue-analytics-course-codes 等にオープンソース実装あり。
  17. 18 18 © 2026 Boost Consulting, Inc. 04 実装編・既存商品 Tobit

    対数尤度をそのまま確率プログラムへ ── 信用区間が自然に得られる モデル構造 ▪ トレンド項︓線形 ▪ 季節性︓Fourier モード(sin / cos) ▪ 自己回帰︓AR(1) ▪ 観測尤度︓打ち切り正規分布 実装の鍵となる 2 行 [1] numpyro.handlers.mask(mask=~is_censored) で打ち切られていない観測のみ obs= に登録 [2] numpyro.factor("censored", log_surv.sum()) で対数生存関数 log(1 − Φ) を尤度に加算 → 第3回で導いた Tobit 対数尤度をそのまま確率プログラムとして書き下したもの。 ベイズの恩恵 信用区間が付く 打ち切り期の真の需要に「150〜250 のどこ か」という不確実性を明示できる。 意思決定に直結 在庫発注は期待値より「95% 信用区間の 上端」が有用。点推定では届かない領域。 拡張性 気温・プロモ等の外生変数を X 行列に列追 加するだけで組み込める。
  18. 19 19 © 2026 Boost Consulting, Inc. 04 実装編・既存商品 EM

    とベイズの点推定はほぼ同等 ── 決定的な違いは信用区間の有無 手法 トレンド推定値 (真値=0.0605) RMSE (全期間) RMSE (騒動期のみ) 信用区間 計算時間 OLS (打ち切り無視) 0.0461 16.29 17.44 ✗ 不正確 数秒 EM Unconstraining (回帰版) 0.0605 9.41 10.06 ✗ 別途 BS 必要 数秒〜数分 NumPyro ベイズ (事後平均) ≈ 0.0605 ≈ 9.4 ≈ 10.1 ✓ 区間推定あり 数分〜数十分 実務戦略︓プロトタイピングと初期診断は EM、本番運用と意思決定はベイズという二段階移行が現実的。
  19. 20 20 © 2026 Boost Consulting, Inc. 04 実装編・既存商品 まず

    EM で素早く診断、運用が軌道に乗ったらベイズへ移行 ── 二段階戦略が効果的 状況 推奨手法 理由 データ量少(数百行程度) EM Unconstraining 少データでも安定収束、計算コスト極小 データ量多・階層構造あり ベイズ(NumPyro / PyMC) 階層モデルが自然に書け、商品横断のプール推定が可能 不確実性評価が必要 ベイズ一択 信用区間・予測区間が事後分布から自然に出る 本番運用・毎日バッチ実行 EM(高速・安定) MCMC のサンプリング待ちがないため SLA を守りやすい 外生変数を柔軟に扱いたい ベイズ 事前分布や階層構造で複雑な外生変数を取り込みやすい プロトタイピング・初期診断 EM(即結果) 数秒〜数分で結果が出るためイテレーションが速い
  20. 21 21 © 2026 Boost Consulting, Inc. 05 実装編・新商品+発展 履歴なし

    + 発売直後から打ち切り ── 類似商品転移と打ち切り補正を同時に 新商品の二重困難 [1] コールドスタート問題(過去データ皆無) [2] 発売直後の在庫制約による打ち切り集中 解決アプローチ︓2 段階法 STEP 1 類似商品の打ち切り補正 既存類似商品の販売履歴に EM Unconstraining(または NumPyro ベイズ)を適用し、 真の需要時系列を復元。 STEP 2 類似度ベース転移 新商品の属性ベクトル(価格・パッケージ・産地・ブランド)から k 近傍を選び、復元済み需要を 逆距離加重で平均。 STEP 3 発売後の逐次ベイズ更新 LogNormal(0, 0.5) 事前のスケール因子を、観測された数日のデータで補正。実観測の打ち 切りも尤度に組み込む。重要︓類似商品データは EM 補正後を使う。素データを渡すと打ち切り バイアスが新商品に継承される。 深層学習統合 PyTorch Tobit 損失 log_pdf と log_surv を torch.where で 切替えて組み合わせるだけで、任意の回帰モ デルの損失関数になる。 出力ヘッド構成 (mean, log_sigma) の 2 ヘッド構成にす ることで、Temporal Fusion Transformer 等に組み込み可能。 代表研究 Shi+ (2016) / Huang & Liu (2017) / DDPFF (2025) / Springer IJDSA Fashion (2025)
  21. 22 22 © 2026 Boost Consulting, Inc. 05 実装編・新商品+発展 価格

    × 在庫 × 心理が絡み合う ── 現時点で統一解は存在しない DIFFICULTY 1 価格変動との絡み合い クリアランス値下げが需要関数を変える 観測売上 = 「値下げによる需要増加」+「 打ち切りによる上限」。通常の Tobit では 両者を分離するための情報がない。価格を 説明変数に入れても、価格は在庫量や残 販売日数と相関するため多重共線性。 DIFFICULTY 2 在庫の内生性 在庫減少と打ち切り発生確率が共通因子 で連動 値下げすれば在庫は早く減り、それだけ打ち 切りも増える。つまり打ち切り発生確率と需 要の大きさが、共通の価格変数を通じて相 互依存。外生性を前提とする Tobit はここ で破綻する。 DIFFICULTY 3 駆け込み需要(消費者心理) 廃盤アナウンスが非定常な心理需要を生 む ファン層の「最後のうちに買っておこう」心理は 、過去の時系列パターンから予測不能。短 期間に集中するため、結果として打ち切りも 誘発する。非定常性 + 内生性 + 価格効 果が同時に発生。 現実解︓lifelines の時変 Cox 回帰 + 因果推論ライブラリ(DoWhy / EconML) + NumPyro 構造モデルを編み合わせる。決定版はまだ存在しない。
  22. 23 23 © 2026 Boost Consulting, Inc. 総括 商品ライフサイクルで難易度が変わる ──

    既存=成熟、新商品=発展中、廃盤=未解決 商品タイプ 主な課題 推奨手法 成熟度 対応回 既存商品 一部期間の打ち切り(販売履歴は十分 ) EM Unconstraining / NumPyro ベイズ打ち切 り尤度 • 成熟 第 4 回 新商品 コールドスタート + 発売直後からの打ち 切り 類似商品転移 + 2 段階法 / Tobit 損失付き深 層学習 • 発展中 第 5 回前半 廃盤商品 価格・在庫・心理の絡み合い(内生性 + 非定常) 生存分析(lifelines)+ 因果推論(試行錯誤 段階) • 未解決 第 5 回中盤 POSデータの背後には常に「打ち切られた真実」が潜む可能性がある ── これを認識し続けることが、需要予測モデルを正しく扱う第一歩。
  23. 24 24 © 2026 Boost Consulting, Inc. 総括 在庫×POS突合 →

    既存EM → ベイズ移行 → 経営層説明 → 継続モニタリング 01 現状診断 在庫データ(時刻付きスナップショットがあれば尚良し)と POS データを突合し、欠品日の頻度と分布を調べる。何 % の日が打 ち切られているか︖特定の曜日・シーズンに偏っているか︖ 02 既存商品(定番) EM Unconstraining でまず素早く成果を出す。改善が見えた ら、信用区間が必要な意思決定のために NumPyro ベイズへ 移行する。 03 新商品 類似商品の履歴をまず EM で打ち切り補正してから、類似度ベ ース予測に使う。類似度の定義は商品企画・MD 部門と必ずす り合わせる。 04 廃盤商品 生存分析を使いつつ、単一モデルに固執せず A/B テストで検証 。因果推論の専門家との協業を視野に入れる。 05 組織対応 「POS 売上 = 需要」という暗黙前提を共有した上で、プロジェク ト開始時点で打ち切り補正の必要性を経営層に説明する。後 から効果を示そうとすると、予算も期間も取れない。 06 継続モニタリング 本番投入後も「補正後の予測 vs 実際の売上」の誤差を継続 監視。商品カテゴリ・季節性・需要構造の変化を早期検知する ため。