リード

前回の記事「経験則発注 最小実装:スプレッドシート10分でMAPE30%を達成する」では、経験則による需要予測の実装方法を紹介しました。過去の販売実績に季節係数やトレンド係数を加えるだけでも、多くのEC事業者では MAPE(平均絶対誤差率)を 40〜50% から 25〜30% 程度まで改善できます。

一方で、経験則を3〜6か月ほど運用すると、「これ以上はなかなか精度が上がらない」という壁にぶつかります。夏物商品の立ち上がりや年末需要のピークなど、季節の変化を人の感覚だけで補正するには限界があるからです。

そこで次に取り組みたいのが「統計式による需要予測」です。統計式というと難しく感じるかもしれませんが、実際にはGoogleスプレッドシートだけで実装できるものも多く存在します。

本記事では、加重移動平均(L4)→ 指数平滑法(L5)→ ETS(L6)という3段階で、MAPE 15〜20% を目指す実践方法を紹介します。


1. 統計式発注の位置付け

需要予測には大きく3つのレベルがあります。

手法 内容 実装場所 MAPE目安
経験則 販売実績に補正係数を掛ける Sheets 25〜30%
統計式 時系列モデルで自動計算 Sheets・Python 15〜20%
AI 多数の説明変数を学習 Python・SaaS 8〜15%

経験則は「担当者の勘をルール化」する方法です。一方、統計式は販売履歴そのものを数学的なモデルとして扱い、データから最適な予測値を計算します。

統計式の最大のメリットは、人が毎月係数を調整しなくても、販売データの変化に応じて予測値を自動的に更新できることです。

たとえば、

こうした変化をモデルが吸収してくれます。

さらに、統計式では「予測区間」も計算できます。「来月は200個売れる」だけではなく、「180〜220個の範囲になる可能性が高い」という情報まで得られるため、安全在庫の設定にも根拠を持たせられます。

一方で統計式にも限界があります。

販売履歴がない新商品には利用できませんし、SNSで突然バズった商品やテレビ放映による急激な需要増なども予測は困難です。

そのため、統計式へ移行するタイミングは、

という状態になってからで十分です。

自社で見るべき視点 「経験則を卒業する理由があるか」を確認しましょう。まだ経験則で改善余地がある段階で統計式に飛びついても、運用負荷だけが増えて効果は薄くなります。精度不足が明確な課題になっているなら、統計式への移行を検討するタイミングです。


2. 3段階のレベル分け

統計式による需要予測は、一気に高度なモデルへ進む必要はありません。EC事業者が現実的に導入するなら、L4 → L5 → L6 の順番で段階的に精度を上げることをおすすめします。

L4:加重移動平均(Google Sheetsで完結)

最初に取り組みたいのが加重移動平均です。

単純平均では90日前の販売も昨日の販売も同じ重みになりますが、現実には直近の販売実績ほど価値があります。そのため、

のように重みを付けます。

発注量 = (直近7日平均 × 0.5
       + 8〜30日平均 × 0.3
       + 31〜90日平均 × 0.2)
       × リードタイム
       + 安全在庫
       − 現在庫
       − 輸送中在庫

Google Sheets では AVERAGE 関数だけで実装でき、初期構築は30分程度で完了します。販売が緩やかに増減する商品では、この方法だけでも MAPE 22〜28% 程度まで改善するケースがあります。

適している商品 - 定番商品 - リピート率が高い商品 - 急激なトレンド変化が少ない商品

L5:単純指数平滑法(SES)

次に導入したいのが指数平滑法です。加重移動平均との違いは、「重み」を毎回自分で決めるのではなく、α(アルファ)という平滑化係数だけで制御する点にあります。

計算式は非常にシンプルです。

今日の予測 = α × 昨日の実績 + (1 − α) × 昨日の予測

SKUごとに最適なαは異なるため、

の5パターンを試し、MAPE が最も小さくなる値を採用するとよいでしょう。

Google Sheets でも十分実装でき、45分ほどで初期セットアップできます。MAPE は 18〜25% 程度が目安になります。

販売量が急に一段階増えた商品や、広告開始後に水準が変化した商品では、加重移動平均より高い精度になることが多くあります。

L6:ETS・Holt-Winters

さらに精度を上げるなら ETS(Error・Trend・Seasonality)や Holt-Winters 法になります。このレベルになると、

の3要素を同時に推定します。Google Sheets だけでは実装が難しく、

などを利用するのが一般的です。

MAPE は 15〜20% 程度まで改善するケースが多く、特に

では大きな効果があります。

どこから始めるべきか

すべてのSKU を最初から ETS へ移行する必要はありません。おすすめは次の順番です。

  1. 経験則(L3)を3か月運用
  2. L4(加重移動平均)を全SKUへ適用
  3. MAPE 22〜25% まで改善したSKUのみ L5
  4. 売上上位SKUだけ L6 を試験導入

この段階的な移行なら、運用負荷を大きく増やさずに予測精度を改善できます。

自社で見るべき視点 「すべてのSKUを同じモデルで予測しない」ことが重要です。売上規模や販売パターンに応じて予測手法を使い分けることが、精度と運用コストを両立するポイントになります。


3. 実装 5ステップ

ここからは、Googleスプレッドシートだけで統計式需要予測を運用するための具体的な実装手順を紹介します。すべてを一度に作る必要はありません。まずは L4(加重移動平均)を全SKUへ適用し、その後 L5(指数平滑法)へ段階的に移行するのがおすすめです。

Step 1:L4 加重移動平均をSheetsで組む(初期30分)

まず「加重予測」シートを作成します。最低限必要な列は次の5つです。

Google Sheets では次のような考え方で計算できます。

= 直近7日平均 * 0.5
+ 8〜30日平均 * 0.3
+ 31〜90日平均 * 0.2

販売変動が激しい商品ほど直近データの重みを大きくし、安定商品ほど90日平均を重くするのが基本です。たとえば、

というように SKU ごとに重みを変えても構いません。この時点でも経験則より一段階精度が上がるケースが多くあります。

Step 2:L5 単純指数平滑法を組む(初期45分)

次に SES(Simple Exponential Smoothing)を導入します。まず α(アルファ)を5パターン用意します。

それぞれについて過去60日程度をシミュレーションし、MAPE を比較します。計算式は非常にシンプルです。

今日の予測 = α × 前日の実績 + (1 − α) × 前日の予測

たとえば、昨日の実績 120個、予測 110個、α = 0.3 なら、

0.3 × 120 + 0.7 × 110 = 113個

となります。

SKUごとに最も MAPE が小さくなる α を採用し、SKUマスタへ登録しておくと運用しやすくなります。

Step 3:SKU階層ごとにモデルを使い分ける

すべての SKU へ同じ予測モデルを使う必要はありません。ABC分析を実施し、

という使い分けがおすすめです。

売上への影響が大きい商品ほど精度の高いモデルを使い、販売数が少ない商品はシンプルなモデルのまま運用した方が管理コストも抑えられます。

Step 4:主力SKUだけL6を試す

L5 まで運用しても MAPE が 20% 前後から改善しない場合は、主力SKUだけ ETS や Holt-Winters を試します。

Python を利用する場合は Google Colab が最も手軽です。必要なライブラリは以下程度で十分です。

from statsforecast import StatsForecast
from statsforecast.models import AutoETS

sf = StatsForecast(
    models=[AutoETS()],
    freq="D"
)
forecast = sf.forecast(df=df, h=30)

10〜15行程度で30日予測まで作成できます。

Python 環境構築が難しい場合は、統計モデルを内蔵した在庫最適化SaaSを試用し、Sheets 運用との MAPE 差を比較する方法でも十分です。

Step 5:毎月MAPEを測定する

予測モデルは作って終わりではありません。毎月、

を記録します。たとえば、

SKU L4 L5 実績
主力商品A 165 158 160

であれば、L4 より L5 の方が誤差が小さいことが分かります。MAPE 改善が5ポイント未満なら、無理に上位モデルへ移行する必要はありません。逆に5ポイント以上改善するなら、そのSKUだけ L5 や L6 へ格上げする価値があります。

自社で見るべき視点 「モデルを作ること」ではなく「毎月MAPEを測定して改善を続けること」が重要です。需要予測は一度作って終わる仕組みではなく、継続的に精度を高めていく運用そのものが本質です。


4. 具体例

ここでは、主力SKUを例に、経験則(L3)から統計式(L4・L5・L6)へ移行した場合の違いを比較してみます。条件は以下とします。

それぞれの手法で予測すると、次のようになります。

手法 予測(個/日) 月間予測 過去MAPE
L3(経験則) 5.7 171個 28%
L4(加重移動平均) 5.4 162個 24%
L5(指数平滑法) 5.5 165個 21%
L6(ETS/Holt-Winters) 5.3 159個 17%

予測数量だけを見ると大きな差はありません。しかし重要なのは、どれだけ実績に近づけられるかです。たとえば実績が 160個だった場合、

となり、統計式へ移行するほど発注精度が安定していきます。特に売上上位SKUでは、この差が年間を通じて大きな在庫金額の違いにつながります。

Google Sheets 数式サンプル(L5)

指数平滑法は Google Sheets でも十分実装できます。

項目 数式例
今日の予測 = B2 * 前日実績 + (1 - B2) * 前日予測
α 最適化 = INDEX(α一覧, MATCH(MIN(MAPE一覧), MAPE一覧, 0))
MAPE = ABS(予測 - 実績) / 実績

α は SKU ごとに保持し、SKUマスタから VLOOKUP や XLOOKUP で取得すると運用しやすくなります。


5. MAPE 15〜20% の意味と限界

「MAPE 20%」と言われても、現場ではどの程度改善するのかイメージしづらいかもしれません。たとえば、月商 3,000万円規模のEC事業者を想定すると、MAPE 20% 程度まで改善した場合、次のような効果が期待できます。

指標 経験則(MAPE 30%) 統計式(MAPE 20%)
モール在庫0日数(SKU別 月平均) 月 2〜4日 月 0.5〜1日
過剰在庫 約 ¥250,000 / 月 約 ¥100,000 / 月
発注作業時間 月 10分 月 10〜15分

作業時間はほとんど変わりません。しかし、モール在庫0日数や過剰在庫は大きく改善できます。

さらに ETS まで導入すると、安全在庫を感覚ではなく統計的な根拠で設定できるようになります。たとえば、

安全在庫 = Z値 × 需要標準偏差 × √リードタイム

という考え方が利用できるため、サービスレベル 95% を維持するために必要な在庫量を数式で算出できます。

統計式の限界

一方で統計式にも限界があります。

こうした外部要因は統計式だけでは扱えません。そのため、SKU数が500を超えたり、多チャネル・多倉庫運営になった場合は、機械学習モデルへの移行を検討するタイミングになります。

自社で見るべき視点 「MAPEを何%まで下げたいか」ではなく、「その改善が在庫金額や欠品削減に見合うか」を判断してください。すべてのSKUで最高精度を目指すより、売上への影響が大きいSKUから順番に改善していく方が投資対効果は高くなります。


6. よくある失敗と対処

統計式による需要予測は、経験則よりも精度が高い一方で、設定や運用方法を誤ると期待した効果が得られません。ここでは、EC事業者が導入時によく直面する5つの失敗と、その対処法を紹介します。

失敗1:α(アルファ)を大きくしすぎる

指数平滑法(SES)では、α(平滑化係数)が予測精度を左右します。「最近の販売を重視したい」と考えて α を 0.8 や 0.9 に設定すると、予測が実績の後追いになり、日々の変動をそのまま増幅してしまいます。

たとえば、通常5個/日で売れている商品がセールで20個売れた翌日に、予測まで急激に跳ね上がるケースです。その結果、翌週の発注数量が過大になり、過剰在庫を招くことがあります。

対処法 - α は 0.1〜0.5 の範囲から選ぶ - 過去3〜6か月分で MAPE を比較し、最も精度が高い値を採用する - 半年に一度程度、α を見直す

経験則で決めるのではなく、「MAPE が最も小さい α」を選ぶことが重要です。

失敗2:全SKUで同じ重みを使う

加重移動平均では、直近7日 50%、30日 30%、90日 20% のような重みを設定します。しかし、すべての商品で同じ比率にすると、予測精度は思ったほど改善しません。

たとえば、定番商品・季節商品・トレンド商品では販売パターンがまったく異なるからです。

対処法 SKUごとに販売変動係数(標準偏差÷平均販売数)を計算し、

というように重みを使い分けます。最初は ABC 分析と組み合わせるだけでも十分効果があります。

失敗3:季節周期を間違える

Holt-Winters や ETS では、季節周期の設定が重要です。たとえば、週次周期の商品・月次周期の商品・年次周期の商品を混同すると、モデルは正しく学習できません。

特にキャンプ用品やスーツケースのような季節商品では、年周期を設定すべきところを30日周期で学習させると、大きく予測が崩れます。

対処法 導入前に販売履歴を確認し、

を整理してからモデルを選択しましょう。

失敗4:Python環境構築で止まる

統計モデルを試そうとして、Python をインストール → ライブラリを追加 → エラー対応、だけで数日かかり、実際の需要予測まで進めないケースは少なくありません。

対処法 最初からローカル環境を構築する必要はありません。Google Colab を使えば、

で統計モデルを試すことができます。まずは Colab で動作を確認し、運用が固まってからローカル環境へ移行する方が効率的です。

失敗5:SaaSへ切り替えて運用が止まる

統計式やAI在庫最適化SaaSを試す際に、「もう Sheets は不要だろう」と完全移行してしまうケースがあります。しかし試用期間中は予測ロジックが安定していないため、発注ミスにつながるリスクがあります。

対処法 おすすめは並行運用です。

という形で3か月程度比較します。MAPE が明確に改善し、運用フローも固まった段階で正式移行する方が安全です。


7. 次のステップ

加重移動平均や指数平滑法によって MAPE 15〜20% 程度まで改善できたら、多くのEC事業者では統計式の効果を十分に実感できるはずです。その次のステップは、機械学習モデルの導入です。

Prophet、ARIMA、XGBoost、LightGBM など複数のモデルを組み合わせることで、季節性、広告費、販売価格、キャンペーン、曜日、イベントなどの説明変数も予測へ取り込めるようになります。

さらに、需要予測だけでなく、工場・中間倉庫・Amazon・楽天・自社EC といった複数拠点を含めた供給シミュレーションまで実現できます。たとえば、複数モデルを日次で使い分けて最高精度モデルを自動選択し、統括エージェント × 工場・中間倉庫・モールの3階層をまたぐマルチエージェント供給シミュレーションで、SKU別の発送量を毎日全体最適で決定できます。

重要なのは、一足飛びに AI へ進むことではありません。経験則 → 統計式 → AI という順番で改善していくことが、最も再現性が高く、運用も定着しやすい方法です。


関連記事


Arke合同会社について

Arke合同会社では、EC事業者向けに統計式需要予測の導入からAIによる需要予測まで、段階的な導入支援を行っています。

まずは Sheets だけで統計式を試し、MAPE 20% 前後まで改善した段階で、AI導入の必要性を判断するのがおすすめです。

「S-Wallet 在庫」でGoogle検索いただいてもたどり着けます。