更新履歴(初版のみ・2026年11月01日公開)
- 初版公開
この記事を引用する(DOI: 10.5281/zenodo.23852475)
この記事はZenodoにアーカイブされています。常に最新版へ解決されるDOIと、いま表示している版に固定されたDOIの両方を下に示します。
小村 豪(2026)「需要予測で「平均の何倍を在庫に持つか」の決め方 ── 安全在庫の考え方」合同会社小村ソフト. https://doi.org/10.5281/zenodo.23852475 https://comcomponent.com/blog/safety-stock-reorder-point-basics/
- DOI(最新版)
- 10.5281/zenodo.23852475
- DOI(この版)
- 10.5281/zenodo.23852476
在庫をいくつ持つかを「平均の2倍」「1か月分」のように倍率で決めることがあります。分かりやすい決め方ですが、倍率をいくつにすればよいかの根拠は示せません。欠品が続いた品目は倍率を上げ、余った品目は下げる、という調整を繰り返すことになります。
この記事では倍率の代わりに「安全在庫」という考え方で在庫の目安を決める方法を説明します。答えの要点は、安全在庫が平均の何倍かではなく、需要のばらつき、リードタイム、発注の方式、欠品をどれだけ避けたいかの4つで決まることです。式は表計算ソフトで計算できる簡単なもので、Excel の関数を使った計算例も示します。
対象は仕入れて売る商品や部品のように、補充して使う在庫です。式は物流・在庫管理の講義資料で教えられている標準的なものを使い、計算例の数字はすべて説明のために作った架空の値です。式には前提があり、当てはまらない品目もあるので、最後の節でその見分け方も扱います。
「平均の何倍」では決められない理由
同じように1日平均20個売れる品目が2つあるとします。品目Aは毎日18個から22個のあいだで安定して売れます。品目Bは5個の日もあれば40個の日もあります。平均が同じなので「平均の何倍」で決めると同じ在庫になりますが、欠品しやすいのは明らかに品目Bです。
平均より多めに在庫を持つのは、発注してから届くまでのあいだに、予想より多く売れても欠品しないようにするためです。必要な余裕の量は、売れ方がどれだけぶれるか、届くまで何日かかるか、どのタイミングで発注するか、どこまで欠品を許すかで変わります。平均の大きさは、届く日がずれる場合を除けば、安全在庫の式に出てきません。
flowchart TB
accTitle: 安全在庫を決める4つの要素
accDescr: 安全在庫が、需要のばらつき、リードタイムとそのばらつき、発注の方式、目標とするサービスレベルの4つから決まることを示す。
A["需要のばらつき"] --> SS["安全在庫"]
B["リードタイム"] --> SS
C["発注の方式"] --> SS
D["サービスレベル"] --> SS
図1: 安全在庫は需要のばらつき、リードタイム、発注の方式、サービスレベルの4つで決まる。
図の実線は常に成り立つ関係、破線は条件付きの関係です(成立条件は詳細ページの各関係の説明に記載)。関係すべての一覧(全10件、根拠・確度つき)と主要概念の定義は知識マップ詳細ページにまとめています。データ: JSON-LD / Turtle
安全在庫と発注点
在庫の量を確かめながら、決めた水準まで減ったら発注する方式を考えます。この発注のきっかけになる在庫の水準を発注点と呼びます。発注してから品物が届くまでの時間がリードタイムで、そのあいだに出ていく需要をリードタイム中の需要と呼びます1。
発注点はリードタイム中の需要の平均に安全在庫を足した値です。言い換えると、安全在庫は発注点からリードタイム中の平均需要を引いた残りで、平均より多く売れたときのための余裕です12。
flowchart TB
accTitle: 発注点方式の1サイクル
accDescr: 在庫が発注点まで減ると発注し、リードタイムのあいだも在庫が減り続け、品物が届くと在庫が戻る1サイクルの流れと、発注点が平均需要と安全在庫からなることを示す。
A["在庫が減る"] --> B["発注点まで減る"]
B --> C["発注する"]
C --> D["リードタイム(届くまで)"]
D --> E["品物が届き在庫が戻る"]
E --> A
B -.-> F["発注点 = リードタイム中の平均需要 + 安全在庫"]
図2: 発注点は届くまでのあいだに平均どおり売れる分と、平均より多く売れたときの余裕(安全在庫)でできている。
リードタイム中に平均どおり売れれば、品物が届く時点で手元には安全在庫の分が残ります。平均より多く売れても、その差が安全在庫に収まれば欠品しません。安全在庫をどれだけ持つかは、「平均よりどのくらい多く売れることまで備えるか」を決めることになります。
需要のばらつきを標準偏差で表す
売れ方のぶれは過去の販売数の標準偏差で表せます。標準偏差は、データが平均からどのくらい離れて散らばっているかを示す値です。Excel では STDEV.S 関数で計算でき、この関数は渡したデータを標本とみなして n−1 で割る方法で計算します3。
日ごとの販売数から求めた標準偏差は、1日分のぶれです。リードタイムが9日なら、必要なのは9日分の需要のぶれです。日ごとの需要が互いに関係なく決まるとみなせるとき、L日分の需要のばらつき(分散)は1日分の L 倍になり、標準偏差は √L 倍になります2。
flowchart TB
accTitle: 1日分の標準偏差からリードタイム分の標準偏差を求める流れ
accDescr: 日ごとの販売数から1日分の標準偏差を求め、リードタイムの日数の平方根を掛けてリードタイム中の需要の標準偏差にする流れを示す。
A["日ごとの販売数"] --> B["1日分の標準偏差(STDEV.S)"]
B --> C["√リードタイム(日数)を掛ける"]
C --> D["リードタイム中の需要の標準偏差"]
図3: リードタイム中の需要のぶれは1日分の標準偏差にリードタイムの日数の平方根を掛けて求める。
9日分のぶれは1日分の9倍ではなく3倍(√9)です。日ごとの多い・少ないが互いに打ち消し合うためで、リードタイムが長くなっても安全在庫は日数に比例しては増えません。ただし、この打ち消し合いは日ごとの需要が独立していることを前提にしています。
サービスレベルと安全係数
サイクルサービスレベル
どこまで欠品を避けたいかを数字で決めるのがサービスレベルです。よく使うのはサイクルサービスレベルで、補充の1サイクルの中で欠品が起きない確率を表します21。95%なら、20回の補充のうち1回程度はリードタイム中に欠品が起きうる、という水準です。
リードタイム中の需要が正規分布に従うとみなすと、サイクルサービスレベルから安全係数 k が決まり、安全在庫は k にリードタイム中の需要の標準偏差を掛けた値になります2。正規分布は平均を中心に左右対称に広がる分布で、平均0・標準偏差1のものを標準正規分布と呼びます4。k は標準正規分布で累積確率がサイクルサービスレベルに等しくなる点で、Excel では NORM.S.INV 関数で求められます5。
flowchart TB
accTitle: サイクルサービスレベルから安全在庫を求める流れ
accDescr: 目標のサイクルサービスレベルからNORM.S.INVで安全係数を求め、リードタイム中の需要の標準偏差を掛けて安全在庫にし、平均需要を足して発注点にする流れを示す。
A["目標のサイクルサービスレベル"] --> B["安全係数 k(NORM.S.INV)"]
B --> C["安全在庫 = k × リードタイム中の標準偏差"]
C --> D["発注点 = リードタイム中の平均需要 + 安全在庫"]
図4: 目標のサービスレベルから安全係数を求め、標準偏差を掛けて安全在庫にする。
NORM.S.INV で求めた主なサービスレベルの安全係数は次のとおりです(小数第4位まで)。
| サイクルサービスレベル | 安全係数 k | 計算式 |
|---|---|---|
| 90% | 1.2816 | =NORM.S.INV(0.9) |
| 95% | 1.6449 | =NORM.S.INV(0.95) |
| 98% | 2.0537 | =NORM.S.INV(0.98) |
| 99% | 2.3263 | =NORM.S.INV(0.99) |
95%から98%へ3ポイント上げると k は約0.41増え、98%から99%へ1ポイント上げるだけで約0.27増えます。目標を高くするほど、1ポイントあたりの安全在庫の増え方が大きくなります。100%に近づけるほど在庫が膨らむので、全品目を一律に99%にするより、欠品したときの影響が大きい品目ほど高くする、という分け方が考えられます。
フィルレートとの違い
サービスレベルにはもう1つ、フィルレートという指標があります。需要のうち在庫からすぐに出せた量の割合です12。サイクルサービスレベルが「欠品が起きたかどうか」を数えるのに対し、フィルレートは「どれだけ足りなかったか」を数えます。
2つの値は大きく違うことがあります。アイオワ大学の講義資料の例では、1回の発注量が500個、リードタイム中の需要が平均150個・標準偏差50個のとき、フィルレート99%を目標にすると安全係数は0.9で足ります。このときのサイクルサービスレベルは81.6%で、補充のたびに18.4%の確率で欠品が起きます1。フィルレートは足りない量の期待値を1回の発注量で割った値を1から引いて求めるので、発注量が多いと、欠品が起きても割合としては小さくなるためです2。
flowchart TB
accTitle: サイクルサービスレベルとフィルレートの違い
accDescr: サイクルサービスレベルは補充の1サイクルで欠品が起きない確率、フィルレートは需要のうち在庫から出せた量の割合で、同じ在庫でも値が大きく異なりうることを示す。
S["同じ安全在庫"] --> C["サイクルサービスレベル"]
S --> F["フィルレート"]
C -.-> C2["1サイクルで欠品が起きない確率"]
F -.-> F2["需要のうち在庫から出せた量の割合"]
図5: 同じ在庫でも、欠品の回数で数えるか、足りない量で数えるかで、サービスレベルの値は大きく変わる。
「サービスレベル95%」と言うときは、どちらの指標の95%かを先に決めておきます。この記事の計算例は式が簡単なサイクルサービスレベルを使います。
Excelでの計算例
ここからは架空の数字で計算します。品目Aは1日平均20個、日ごとの販売数の標準偏差が6個、リードタイムは9日で毎回ずれないとします。目標はサイクルサービスレベル95%です。
| セル | 内容 | 式 | 結果 |
|---|---|---|---|
| E2 | 1日平均の需要 | =AVERAGE(B2:B61) |
20 |
| E3 | 1日分の標準偏差 | =STDEV.S(B2:B61) |
6 |
| E4 | リードタイム(日) | 入力 | 9 |
| E5 | サイクルサービスレベル | 入力 | 0.95 |
| E6 | 安全係数 k | =NORM.S.INV(E5) |
1.6449 |
| E7 | リードタイム中の標準偏差 | =E3*SQRT(E4) |
18 |
| E8 | 安全在庫 | =E6*E7 |
29.6 |
| E9 | 発注点 | =E2*E4+E8 |
209.6 |
B2:B61 には過去60日分の日ごとの販売数が入っている想定です。表の「結果」は、平均と標準偏差がちょうど20と6になった場合の値です。安全在庫は約30個、発注点は約210個になります。在庫(発注済みでまだ届いていない分を含む)が210個まで減ったら発注すれば、9日後に品物が届くまでに欠品が起きる確率は5%程度になります。
flowchart TB
accTitle: 計算例の手順
accDescr: 過去60日の販売数から平均と標準偏差を求め、サービスレベルから安全係数を求め、リードタイムの平方根と掛けて安全在庫を出し、平均需要を足して発注点にする手順を示す。
A["過去60日の販売数"] --> B["平均20個・標準偏差6個"]
B --> C["9日分の標準偏差 = 6 × 3 = 18"]
D["95% → k = 1.6449"] --> E["安全在庫 = 1.6449 × 18 ≒ 30"]
C --> E
E --> F["発注点 = 20 × 9 + 30 ≒ 210"]
図6: 平均・標準偏差・リードタイム・サービスレベルの4つの値から、安全在庫と発注点を順に計算する。
冒頭の品目Bのように、同じ平均20個でも標準偏差が3倍の18個なら、安全在庫も3倍の約89個になります。反対に、毎日ほぼ同じ数だけ売れて標準偏差が2個なら、安全在庫は約10個で足ります。平均が同じでも、必要な安全在庫は品目によって大きく違います。
リードタイムがずれるとき
ここまではリードタイムが毎回9日で変わらないとしました。実際には、仕入れ先の都合で届くまでの日数がずれることがあります。リードタイムが平均 μ_L 日、標準偏差 σ_L 日でばらつくとき、リードタイム中の需要の標準偏差は次の式で求めます1。
リードタイム中の需要の標準偏差 = √( μ_L × σ_d² + μ_d² × σ_L² )
μ_d: 1日平均の需要 σ_d: 1日分の需要の標準偏差
μ_L: 平均リードタイム(日) σ_L: リードタイムの標準偏差(日)
第1項は需要のぶれ、第2項は届く日のぶれから来る分です。計算例の品目Aで、リードタイムが平均9日・標準偏差2日でばらつくとすると、√(9 × 36 + 400 × 4) = √1924 ≒ 43.9 です。安全在庫は 1.6449 × 43.9 ≒ 72個で、リードタイムが一定のときの約30個の2倍を超えます。
flowchart TB
accTitle: リードタイムのばらつきが安全在庫に加わる仕組み
accDescr: リードタイム中の需要のばらつきが、需要のぶれから来る分と届く日のぶれから来る分の2つからなり、両方を合わせた標準偏差に安全係数を掛けて安全在庫を求めることを示す。
A["需要のぶれ(μ_L × σ_d²)"] --> C["リードタイム中の需要の標準偏差"]
B["届く日のぶれ(μ_d² × σ_L²)"] --> C
C --> D["安全在庫 = k × 標準偏差"]
図7: 届く日がずれると、需要のぶれに加えてその分の余裕も安全在庫に必要になる。
講義資料は、ばらつきのない長いリードタイムのほうが、平均は短くてもばらつきの大きいリードタイムより安全在庫が少なく済むことがある、と指摘しています1。仕入れ先を比べるときは、平均の日数だけでなく、届く日がどのくらいずれるかも記録して比べます。
決まった日に発注するとき
毎週月曜日に発注するように、決まった間隔で在庫を確かめて発注する方式もあります。発注のたびに、ある水準(補充目標)まで在庫を戻すように発注量を決めます。この方式では次に発注するまでの間隔 R と、届くまでのリードタイム L を合わせた R + L 日分の需要に備える必要があります6。
flowchart TB
accTitle: 発注点方式と定期発注方式の備える期間の違い
accDescr: 発注点方式ではリードタイム分の需要に、定期発注方式では発注の間隔とリードタイムを合わせた期間の需要に安全在庫で備えることを示す。
A["発注点方式"] --> A2["備える期間 = リードタイム L"]
B["定期発注方式"] --> B2["備える期間 = 発注間隔 R + リードタイム L"]
A2 --> S["安全在庫 = k × その期間の標準偏差"]
B2 --> S
図8: 決まった日に発注する方式では、次の発注日までの期間もぶれに備える期間に入る。
計算例の品目Aを7日ごとの発注に変えると、備える期間は 7 + 9 = 16日です。16日分の標準偏差は 6 × √16 = 24個、安全在庫は 1.6449 × 24 ≒ 39.5個になります。発注点方式の約30個より多いのは、発注日と発注日のあいだは在庫を確かめないので、その分の期間のぶれも安全在庫で受け止める必要があるためです。補充目標は 20 × 16 + 39.5 ≒ 360個です。発注のたびに、この水準から在庫ポジション(手元の在庫と、発注済みでまだ届いていない量の合計から、受注残を引いた値)を引いた分を発注します6。
この式が当てはまらない品目
ここまでの式は、需要が正規分布に従い、日ごとに独立しているとみなせることを前提にしています。前提が合わない品目に当てはめると、安全在庫が多すぎたり少なすぎたりすることがあります。
flowchart TB
accTitle: 式を当てはめる前に確かめること
accDescr: 品目ごとに、売れない日が多い間欠需要か、季節や傾向があるか、実績のない新しい品目かを確かめ、当てはまらなければ基本の式をそのまま使わないことを示す。
A["品目を確かめる"] --> B["売れない日が多い(間欠需要)"]
A --> C["季節や傾向がある"]
A --> D["販売実績がない新しい品目"]
A --> E["どれにも当たらない"]
B -.-> B2["正規分布の前提が合いにくい"]
C -.-> C2["予測誤差のばらつきを使う"]
D -.-> D2["ばらつきを測れない"]
E -.-> E2["基本の式を使う"]
図9: 式を当てはめる前に、需要の形がその前提に合っているかを確かめる。
売れない日が多い品目
補修部品のように、売れない日が続き、売れるときはまとまって売れる品目があります。このような需要は間欠需要と呼ばれ、需要がゼロの期間が多いのが特徴です7。間欠需要では、リードタイム中の需要の分布をどう表すかが在庫管理の難しいところで、正規分布を使えるのは需要のばらつき(変動係数)が小さい場合に限られるという研究があります7。こうした品目にはガンマ分布、ポアソン分布、負の二項分布など、ほかの分布を当てはめる方法が研究されています7。
季節や傾向がある品目
夏に売れる、年々増えている、といった品目では、日ごとの販売数の標準偏差に、季節や傾向による予想できる変化まで含まれてしまいます。MIT の講義資料は、安全在庫の計算に使う標準偏差は技術的にはリードタイム中の予測誤差の二乗平均平方根(RMSE)であり、需要の標準偏差で代用するのは予測を平均とみなすことに当たると説明しています2。季節や傾向を予測に織り込んでいるなら、販売数そのものではなく、予測と実績の差のばらつきを使います。
販売実績のない新しい品目
新しい品目には過去の販売数がないので、標準偏差を計算できません。似た品目の実績を参考にするなど、計算の外で決めることになります。実績がたまったら、この記事の式で計算し直します。
決めた安全在庫を運用で確かめる
計算した安全在庫は、前提の数字(平均、標準偏差、リードタイム)が変われば合わなくなります。販売数の傾向が変わったときや、仕入れ先や輸送の方法を変えたときは、計算し直す時期です。
もう1つ、目標にしたサービスレベルが実際に出ているかを確かめます。サイクルサービスレベルなら、補充のサイクルのうち欠品が起きた回数の割合を、品目ごとに記録します。目標より欠品が多い品目は、前提の数字が実態と合っていないか、式の前提(正規分布・独立)が合わない品目である可能性があります。「平均の何倍」の倍率を上げ下げする代わりに、どの数字がずれているかを調べられるのが、式で決めることの利点です。
関連記事
参考リンク
-
Dennis Bricker (The University of Iowa), Reorder Point. 発注点・リードタイム中の需要・安全在庫の定義、サイクルサービスレベルとフィルレート、リードタイムがばらつくときの標準偏差の式、フィルレート99%と安全係数0.9の例。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
MIT Center for Transportation & Logistics, CTL.SC1x Key Concepts: Week 7 Lesson 1 Probabilistic Inventory Models. 安全在庫と安全係数、発注点方式、サイクルサービスレベルとフィルレート、標準偏差と予測誤差の関係、期間の換算。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Microsoft サポート, STDEV.S function. 標本とみなしたデータの標準偏差を n−1 で計算すること。 ↩
-
NIST/SEMATECH, e-Handbook of Statistical Methods: Normal Distribution. 正規分布と標準正規分布の定義。 ↩
-
Microsoft サポート, NORM.S.INV function. 標準正規分布の累積分布関数の逆関数。 ↩
-
MIT Center for Transportation & Logistics, CTL.SC1x Key Concepts: Week 7 Lesson 2 Probabilistic Inventory Models II. 定期発注方式の補充目標と、発注間隔とリードタイムを合わせた期間。 ↩ ↩2
-
Yasin Unlu, Manuel D. Rossetti (University of Arkansas), Evaluating the Lead Time Demand Distribution for (r, Q) Policies Under Intermittent Demand. Proceedings of the 2009 Industrial Engineering Research Conference. 間欠需要の特徴と、正規分布を使える条件についての先行研究の紹介。 ↩ ↩2 ↩3
関連する記事
同じタグを共有する最新の記事です。さらに近い話題で知識を深められます。
シフト表・配送ルートの最適化 ── Excelでの手作業から数理最適化に移る判断基準
シフト表や配送ルートをExcelの手作業で作っている会社向けに、数理最適化が何を決めるのか、手作業が行き詰まる理由、移るかどうかの判断基準、準備することと小さく始める進め方をまとめます。
業務システムのコード設計 ── 商品コード・顧客コードの決め方とチェックディジット
商品コード・顧客コードなど業務システムのコード体系を決める実践ガイド。有意コードと無意味連番の判断表、JAN・Luhn等のチェックディジット算式とC#実装、Excelの0落ち対策、桁あふれと移行まで整理します。
Excel台帳をSharePointリストへ置き換える ── 共有・履歴・フロー連携で「台帳が壊れる」を卒業する
共有フォルダのExcel台帳をSharePointリスト(Microsoft Lists)へ移行する実践ガイド。同時編集・上書き・行ズレの解決、Excelからのインポート手順、列型設計、リストビューしきい値5000の正しい理解、Power Automate連携までを整理します。
PowerShellでExcel・CSV業務処理を自動化する ── 集計・突合・帳票出力の実務レシピ
PowerShellでCSVの集計・突合・Excel帳票出力を自動化する実務レシピ。Import-Csv/Export-Csvの文字コード既定(5.1と7の違い)、Group-Objectの集計、Compare-Objectとハッシュテーブルの突合、ImportExcelと...
Power Automate for desktopで基幹システムへの転記を自動化する ── Excel・紙からの手入力をUI自動化に置き換える
APIのない古い基幹システムへの手入力転記を、Power Automate for desktop(PAD)のUI自動化で置き換える実践ガイド。無料で使える範囲、無人実行のライセンス、セレクターと例外処理による安定化まで整理します。
関連トピック
このテーマと近いトピックページです。記事を起点に、関連するサービスや他の記事へ進めます。
Windows技術トピック
Windows 開発、不具合調査、既存資産活用の技術トピックをまとめた入口です。
このテーマがつながるサービス
この記事は次のサービスページにつながります。近い入口からご覧ください。
数理コンサルティング・業務最適化
安全在庫は、品目ごとの需要のばらつき、リードタイム、発注方式、目標とするサービスレベルを数式に落として決める題材です。品目が多いときの計算の仕組みづくりや、式が当てはまらない品目の扱いを数理コンサルティングとして整理できます。
よくある質問
この記事のテーマについて、相談時によくある質問をまとめています。
- 在庫は平均需要の何倍持てばよいですか?
- 倍率だけでは決まりません。安全在庫は、需要のばらつき(標準偏差)、発注してから届くまでのリードタイム、発注の方式、欠品をどれだけ避けたいか(サービスレベル)で決まります。平均が同じ品目でも、ばらつきが3倍なら安全在庫も3倍になります。
- 安全在庫の基本の式を教えてください。
- 需要のばらつきだけを考え、リードタイムが一定とみなせるときは、安全在庫 = 安全係数 × 1日あたりの需要の標準偏差 × √リードタイム(日数)です。発注点は、リードタイム中の平均需要に安全在庫を足した値です。安全係数はサイクルサービスレベルから正規分布で求め、95%なら約1.645です。
- サービスレベル95%とは、注文の95%に応えられるという意味ですか?
- サイクルサービスレベルの95%は、補充の1サイクルの中で欠品が起きない確率が95%という意味です。注文数量のうち在庫から出せた割合(フィルレート)とは別の指標で、同じ在庫でも値が大きく違うことがあります。どちらを目標にするかを先に決めます。
- この式が使えない品目はありますか?
- 売れる日が少なく、売れない日が続く間欠需要の品目は、需要を正規分布とみなす前提が合いにくくなります。季節や傾向がはっきりある品目は、需要そのもののばらつきより予測の外れ(予測誤差)を使います。販売実績のない新しい品目は、ばらつきを測れません。