Excelで正規乱数を作る:NORM.INV、平均、標準偏差
ひとことで言うと:釣り鐘型の曲線です。結果の大半は平均の近くに集まり、平均から離れるほど少なくなります。平均の上側も下側も、同じように減ります。
正規分布は、平均のまわりに左右対称にばらつく量を表し、広がりは標準偏差で決まります。Excelでは、=NORM.INV(RAND(), mean, sd) で1つの値を引けます。平均1,000個、標準偏差200個の需要なら、P10は744、P90は1,256で、結果の約95%は標準偏差2つ分の範囲(600〜1,400)に収まります。
正規分布とは
正規分布は釣り鐘型の曲線です。結果の大半は平均の近くに集まり、離れるほど少なくなって、左右は鏡のように対称です。この分布は2つの数値だけで決まります。平均は中心の位置で、中央値と最頻値にも一致します。標準偏差は幅で、結果の約3分の2は、平均から標準偏差1つ分の範囲に入ります。
グラフの見方:棒は、シミュレーションで引いた10,000個の値がその区間にいくつ入ったかを表し、線は理論上の曲線です。棒が高いほど、その付近の値がよく出ます。点線はP10とP90の位置で、10回のうち8回は、この間に入ります。
| 範囲 | 需要 | 結果の割合 |
|---|---|---|
| 平均 ± 標準偏差1つ分 | 800 – 1,200 | 68.3% |
| 平均 ± 標準偏差2つ分 | 600 – 1,400 | 95.4% |
| 平均 ± 標準偏差3つ分 | 400 – 1,600 | 99.7% |
パーセンタイルも、同じ2つの数値から決まります。P90は平均より標準偏差の1.2816倍だけ上、P10は同じだけ下にあるので、結果の80%は744〜1,256に入ります。
Excelでの正規分布
NORM.INV(probability, mean, standard_deviation) は、指定した割合の結果がそれを下回る値を返します。確率を固定するとパーセンタイル、確率に RAND() を使うと乱数による値になり、シートを再計算するたびに新しい値が出ます。このページのExcelファイルは、乱数を別のセルに置いてあるので、どの乱数からどの値が出たかを確認できます。1つのセルにまとめると、数式は =NORM.INV(RAND(),D5,F5) です。
| セル | 数式 | 値 |
|---|---|---|
| 乱数 u(I5) | =RAND() | |
| 引いた値(J5) | =NORM.INV(I5, | |
| 1つのセルで引く | =NORM.INV(RAND(), | |
| 平均(K5) | =D5 | 1,000 |
| P10 (L5) | =NORM.INV(0.1, | 744 |
| P90 (M5) | =NORM.INV(0.9, | 1,256 |
数値の確認:理論値と、Excelとxellstormがそれぞれ引いた10,000個の値の比較
| 理論値 | Excel(RAND()) | xellstorm | |
|---|---|---|---|
| 平均 | 1,000 | 998 | 1,000 |
| 標準偏差 | 200 | 199 | 200 |
| P10 | 744 | 743 | 744 |
| P50(中央値) | 1,000 | 996 | 1,000 |
| P90 | 1,256 | 1,251 | 1,256 |
Excelは RAND() で完全にランダムに引きます。xellstormは範囲全体に均等に散らして引く(ラテンハイパーキューブサンプリング)ので、統計値が理論値に近くなります。
逆の問い、つまり需要がある水準を下回る確率は、NORM.DIST(x, mean, standard_deviation, TRUE) で求めます。=NORM.DIST(700, 1000, 200, TRUE) は6.7%で、需要が700個を下回るシーズンになる確率です。旧名の NORMINV と NORMDIST も引き続き使えます。1回引いた値は、起こりうる1シーズンにすぎません。不確実性が利益や在庫水準にどう響くかを見るには、何千回もの引きが必要です。それを繰り返すのがモンテカルロシミュレーションです(Excelでのモンテカルロシミュレーションを参照)。
正規分布が合う場面
- 目標値のまわりの測定値。機械加工の寸法、充填重量、測定誤差は、公称値のまわりに左右対称にばらつきます。公差積み上げの例がそうです。
- 独立した多数の部分の合計。互いに関係のない小さな不確実性をたくさん足すと、一つひとつの形によらず、合計は釣り鐘型に近づきます。統計では、これを中心極限定理と呼びます。
- 販売実績のある商品の需要。標準偏差が平均に比べて小さい場合で、発注量の例の需要がそうです。
合わない場面
正規分布には下限がなく、一定の確率で負の値を出します。このページの需要では、その確率は無視できる程度です。しかし、標準偏差が平均の半分の500になると、引いた値の2.3%が負の需要になります。負にならず、ばらつきが大きい量には、対数正規分布かガンマ分布を使うか、正規分布を0で切断します。
左右対称である点にも注意が要ります。コストや所要期間は、たいてい下回る幅より上回る幅の方が大きくなります。その偏りは、PERT分布、三角分布、対数正規分布なら表せます。また、正規分布では極端な値がとてもまれで、平均から標準偏差3つ分より離れた値はほとんど出ません。そのため、価格や収益率の大きな変動は小さく見積もられます。極端な値がもっと出るのは、t分布です。
xellstormで正規分布を入力する
- Excelファイルを開き、不確かなセルをクリックして「入力にする」を選びます。
- 「分布」ステップで正規分布を選び、平均と標準偏差を入力します。実行する前に、「平均」と「P10 – P90」の列で、2つの数値から何が得られるかを確認できます。
- 標準偏差ではなく、低い値・代表的な値・高い値で考える場合は、入力を選び、サイドパネルの「見積もりから」を使います。P10、P50、P90を入力して、正規分布を選びます。過去の値があれば、「データから」で正規分布などの形を当てはめ、順位を付けます。
- 引いた値を0以上に保つには、パラメーターの下にある「切断 / シフト / 倍率」を開き、切断の下限に0を設定します。
すでに =NORM.INV(RAND(), mean, sd) で値を引いているExcelファイルは、書き換えずに使えます。「Excelファイルから取り込み」を使うと、こうしたセルが正規分布の入力に変わり、平均と標準偏差はセルに連動したままです。アドイン向けに作られたモデルの RiskNormal、VoseNormal、PsiNormal も、同じように変換します。
よくある質問
Excelで正規乱数(正規分布に従う乱数)を作るには?
=NORM.INV(RAND(), mean, sd) を使います。たとえば平均1,000、標準偏差200なら =NORM.INV(RAND(), 1000, 200) です。再計算(F9)のたびに新しい値が出ます。数式を列の下へコピーすれば多数の値が得られ、その平均は指定した平均に、標準偏差は指定した標準偏差に近づきます。
NORM.INVとNORM.DISTの違いは何ですか?
2つは逆の問いに答えます。NORM.DIST(x, mean, sd, TRUE) は値を受け取り、それを下回る確率を返します。NORM.INV(p, mean, sd) は確率を受け取り、その割合の結果が下回る値を返します。平均1,000、標準偏差200の需要では、NORM.INV(0.9, 1000, 200) が1,256で、その値を NORM.DIST に入れると0.9が返ります。
正規分布のP90はどう求めますか?
P90は、平均に標準偏差の1.2816倍を足した値で、Excelでは =NORM.INV(0.9, mean, sd) です。平均1,000、標準偏差200なら1,256になります。P10は平均から同じだけ下の744、P95は1,329です。これらは1つの入力のパーセンタイルです。複数の入力の合計のP90は、パーセンタイルが足し合わせられないので、シミュレーションで求めます(P50、P80、P90を参照)。
正規分布は負の値を出すことがありますか?
あります。正規分布は両方向に限りなく広がるので、一定の確率で必ず負の値が出ます。平均がゼロより標準偏差で約4つ分以上高ければ、その確率はごくわずかです。標準偏差が平均の半分なら2.3%です。負にならない量には、分布を0で切断するか、対数正規分布かガンマ分布を使います。
関連ページ
- ガイド
確率分布の選び方:モンテカルロシミュレーションで使う分布はどれか?
2つの質問で、適した確率分布が見つかります。PERT分布、三角分布、正規分布、対数正規分布、ワイブル分布、ポアソン分布、二項分布、ベータ分布などについて、使いどころとExcelの数式を紹介します。 - ガイド
Excelで対数正規分布の乱数を作る:LOGNORM.INV、パラメーター、使いどころ
対数正規分布は、正の値だけを取り、右に長い裾を持つ分布です。LOGNORM.INVのパラメーターの意味、平均と標準偏差からの求め方、使いどころを解説します。 - 公差積み上げ
公差積み上げ解析:最悪ケース、RSS、モンテカルロのどれを使うか?
ハウジングと5個の部品の例です。最悪ケースではすきまが0.120 mmまで縮む可能性があるのに対し、RSSでは0.4 mm未満が3.29%、20,000回のモンテカルロシミュレーションでは3.21%です。
xellstormは、Excelモデル向けのブラウザー型モンテカルロシミュレーションツールです。アドインは不要で、Excelファイルがパソコンの外に出ることはありません。