Excel 常態分配:NORM.INV、平均值與標準差
一句話說:鐘形曲線。多數結果落在平均值附近,離平均值愈遠愈少見,左右兩側一樣。
常態分配描述一個以平均值為中心、上下對稱變動的量,離散程度由標準差決定。在 Excel 中,=NORM.INV(RAND(), mean, sd) 可以抽出一個值。以平均 1,000 件、標準差 200 件的需求為例,P10 是 744,P90 是 1,256,約 95% 的結果落在兩個標準差之內,也就是 600 到 1,400。
常態分配是什麼
常態分配就是鐘形曲線:多數結果靠近平均值,離平均值愈遠愈少,兩側左右對稱。兩個數字就能完整決定它:平均值決定中心,這個中心同時也是中位數與最可能值;標準差決定寬度,約三分之二的結果落在平均值上下一個標準差之內。
圖怎麼看:每根長條是 10,000 個模擬值中,落在那一段的個數;線條是理論曲線。長條愈高,值落在那裡的次數愈多。虛線標出 P10 與 P90:十個結果裡有八個落在兩者之間。
| 範圍 | 需求 | 結果占比 |
|---|---|---|
| 平均值 ± 1 個標準差 | 800 – 1,200 | 68.3% |
| 平均值 ± 2 個標準差 | 600 – 1,400 | 95.4% |
| 平均值 ± 3 個標準差 | 400 – 1,600 | 99.7% |
百分位數也由這兩個數字決定:P90 在平均值之上 1.2816 個標準差,P10 在平均值之下同樣的距離,所以有 80% 的結果落在 744 與 1,256 之間。
Excel 中的常態分配
NORM.INV(probability, mean, standard_deviation) 回傳一個值,使指定比例的結果落在它之下。機率固定時,得到的是百分位數;以 RAND() 當機率,就是隨機抽樣,每次工作表重新計算都會抽到新的值。本頁的 Excel 檔案把亂數放在獨立的儲存格,看得出每個抽樣值來自哪個亂數;在單一儲存格裡,抽樣公式是 =NORM.INV(RAND(),D5,F5)。
| 儲存格 | 公式 | 值 |
|---|---|---|
| 亂數 u (I5) | =RAND() | |
| 抽樣值 (J5) | =NORM.INV(I5, | |
| 單一儲存格的抽樣 | =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 仍可使用。一次抽樣只是一個可能的季度;要看不確定性如何影響利潤或庫存水準,模型需要數千次抽樣,這就是蒙地卡羅模擬的做法(見 Excel 蒙地卡羅模擬)。
常態分配適用的情形
- 目標值上下的量測值。加工尺寸、充填重量與量測誤差,都在標稱值上下對稱變動,公差堆疊範例就是如此。
- 許多獨立部分的總和。把許多互不影響的小不確定性加起來,不論每一部分是什麼形狀,總和看起來都像鐘形曲線。統計上稱為中央極限定理。
- 成熟產品的需求,標準差遠小於平均值,如訂購量範例的需求。
不適用的情形
常態分配沒有下限:有一定的機率得到負值。本頁的需求,這個機率可以忽略;但標準差若是 500(平均值的一半),就有 2.3% 的抽樣值會是負的需求。對不能為負、又很分散的量,請改用對數常態分配或伽瑪分配,或把常態分配截斷在 0。
它也是對稱的。成本與工期超支的幅度,通常大於節省的幅度,要表現這種偏態,得用 PERT、三角分配或對數常態分配。而且極端值在它身上極少出現:離平均值超過三個標準差的值幾乎不會發生,會低估價格與報酬率的大幅波動。要讓極端值多出現一些,可用 t 分配(Student's t)。
在 xellstorm 設定常態分配
- 開啟檔案,點選沒把握的儲存格,選「設為輸入」。
- 在「分配」步驟選常態分配,輸入平均值與標準差。執行前,「平均值」與「P10 – P90」欄就會顯示這兩個數字代表什麼。
- 若習慣用低值、典型值與高值,而不是標準差來想,就選取該輸入,用側邊面板的「由估計值」:輸入 P10、P50 與 P90,選常態分配。有過往數值時,「由資料」會對它們配適常態與其他分配,並排出名次。
- 要讓抽樣值維持在 0 以上,開啟參數下方的「截斷/平移/縮放」,把截斷下限設為 0。
已經用 =NORM.INV(RAND(), mean, sd) 抽樣的 Excel 檔案,不必改寫:「由檔案匯入」會把這樣的儲存格轉成常態輸入,平均值與標準差仍連結到原來的儲存格。為增益集建立的模型,也能用同樣方式轉換 RiskNormal、VoseNormal 與 PsiNormal。
常見問題
Excel 怎麼產生常態分配的亂數?
用 =NORM.INV(RAND(), mean, sd),例如平均 1,000、標準差 200 時,寫成 =NORM.INV(RAND(), 1000, 200)。每次重新計算(F9)都會抽出新的值。把公式往下複製一欄,就有許多抽樣值;它們的平均會趨近輸入的平均值,標準差也趨近輸入的標準差。
NORM.INV 與 NORM.DIST 有什麼不同?
兩者回答相反的問題。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。這些都是單一輸入的百分位數;幾個輸入總和的 P90 需要模擬,因為百分位數不能相加(見 P50、P80 與 P90)。
常態分配會出現負值嗎?
會。常態分配向兩個方向無限延伸,所以一定有某個機率出現負值。平均值高出 0 超過約四個標準差時,這個機率極小;標準差是平均值的一半時,機率是 2.3%。不能為負的金額,請把分配截斷在 0,或改用對數常態分配或伽瑪分配。
相關內容
- 指南
機率分配怎麼選?蒙地卡羅模型的分配選擇指南
兩個問題找出合適的機率分配:PERT、三角、常態、對數常態、韋伯、卜瓦松、二項、貝他等分配,並附各自的用途與 Excel 公式。 - 指南
Excel 對數常態分配:LOGNORM.INV、參數與使用時機
對數常態分配恆為正,右側有長尾。說明 LOGNORM.INV 的參數怎麼用、怎麼從平均值與標準差換算,以及何時適用。 - 公差堆疊
公差堆疊分析:最差情況、RSS 還是蒙地卡羅?
一個外殼加 5 個零件:最差情況下間隙可縮到 0.120 mm;RSS 預測有 3.29% 的間隙小於 0.4 mm,20,000 次蒙地卡羅試驗得到 3.21%。
xellstorm 是在瀏覽器中執行的 Excel 模型蒙地卡羅模擬工具:免裝增益集,Excel 檔案也不會離開您的電腦。