機率分配怎麼選?蒙地卡羅模型的分配選擇指南
依對這個不確定數字的了解來選分配,不要看名稱。專家給出最低、最可能與最高值,用 PERT 或三角分配;恆為正、上側有長尾的金額,例如成本或工期,用對數常態分配;對稱的量測值,用常態分配;失效前的時間,用韋伯分配;事件發生的次數,用卜瓦松分配;發生與否的事件,用白努利分配;介於 0 與 1 之間的比例,用貝他分配,必須加總為整體的多個比例,則用狄利克雷分配;一段期間內的最大值,用甘貝爾分配或 GEV;損失的總額(發生幾次、每次多大),用複合分配;手上有過往資料,就配適一個分配。下方的分配選擇器只問一兩個問題,就會指出該用哪一種;xellstorm 共提供 52 種分配,含自訂數值表。
找出適用的分配
選出最貼近這個不確定數字的描述;一個答案不夠時,下方會再展開第二個問題。
常見分配一覽
參數名稱與 xellstorm 的分配選單相同。每個分配還可以加上截斷(只保留兩個上下限之間的值)與平移。
| 分配 | 描述對象 | 參數 | Excel 抽樣 |
|---|---|---|---|
| PERT | 有上下限、最可能值最有把握的專家估算 | 最小, 最可能, 最大 | BETA.INV(RAND(), α, β, min, max) |
| 三角分配 | 有上下限、但接近上下限的值也有可能的專家估算 | 最小, 最可能, 最大 | IF 搭配 SQRT,見指南 |
| 均勻分配 | 沒有哪個值較可能的範圍 | 最小, 最大 | min+(max-min)*RAND() |
| 常態分配 | 對稱的變動:量測值、誤差、許多零件的總和 | 平均值, 標準差 | NORM.INV(RAND(), mean, sd) |
| 對數常態分配 | 上側有長尾的正值:成本、損失、工期 | s, scale, loc | LOGNORM.INV(RAND(), LN(median), s) |
| 伽瑪分配 | 正值、右偏;數次等待的總和 | a, scale, loc | GAMMA.INV(RAND(), shape, scale) |
| 貝他分配 | 介於 0 與 1 的比例與比率 | a, b, loc, scale | BETA.INV(RAND(), α, β) |
| 韋伯分配 | 失效前的時間:耗損失效或早期失效 | 形狀, scale, loc | scale*(-LN(1-RAND()))^(1/shape) |
| 指數分配 | 以穩定速率隨機發生的事件之間的時間 | scale, loc | -mean*LN(1-RAND()) |
| 卜瓦松分配 | 以平均速率在一段期間內發生的事件數 | 平均值 | POISSON.DIST 與 COUNTIF 組成的表,見指南 |
| 負二項分配 | 比卜瓦松分配更不平均的計數:需求、成群出現的瑕疵 | n, p | NEGBINOM.DIST 與 COUNTIF 組成的表 |
| 白努利分配 | 事件發生(1)或不發生(0) | p | IF(RAND()<p, 1, 0) |
| 二項分配 | n 次嘗試中結果為「是」的次數 | n, p | BINOM.INV(n, p, RAND()) |
| 整數均勻分配 | 範圍內的整數,機率都相同 | 最小值, 最大值 | RANDBETWEEN(low, high) |
| 離散機率表 | 少數幾個可能的值及其機率 | 數值與機率的表 | 以累積機率查表 |
| 由百分位數定義的三角分配 | 以低與高百分位數(而非上下限)設定的三角分配 | 下限, 最可能, 上限, 下限 %, 上限 % | – |
| t 分配 | 對稱、厚尾:報酬率、含離群值的誤差 | df, loc, scale | loc+scale*T.INV(RAND(), df) |
| 甘貝爾分配 | 許多值當中的最大值:年度尖峰負載、洪水 | loc, scale | loc-scale*LN(-LN(RAND())) |
| GEV(廣義極值分配) | 許多值當中的最大值,尾端更厚或有上限 | 形狀(c), loc, scale | loc+scale*(1-(-LN(RAND()))^c)/c |
| Metalog | 通過多個百分位數的彈性形狀 | 數值與機率的表 | – |
| 複合分配 | 次數不定、大小各異的事件總額:理賠、損失 | 頻率, 幅度, 自負額, 上限 | – |
| 拼接分配(主體+尾端) | 分界點以下一種分配、以上另一種:主體加上厚尾 | 分界點以下, 分界點以上, 分界點, 下方比例 | – |
| 狄利克雷(總和的分配比例) | 每次試驗加總都等於總和的比例:市占率、預算分配 | 每個儲存格一個 alpha, 總和 | 每個儲存格 GAMMA.INV(RAND(), alpha, 1),再除以它們的和 |
xellstorm 共提供 52 種分配。應用程式的選單列出其中 29 種,另有 23 種收在「更多分配」之下,多半見於為 Excel 增益集建立的模型,xellstorm 匯入時會自動轉換(見從增益集移轉模型)。
Excel 檔案:每種分配的 Excel 公式
本頁的 Excel 檔案每種分配一列:參數、由 RAND() 產生的亂數、抽樣值,以及用公式算出的平均值、P10 與 P90。按 F9,所有抽樣值都會重抽。最後幾欄是同樣的分配設成 xellstorm 輸入,所以一次執行就能把 Excel 與 xellstorm 的抽樣並排比對。本站每份指南,都拿檔案裡的公式對照過 10,000 筆這類抽樣。
| 分配 | 範例與參數 | 平均值 | P10 | P90 |
|---|---|---|---|---|
| 常態分配 | 下一季的需求(件) 平均值 1,000,標準差 200 | 1,000 | 744 | 1,256 |
| 對數常態分配 | 單件理賠的修理費用(美元) 中位數 2,000,ln 的標準差 0.8 | 2,754 | 717 | 5,576 |
| 三角分配 | 單一項目的成本(單位:千美元) 最小 80,最可能 100,最大 140 | 106.7 | 91.0 | 124.5 |
| PERT | 單一項目的成本(單位:千美元) 最小 80,最可能 100,最大 140 | 103.3 | 89.2 | 118.7 |
| 均勻分配 | 單價(美元) 最小 40,最大 60 | 50 | 42 | 58 |
| 韋伯分配 | 幫浦壽命(小時) 形狀參數 1.5,尺度參數 20,000 | 18,055 | 4,462 | 34,874 |
| 指數分配 | 故障間隔時間(小時) 平均值 500 | 500 | 53 | 1,151 |
| 卜瓦松分配 | 一週的客訴件數 平均值 4 | 4 | 2 | 7 |
| 負二項分配 | 一週的訂單數,變動較大 成功次數 4,機率 0.5 | 4 | 1 | 8 |
| 白努利分配 | 風險發生(1)或不發生(0) 機率 0.3 | 0.3 | 0 | 1 |
| 二項分配 | 一批 50 件中的不良品數 試驗次數 50,機率 0.04 | 2 | 0 | 4 |
| 貝他分配 | 續約的客戶比例 α 8,β 2 | 80.0% | 63.2% | 93.9% |
| 伽瑪分配 | 連續完成三件維修所需的天數 形狀參數 3,尺度參數 2 | 6.0 | 2.2 | 10.6 |
常見錯誤
- 成本或工期用常態分配。常態分配左右對稱,可能出現負值;成本與工期超支的幅度,通常大於節省的幅度。
- 把 P10 與 P90 當成最小與最大。這樣會截掉五分之一的結果。改為對百分位數配適。
LOGNORM.INV的參數填錯。它要的是取對數後的平均值與標準差,不是原始數值的。- 把機率 × 影響金額當固定數字。風險不是完全沒有成本,就是付出全額;白努利分配乘上影響金額能保留這一點,期望值則不行。
- 把會一起變動的輸入當成獨立抽樣。價格與數量,或共用同一班人力的各工種成本,常常一起上升;要設定相關性,否則總額的分散程度會偏窄。
- 百分位數直接相加。幾個項目的 P90 加起來,不等於總和的 P90;要模擬總和(見 P50、P80 與 P90)。
各分配的指南
- 指南
Excel 的 PERT 分配:公式、平均值與使用時機
PERT 是從最小值到最大值的貝他分配,平均值為 (最小 + 4 × 最可能 + 最大)/6。附 Excel 的 BETA.INV 公式,以及 PERT 與三角分配的比較。 - 指南
Excel 三角分配:公式、平均值,以及與 PERT 的比較
三角分配把最小、最可能與最大值轉成呈直線的機率。附 Excel 抽樣與百分位數的公式、平均值,以及三角分配與 PERT 的比較。 - 指南
Excel 均勻分配:在兩個數值之間產生亂數
均勻分配讓最小值與最大值之間每個值的可能性都相同。附 Excel 公式、整數用的 RANDBETWEEN、平均值,以及何時只知道範圍就夠用。 - 指南
Excel 常態分配:NORM.INV、平均值與標準差
在 Excel 用 NORM.INV(RAND(), mean, sd) 從常態分配抽樣,讀出 P10 與 P90,並看鐘形曲線什麼時候適用、什麼時候不適用。 - 指南
Excel 對數常態分配:LOGNORM.INV、參數與使用時機
對數常態分配恆為正,右側有長尾。說明 LOGNORM.INV 的參數怎麼用、怎麼從平均值與標準差換算,以及何時適用。 - 指南
Excel 伽瑪分配:等待時間、總和與 GAMMA.INV
伽瑪分配描述恆為正、右偏的量,例如數個步驟的總時間。說明形狀參數與尺度參數、Excel 的 GAMMA.INV 與 GAMMA.DIST,以及伽瑪與對數常態分配的比較。 - 指南
Excel 貝他分配:不確定的比例、比率與百分比
貝他分配描述介於 0 與 1 之間的不確定比例或比率。說明 alpha 與 beta 的意義、如何由平均值與標準差設定,以及 Excel 的 BETA.INV。 - 指南
Excel 韋伯分配:形狀參數、尺度參數與失效時間
韋伯分配用來描述失效時間:形狀參數小於 1 是早期失效,等於 1 是隨機失效(指數分配),大於 1 是耗損失效。附 Excel 公式、B10 壽命與指數分配的特例。 - 指南
Excel 卜瓦松分配:計數事件,以及何時改用負二項分配
卜瓦松分配用來計算一段期間內、以已知平均速率發生的事件數。附 POISSON.DIST、沒有反函數時在 Excel 產生卜瓦松隨機計數的做法,以及變動更大的計數該用的負二項分配。 - 指南
Excel 二項分配與白努利分配:發生與否,以及 n 次中發生幾次
白努利分配是單一個發生與否的事件,例如風險會不會發生;二項分配則計算 n 次嘗試中「是」的次數。附 Excel 公式、BINOM.DIST、BINOM.INV 與風險登記冊。
常見問題
沒有資料時,該用哪種分配?
請了解該數量的人給出最低、最可能與最高值,再用 PERT 或三角分配。若他們說的低與高是「十次有一次」的情況,不是上下限,就改成對這些百分位數配適分配。最後,把這些數字代表的意義(平均值、P10 與 P90)拿回去跟給數字的人核對。
估算成本,哪種分配最適合?
每個成本項目依三點估算,用 PERT 或三角分配;沒有明確的最大值時,用對數常態分配。可能發生也可能不發生的風險,用白努利分配乘上影響金額。總額則靠模擬得出,不靠估算:見專案應變準備金範例。
作業工期該用哪種分配?
依各項作業的三點估算用 PERT 或三角分配,或對過往工期配適對數常態分配。兩者的上側都能有長尾。時程要模擬整個作業網路:見時程風險分析。
保險理賠或作業風險損失,該用哪種分配?
把損失頻率(一段期間發生幾次)與損失幅度(每次多大)分開建模,再用複合分配加總:次數用卜瓦松或負二項分配,大小用對數常態、伽瑪或柏拉圖分配。大額損失的尾端比一般損失更厚時,就在門檻值以上接一個廣義柏拉圖分配,與門檻值以下的主體拼接起來。分開建模,各部分都能拿自己的資料檢驗,自負額或上限也能套用到每一筆損失。
加總為 100% 的比例,怎麼模擬?
用狄利克雷分配一起抽樣,不要每個儲存格各用一個分配:各自獨立抽出的比例,很少剛好加總為 100%。在 Excel 中,每個儲存格用 GAMMA.INV(RAND(), alpha, 1) 抽樣,再把每個抽樣值除以它們的和;在 xellstorm 中,則為這個儲存格範圍選狄利克雷(總和的分配比例)。
怎麼知道分配適不適合我的資料?
多配適幾種,再比較。xellstorm 的「由資料」依 AIC 為配適結果排名:AIC 獎勵配得好的分配,參數多餘則扣分,並列出每個分配的適合度檢定。也要拿直方圖對照曲線,特別是影響決策的那一端,並留意樣本很小的情形。
分配的選擇會大幅改變結果嗎?
對兩端的影響大於中間。同樣三個數字或同樣平均值的兩種形狀,平均值常常相近,P90 與超出預算的機率卻不同。這點重要時,把兩者當成情境,用同樣的亂數執行並比較。
相關內容
- 指南
Excel 蒙地卡羅模擬怎麼做?有無增益集都行
Excel 模型做蒙地卡羅模擬的三種方式:RAND() 加資料表、增益集,或免增益集的瀏覽器工具。附 PERT 公式。 - 指南
P50、P80、P90 是什麼意思?預算該採用哪一個
P80 是 80% 的模擬結果都不會超過的成本。營建專案 6 個成本項目的 P80 加總為 2,843,但這些項目加總後的 P80 是 2,756(單位:千美元)。 - 指南
從 @RISK、ModelRisk 或 Analytic Solver 移轉模型
xellstorm 能讀取 @RISK、ModelRisk 與 Analytic Solver 的 164 個分配函數,並列出轉換了哪些、哪些公式沒轉換及原因。
xellstorm 是在瀏覽器中執行的 Excel 模型蒙地卡羅模擬工具:免裝增益集,Excel 檔案也不會離開您的電腦。