Excel 三角分配:公式、平均值,以及與 PERT 的比較
一句話說:把低值、最可能值與高值變成機率,最簡單的做法。機率直線上升到最可能值,再直線下降到高值。
三角分配把三點估算轉成機率:從最小值到最可能值呈直線上升,再呈直線下降到最大值。平均值是 (最小 + 最可能 + 最大) / 3:成本估算為 80、100 與 140(單位:千美元)時,平均值是 106.7,P90 是 124.5。Excel 沒有三角分配函數,但一個含 RAND() 與 SQRT 的公式就能抽樣。
三角分配是什麼
三個數字決定它:最小值,低於它不會有任何結果;最大值,高於它也不會有;還有最可能值,也就是密度的峰值。三者之間,密度是兩條直線,所以要把專家給的低值、最可能值與高值變成完整的結果範圍,這是最簡單的做法。
公式:平均值、標準差、中位數
| 項目 | 公式與範例 |
|---|---|
| 平均值 | (min + ml + max) / 3 = 320 / 3 = 106.7 |
| 標準差 | √((min² + ml² + max² − min × ml − min × max − ml × max) / 18) = 12.5 |
| 低於最可能值的機率 | (ml − min) / (max − min) = 20/60 = 33.3% |
| 中位數(P50) | 105.4 |
最可能值較靠近最小值時,長的一側在它的上方:三分之二的結果高於最可能成本,平均值 106.7 也遠高於它。這就是把最可能值加總的預算,通常偏低的原因。
Excel 中的三角分配
Excel 的 RAND() 給出 0 到 1 之間的亂數 u,再用公式轉成三角分配的值:u 小,值就靠近最小值;u 大,值就靠近最大值,間隔的安排,讓範圍內每一段都分到該有的抽樣數。u 小於最可能值下方所占的比例時,值是 min + √(u × (max − min) × (ml − min));否則是 max − √((1 − u) × (max − min) × (max − ml))。公式用到兩次 u,所以 u 要放在獨立的儲存格:兩個各自的 RAND() 會得到兩個不同的數字,分配也會錯。檔案裡,u 在 I7,抽樣值在 J7:
| 儲存格 | 公式 | 值 |
|---|---|---|
| 亂數 u (I7) | =RAND() | |
| 抽樣值 (J7) | =IF(I7<(F7-D7)/(H7-D7), | |
| 平均值 (K7) | =(D7+F7+H7)/3 | 106.7 |
| P10 (L7) | =IF(0.1<(F7-D7)/(H7-D7), | 91.0 |
| P90 (M7) | =IF(0.9<(F7-D7)/(H7-D7), | 124.5 |
核對數字:理論值,對照 Excel 與 xellstorm 各 10,000 個抽樣值
| 理論值 | Excel, RAND() | xellstorm | |
|---|---|---|---|
| 平均值 | 106.7 | 106.7 | 106.7 |
| 標準差 | 12.5 | 12.6 | 12.5 |
| P10 | 91.0 | 90.6 | 91.0 |
| P50(中位數) | 105.4 | 105.6 | 105.4 |
| P90 | 124.5 | 124.7 | 124.5 |
Excel 用 RAND() 完全隨機抽樣;xellstorm 把抽樣值平均分散在整個範圍(拉丁超立方抽樣),所以統計量更貼近理論值。
把 u 換成固定的機率,不用模擬就能得到百分位數:0.9 得到 P90,也就是 124.5。表中的兩組抽樣值,都重現了理論值。
三角分配與 PERT:三個數字相同,兩端的權重不同
PERT 分配用同樣的最小值、最可能值與最大值,但在其間畫出平滑的曲線。檔案裡兩者都有,在第 7 列與第 8 列:
圖怎麼看:線愈高,下方的值愈可能。兩種形狀都從最小值開始,在最可能值達到峰值,到最大值結束;三角分配在兩端都比較高。
| 三角分配 | PERT | |
|---|---|---|
| 平均值 | 106.7 | 103.3 |
| 標準差 | 12.5 | 11.1 |
| P10 | 91.0 | 89.2 |
| P90 | 124.5 | 118.7 |
| 高於 134 的機率 | 1.5% | 0.1% |
三角分配在極限附近保有較多權重:成本高於 134 的機率是 1.5%,PERT 則是 0.1%。它的平均值把最可能值算一次,不是四次,所以估算偏斜時平均值較高(106.7 對 103.3),P90 也較高(124.5 對 118.7)。兩者沒有誰比較正確,只是對同樣三個數字有不同的解讀。
- 選三角分配:接近上下限的值也很實際,或想從同樣的估算得到較保守的分散程度。
- 選 PERT:最可能值是最有把握的數字,而上下限是預期不會碰到的界限。
- 兩者都不選:低值與高值不是上下限,而是十次有一次的情況(P10 與 P90)。若把它們當成最小與最大,兩端之外 20% 的結果就漏掉了;改為對百分位數配適分配,或選由百分位數定義的三角分配。
在 xellstorm 設定三角分配
- 把儲存格設為輸入,在「分配」步驟選三角分配。輸入最小、最可能與最大;「平均值」與「P10 – P90」欄會隨輸入更新。
- 若低值與高值是 P10 與 P90,改選由百分位數定義的三角分配,把它們填入下限與上限,下限 % 設 10、上限 % 設 90;或選取該輸入,用側邊面板的「由估計值」配適分配。並非每組百分位數都能剛好配成三角分配;面板會顯示最接近的那個差多少。
- 要比較同一組估算的不同解讀,新增一個把輸入改成 PERT 的情境。情境與基準情境用同樣的亂數,所以差異只來自形狀。
增益集的模型可轉換 RiskTriang、VoseTriangle 與 PsiTriangular,RiskTrigen 則轉成由百分位數定義的三角分配。
常見問題
Excel 怎麼產生三角分配的亂數?
在一個儲存格放亂數 =RAND(),再在另一個儲存格用反函數公式把它轉成抽樣值。亂數在 I7、最小值在 D7、最可能值在 F7、最大值在 H7 時:=IF(I7<(F7-D7)/(H7-D7),D7+SQRT(I7*(H7-D7)*(F7-D7)),H7-SQRT((1-I7)*(H7-D7)*(H7-F7)))。本頁的 Excel 檔案已備好,可直接複製。
三角分配的平均值是多少?
平均值是 (最小 + 最可能 + 最大) / 3。估算為 80、100 與 140 時,是 320 / 3 = 106.7。同樣數字的 PERT,平均值是 (最小 + 4 × 最可能 + 最大) / 6 = 103.3。
三角分配的 P90 怎麼算?
用抽樣公式,把亂數換成 0.9:估算為 80、100 與 140 時,=IF(0.9<(F7-D7)/(H7-D7),D7+SQRT(0.9*(H7-D7)*(F7-D7)),H7-SQRT((1-0.9)*(H7-D7)*(H7-F7))) 得到 124.5。這是單一項目的 P90;幾個項目的總和要用模擬,因為百分位數不能相加。
三角分配與 PERT,哪個比較保守?
同樣三個數字,三角分配分散得更廣,在極限附近有更多權重。估算右偏時,它的平均值與 P90 都比較高,所以是較謹慎的解讀。估算對稱時,兩者平均值相同,三角分配則是兩側都更寬。
相關內容
- 指南
機率分配怎麼選?蒙地卡羅模型的分配選擇指南
兩個問題找出合適的機率分配:PERT、三角、常態、對數常態、韋伯、卜瓦松、二項、貝他等分配,並附各自的用途與 Excel 公式。 - 指南
Excel 的 PERT 分配:公式、平均值與使用時機
PERT 是從最小值到最大值的貝他分配,平均值為 (最小 + 4 × 最可能 + 最大)/6。附 Excel 的 BETA.INV 公式,以及 PERT 與三角分配的比較。 - 指南
Excel 均勻分配:在兩個數值之間產生亂數
均勻分配讓最小值與最大值之間每個值的可能性都相同。附 Excel 公式、整數用的 RANDBETWEEN、平均值,以及何時只知道範圍就夠用。
xellstorm 是在瀏覽器中執行的 Excel 模型蒙地卡羅模擬工具:免裝增益集,Excel 檔案也不會離開您的電腦。