Excel 的 PERT 分配:公式、平均值與使用時機
PERT 分配把三點估算(最小、最可能、最大)轉成從最小值拉伸到最大值的貝他分配,平均值為 (最小 + 4 × 最可能 + 最大) / 6。以營建範例的結構項目為例,估算為 760、820 與 1,010(單位:千美元),平均值就是 841.7。Excel 沒有 PERT 函數,但 =BETA.INV(RAND(), α, β, min, max) 能依 PERT 抽樣。
形狀參數為 α = 1 + 4 × (最可能值 − 最小值) / (最大值 − 最小值),β = 1 + 4 × (最大值 − 最可能值) / (最大值 − 最小值)。同樣三個數字的三角分配,平均為 863.3,分散得更廣。
什麼是 PERT 分配
三點估算給出可能的最低值、最可能值與最高值。PERT 分配把這三個數字轉成完整的結果範圍:低於最小值、高於最大值的情形不存在,峰值在最可能值,往兩端平滑下降,所以接近極限的值有可能出現,但很罕見。
數學上它是貝他分配。貝他分配是定義在固定區間上的一族分配,形狀由兩個正數 α(alpha)與 β(beta)決定,這裡把 0 到 1 的區間拉伸成最小值到最大值。PERT 選的 α 與 β,讓峰值落在最可能值上,平均值為 (最小 + 4 × 最可能 + 最大) / 6:最可能值算四次,兩端極限各算一次。權重 4 來自 PERT(計畫評核術,Program Evaluation and Review Technique),這是 1950 年代末為美國海軍北極星飛彈計畫發展的專案時程方法,以 (樂觀 + 4 × 最可能 + 悲觀) / 6 估計每項作業的預期工期。專案經理至今仍稱這個式子為 PERT 估算或三點估算,它就是這個分配的平均值。
| 項目 | 公式與範例 |
|---|---|
| 形狀 α | 1 + 4 × (ml − min) / (max − min) = 1 + 4 × (820 − 760) / 250 = 1.96 |
| 形狀 β | 1 + 4 × (max − ml) / (max − min) = 1 + 4 × (1,010 − 820) / 250 = 4.04 |
| 平均值 | (min + 4 × ml + max) / 6 = 5,050 / 6 = 841.7 |
| 標準差 | √((平均值 − min) × (max − 平均值) / 7) = 44.3 |
| 峰值(眾數) | ml = 820 |
平均值 841.7 高於最可能值,因為範圍往上延伸得較遠(820 到 1,010),往下較近(760 到 820)。成本與工期估算通常都有這種偏態,所以最可能成本的總和會偏樂觀,專案應變準備金範例就是如此。舊的 PERT 標準差速算法 (最大值 − 最小值) / 6 只是近似值:這裡是 41.7,上述公式算出的是 44.3。
Excel 中的 PERT 公式
Excel 沒有 PERT 函數,但 BETA.INV(probability, alpha, beta, A, B) 會算出拉伸到 A 至 B 區間的貝他分配值。假設估算的最小、最可能與最大值分別在儲存格 B2、C2 與 D2:
| 項目 | 公式 |
|---|---|
| 隨機抽樣值 | =BETA.INV(RAND(), 1+4*(C2-B2)/(D2-B2), 1+4*(D2-C2)/(D2-B2), B2, D2) |
| 平均值(在 E2) | =(B2+4*C2+D2)/6 |
| 標準差 | =SQRT((E2-B2)*(D2-E2)/7) |
| P90 | =BETA.INV(0.9, 1+4*(C2-B2)/(D2-B2), 1+4*(D2-C2)/(D2-B2), B2, D2) |
以 RAND() 當機率,每次重新計算都會抽出新的值。機率固定時,BETA.INV 直接回傳該百分位數,不需要模擬:結構項目的 0.9 得到 904.1,0.1 得到 786.9。BETAINV 是 Excel 2007 及更早版本的名稱,引數相同。最小值與最大值必須不同,因為兩個形狀公式都要除以 max − min。
單一項目的百分位數不是總額的百分位數:幾個項目的 P90 加總,不等於它們總和的 P90(見 P50、P80 與 P90)。要得到總額,得靠模擬;在一般 Excel 裡,就是收集數千次重新計算的結果,例如用資料表,Excel 蒙地卡羅模擬有詳細說明。
PERT 與三角分配:同樣三個數字,不同的答案
三角分配用同樣的最小、最可能與最大值,但密度從最小值到最可能值呈直線上升,再呈直線下降到最大值。平均值為 (最小 + 最可能 + 最大) / 3:最可能值只算一次,不是四次,所以較遠的那一端把平均值拉得更遠。以結構項目而言,是 2,590 / 3 = 863.3,比 PERT 的 841.7 高出約 22。標準差 √((最小值² + 最可能值² + 最大值² − 最小值 × 最可能值 − 最小值 × 最大值 − 最可能值 × 最大值) / 18) 為 53.3,PERT 則為 44.3。
要看出這對模型有什麼影響,我們用相同的亂數種子,把營建範例的 5,000 次試驗跑了兩次:一次照原樣,結構為 PERT;另一次把結構改成同樣三個數字的三角分配。其他輸入在兩次執行中抽到的值完全相同,每次試驗為結構抽的亂數也相同,所以兩次的差異只來自這一個分配的形狀。
| 結構項目 | PERT | 三角分配 |
|---|---|---|
| 公式算出的平均值 | 841.7 | 863.3 |
| 抽樣值的平均值 | 841.7 | 863.3 |
| 公式算出的標準差 | 44.3 | 53.3 |
| 抽樣值的標準差 | 44.3 | 53.3 |
| 抽樣值的 P10 | 786.9 | 798.7 |
| 抽樣值的 P90 | 904.1 | 941.1 |
| 超過 PERT 的 P90 的抽樣值 | 10.0% | 23.6% |
抽樣值與公式一致,到顯示的小數位數都相同:平均值分別為 841.7 與 863.3。xellstorm 預設的拉丁超立方抽樣在這裡有幫助:它把每個輸入的範圍分成 5,000 個等機率區段,每段恰好抽一個值。三角分配較寬,P10 到 P90 的範圍寬 142.4,PERT 為 117.2;它有 23.6% 的抽樣值超過 PERT 的 P90(904.1),PERT 自己只有 10% 超過。不過並非兩側都較寬:靠近最小值處 PERT 的抽樣值較多,三角分配的 P10 較高,798.7 對 786.9。最可能值靠近低端時,三角分配會把權重移向較長的高值一側;估算左右對稱時,兩端的權重都會變大。
6 個項目只要動一個,總額就會跟著動。結構改為三角分配後,平均總成本從 2,785 升到 2,806,升幅與該項目平均值的升幅相同(其他抽樣值都一樣);P90 上升 27,超出 2,900 預算的機率從 16.1% 升到 20.8%。
| 總成本 | PERT | 三角分配 |
|---|---|---|
| 平均值 | 2,785 | 2,806 |
| P90 | 2,937 | 2,964 |
| 超出 2,900 預算的機率 | 16.1% | 20.8% |
兩種形狀沒有對錯,只是同樣三個數字的兩種解讀。請有意選擇其中一種,並註明預算依哪一種而定。
何時用 PERT、三角分配或對數常態分配
- PERT 適合專家估算,且最可能值是最有把握的數字:下限與上限已知的成本、工期與數量。平均值接近最可能值,也很少碰到極限,適合最小值與最大值只是預期不會達到的界限。
- 三角分配適合接近極限的值也很實際,或想用同樣三個數字得到較保守的分散程度:偏態的估算中,它把更多權重放在較長的一側,所以平均值與較高的百分位數都較高。它也容易說明,密度只是兩條直線。
- 對數常態分配適合沒有明確最大值的情形:可能超支數倍的成本、損失或工期,以及其他不會低於零、右側有長尾的量。它由一個典型值與一個分散程度決定,不是由極限決定。
- 配適的分配適合這三個數字根本不是極限的情形。專家說的「低」與「高」若是十分之一的情況(P10 與 P90),用它們當最小值與最大值的 PERT,會漏掉其外側 20% 的結果;請改對這些百分位數配適分配。有歷史資料就對資料配適。
圍繞目標值的對稱變異,例如加工尺寸,通常用常態分配,公差堆疊範例就是如此。
在 xellstorm 中輸入 PERT 分配
xellstorm 在瀏覽器計算 Excel 檔案,分配另外保存,所以檔案裡不需要 BETA.INV 公式:
- 開啟檔案,在模型圖上點選沒把握的儲存格,選 Make input。新的輸入預設為 PERT,範圍是該儲存格已儲存值的 90% 到 110%。
- 在 Distributions 步驟,Distribution 欄維持 PERT,輸入最小、最可能與最大值。Shape、Mean 與 P10 – P90 欄會隨輸入即時更新,執行前就能看到這三個數字代表什麼。
- 估算值若已在檔案裡,放在輸入旁、標示為 Min、Likely 與 Max(或 Low、Base 與 High)的儲存格,側邊面板會出現「Link to these cells」:PERT 之後每次執行前都會讀這些儲存格,所以改了工作表,再開啟修改後的檔案並套用已儲存的專案,修改就會帶過來。風險登記冊範例就是這樣運作。
- 低值與高值若是 P10 與 P90,不是極限,就把它們連同當作 P50 的典型值,輸入側邊面板的「Fit from estimates」,形狀選 PERT、Normal、Lognormal 或 Triangular;xellstorm 會找出該形狀中最接近的分配,並顯示配適誤差。「From data」分頁則改用歷史值配適。
- 要比較形狀,新增一個把該輸入的分配改成 Triangular 的情境,輸入同樣三個數字。情境使用相同的隨機抽樣,Results 步驟會拿每個情境和基準情境比較。
專為 @RISK、ModelRisk 或 Analytic Solver 建立的 Excel 檔案常含有 PERT 函數(RiskPert、VosePERT、PsiPert)。「Import from workbook」會把獨立的函數,或乘上一個正乘數再加減至多一個偏移量的函數轉成輸入,VosePERT(E7,1,F7)*D7 就是一例。引數與乘數若用到儲存格,會連同算術運算保持連結,並在套用各情境的固定儲存格之後重新讀取。上方的 BETA.INV 公式也會轉成等效的貝他輸入:兩個形狀計算和最小值、最大值仍連結到儲存格。其中明確的除法仍要求最小值與最大值不同。最小、最可能與最大值全部相等的 PERT 輸入,只會抽出那一個值。
常見問題
PERT 分配的平均值公式是什麼?
PERT 分配的平均值是 (最小 + 4 × 最可能 + 最大) / 6:最可能值加權四次,兩端極限各一次。估算為 760、820 與 1,010 時,結果是 5,050 / 6 = 841.7。專案管理把同一個式子稱為 PERT 估算或三點估算。
PERT 分配的標準差是多少?
PERT 分配的標準差是 √((平均值 − 最小值) × (最大值 − 平均值) / 7)。速算法 (最大值 − 最小值) / 6 只是近似:估算為 760、820 與 1,010 時,速算法得到 41.7,精確值則是 44.3。
PERT 分配與貝他分配相同嗎?
PERT 分配是一種特定的貝他分配:拉伸成從最小值到最大值,形狀參數由最可能值決定,α = 1 + 4 × (最可能值 − 最小值) / (最大值 − 最小值),β = 1 + 4 × (最大值 − 最可能值) / (最大值 − 最小值)。形狀參數不同的貝他分配就不是 PERT。因為是貝他分配,Excel 的 BETA.INV 就能抽樣。
該用 PERT 還是三角分配?
PERT 與三角分配用同樣的最小、最可能與最大值,但三角分配分散得更廣,偏態的估算上還偏向較長的一側:結構估算為 760、820 與 1,010(單位:千美元),三角分配的平均值為 863.3,PERT 則為 841.7。最可能值是最有把握的數字、極限很少碰到時用 PERT;想要較保守的分散程度,或接近極限的值也很實際時,用三角分配。
如何在 Excel 中取得 PERT 分配的 P90?
單一 PERT 輸入的 P90,直接用機率 0.9 的 BETA.INV 就能得到:=BETA.INV(0.9, 1+4*(ml-min)/(max-min), 1+4*(max-ml)/(max-min), min, max),估算為 760、820 與 1,010 時結果是 904.1;本頁 5,000 次模擬抽樣得到 904.1,與它相符,這得益於拉丁超立方抽樣(範圍的每個等機率區段各抽一個值)。若要得到數個不確定項目總額的 P90,就要模擬:百分位數不能相加。
相關內容
- 指南
Excel 蒙地卡羅模擬:有無增益集的做法
Excel 模型做蒙地卡羅模擬的三種方式:RAND() 加資料表、增益集,或免增益集的瀏覽器工具。附 PERT 公式。 - 專案成本與時程
營建專案需要多少應變準備金?
實作範例:營建估算中各項最可能成本,有 94.2% 的模擬結果會超出。用蒙地卡羅模擬估出營建成本應變準備金。 - 指南
P50、P80、P90 是什麼意思?預算該採用哪一個
P80 是 80% 的模擬結果都不會超過的成本。營建專案 6 個成本項目的 P80 加總為 2,843,但這些項目加總後的 P80 是 2,756(單位:千美元)。
xellstorm 是在瀏覽器中執行的 Excel 模型蒙地卡羅模擬工具:免裝增益集,Excel 檔案也不會離開您的電腦。