訂單金額大多落在一百多元,偶爾冒出一張三百多的;客服電話一通接一通,下一通什麼時候來沒人知道;工廠的風扇用了一陣子就開始壞。這三種資料的形狀都不是鐘形,硬套常態分布會算歪,今天來整理剛好對應它們的三組函式:LOGNORM.DIST 和 LOGNORM.INV、EXPON.DIST、WEIBULL.DIST,連同各自的舊名。
我個人最常用的是指數分布,因為「平均幾分鐘一次」這種資料很常見,一個參數就夠了。對數常態拿來看訂單金額、薪水這類偏右的資料,Weibull 則是在算設備壽命的時候才會翻出來。常態分布的 NORM.DIST 在 常態分布函式 講過,Gamma 與 Beta 在 Gamma 與 Beta 分布,這篇都不重複。
怎麼選
| 資料長什麼樣 | 分布 | 函式 |
|---|---|---|
| 金額、薪水這種不會小於 0、偏右、有少數特大值 | 對數常態 | LOGNORM.DIST、LOGNORM.INV |
| 事件之間的間隔,過去等多久不影響接下來 | 指數 | EXPON.DIST |
| 設備壽命,用越久越容易壞(或前期容易壞) | Weibull | WEIBULL.DIST |
舊名 LOGNORMDIST、LOGINV、EXPONDIST、WEIBULL 各有一節。
對數常態
對數常態的意思是「取完 LN 之後是常態分布」。所以丟進函式的 mean 和 standard_deviation,是 LN(資料) 的平均與標準差,不是原始金額的平均與標準差。這是最容易填錯的地方。
先放 10 張訂單的金額(元),A 欄是金額,B 欄是 LN 之後的值:
| 列 | A(金額) | B(LN 後) |
|---|---|---|
| 2 | 85 | 4.4427 |
| 3 | 132 | 4.8828 |
| 4 | 58 | 4.0604 |
| 5 | 210 | 5.3471 |
| 6 | 96 | 4.5643 |
| 7 | 74 | 4.3041 |
| 8 | 155 | 5.0434 |
| 9 | 320 | 5.7683 |
| 10 | 118 | 4.7707 |
| 11 | 66 | 4.1897 |
B2 填 往下拉到 B11,然後在 F2、F3 放:
F2:LN 之後的平均
=AVERAGE(B2:B11)F3:LN 之後的樣本標準差
=STDEV.S(B2:B11)F2 是 4.7374,F3 是 0.5389。原始金額的平均是 131.4 元;EXP(F2) 約為 114.1314 元,是樣本的幾何平均,也是用這些參數擬合的對數常態分布中位數。它不是這 10 筆原始資料的樣本中位數:排序後中央兩筆是 96 與 118,MEDIAN 的結果為 107。描述原始資料和描述假設分布時,要分清楚用的是哪一個統計量。
LOGNORM.DIST
算對數常態分布在某個金額以下的累積機率。
語法:
Google 的函式說明只列 x、平均值、標準差三個引數,說明文字是回傳累積分布,沒有列出累積引數。實測第四個引數可以給(下方有說明)。Excel 的 LOGNORM.DIST 則是四個引數都要寫,cumulative 必填,所以上面的 貼到 Excel 要補成 。
- x:金額,要大於 0。
- 平均、標準差:LN 之後的平均與標準差。
先手算。一張 150 元的單:LN(150) = 5.0106,Z 分數 = (5.0106 − 4.7374) ÷ 0.5389 = 0.5072,標準常態在 0.5072 以下的累積機率是 0.6940。再用函式:
訂單在 150 元以下的機率
=LOGNORM.DIST(150, F2, F3)你應該會得到 0.6940。超過 200 元的比例用 1 減:
訂單超過 200 元的機率
=1 - LOGNORM.DIST(200, F2, F3)結果是 0.1489。換句話說,LOGNORM.DIST(x, F2, F3) 跟 NORM.DIST(LN(x), F2, F3, TRUE) 是同一個數字,後者你在常態分布那篇看過了。
第四個累積參數省略或 TRUE 算累積機率,FALSE 算密度。LOGNORM.DIST(2,0,1) 與第四參數 TRUE 都為 0.7558914042,改 FALSE 為 0.1568740193。舊名 LOGNORMDIST 仍用三參數,多給第四參數回 #N/A。
LOGNORM.INV
LOGNORM.DIST 的反向:給累積機率,找出對應的金額。
語法:
九成的訂單在多少元以下
=LOGNORM.INV(0.9, F2, F3)結果是 227.6771。手算:Z 分數 1.2816,EXP(4.7374 + 1.2816 × 0.5389) = EXP(5.4281) = 227.7。所以大約 228 元以下涵蓋九成的訂單。
機率填 0.5 就是這個擬合分布的中位數, 是 114.1314,跟上面 EXP(F2) 一樣。
機率要在 0 到 1 之間,不含頭尾,否則會回 #NUM!。
LOGNORMDIST
LOGNORM.DIST 的舊名,同樣算累積機率。
語法:
舊名寫法
=LOGNORMDIST(150, F2, F3)結果同樣是 0.6940。
LOGINV
LOGNORM.INV 的舊名。
語法:
舊名寫法
=LOGINV(0.9, F2, F3)結果同樣是 227.6771。
指數分布
指數分布描述「兩件事之間隔多久」,只有一個參數 lambda,是速率,每單位時間發生幾次。客服電話平均每 4 分鐘一通,lambda = 1 ÷ 4 = 0.25 通 / 分鐘。
注意跟 Gamma 的 beta 剛好相反:EXPON.DIST 的 lambda 是速率,Gamma 的 beta 是間隔。
EXPON.DIST
算在某個時間內發生的累積機率,或者密度。
語法:
- x:經過的時間,不能是負數。
- lambda:速率,要大於 0。
- 累積:TRUE 是「x 以內發生的機率」,FALSE 是密度。
先手算。2 分鐘內來電的機率是 1 − e^(−0.25 × 2) = 1 − e^(−0.5) = 1 − 0.6065 = 0.3935。
下一通電話 2 分鐘內來的機率
=EXPON.DIST(2, 0.25, TRUE)你應該會得到 0.3935。超過 6 分鐘都沒來電的機率:
6 分鐘都沒電話的機率
=1 - EXPON.DIST(6, 0.25, TRUE)結果是 0.2231,也就是 e^(−1.5)。想知道 9 成的間隔在幾分鐘內,這個函式沒有反向版本,自己反推:x = −LN(1 − 機率) ÷ lambda:
九成的來電間隔在幾分鐘內
=-LN(1 - 0.9) / 0.25結果是 9.2103 分鐘。
FALSE 是密度, 是 0.1516,用來畫曲線。
指數分布有個很反直覺的特性:已經等了多久不影響接下來。已經 6 分鐘沒電話,接下來 2 分鐘內來電的機率還是 0.3935:
已等 6 分鐘,接下來 2 分鐘內來電的機率
=(EXPON.DIST(8, 0.25, TRUE)-EXPON.DIST(6, 0.25, TRUE)) /
(1-EXPON.DIST(6, 0.25, TRUE))結果是 0.3935,跟剛開始等的時候一模一樣。這是在說電話來得跟過去無關。如果你的資料不是這樣(例如設備越用越容易壞),就該換下面的 Weibull。
EXPONDIST
EXPON.DIST 的舊名,參數一樣。
語法:
舊名寫法
=EXPONDIST(2, 0.25, TRUE)結果同樣是 0.3935。
Weibull 分布
Weibull 專門算壽命。兩個參數:形狀 shape 決定「越用越容易壞」還是「前期容易壞」,尺度 scale 是特徵壽命。
- shape 等於 1:壞的機率不隨使用時間變化,就是指數分布。
- shape 大於 1:越用越容易壞(磨損),一般機械設備屬於這類。
- shape 小於 1:前期容易壞,後面反而穩定(早夭),電子零件常見。
接下來用一批工廠風扇做例子,shape = 1.5、scale = 2000 小時。這兩個數字是假設的,真實設備要靠故障紀錄去估。
WEIBULL.DIST
算 Weibull 分布的累積機率或密度。
語法:
- x:使用時數,不能是負數。
- shape、scale:兩個參數,都要大於 0。
- 累積:TRUE 是「x 小時以內壞掉的機率」,FALSE 是密度。
先手算。1000 小時內壞掉的機率是 1 − e^(−(1000 ÷ 2000)^1.5) = 1 − e^(−0.3536) = 0.2978。
使用 1000 小時以內壞掉的機率
=WEIBULL.DIST(1000, 1.5, 2000, TRUE)你應該會得到 0.2978。
x 剛好等於 scale 的時候,結果永遠是 1 − e^(−1) = 0.6321,不管 shape 是多少,所以 scale 也叫「63.2% 壽命」:
使用 2000 小時(等於 scale)以內壞掉的機率
=WEIBULL.DIST(2000, 1.5, 2000, TRUE)結果是 0.6321。撐過 1500 小時的機率(可靠度)用 1 減:
用到 1500 小時還沒壞的機率
=1 - WEIBULL.DIST(1500, 1.5, 2000, TRUE)結果是 0.5223。
維修會最常問的是「保固要給多久,壞的比例才不超過 10%」。Weibull 一樣沒有反向函式,自己反推:x = scale × (−LN(1 − 機率))^(1 ÷ shape)。
10% 的風扇壞掉的時數(B10 壽命)
=2000 * (-LN(1 - 0.1)) ^ (1 / 1.5)結果是 446.1511 小時,也就是 10% 的風扇在 446 小時左右就壞了。中位數是 ,得到 1566.4395 小時。
平均壽命 = scale × GAMMA(1 + 1 / shape),這時候 GAMMA 就派上用場了:
平均壽命(小時)
=2000 * GAMMA(1 + 1 / 1.5)結果是 1805.4906。平均比中位數高,因為少數特別耐用的風扇把平均拉上去。
FALSE 是密度, 是 0.000372,這是失效機率密度(不是瞬時失效率),一樣只用來畫曲線。
shape 改成 1 就是指數分布。 是 0.3935,等於平均間隔 4 的 EXPON.DIST(2, 0.25, TRUE)。shape 改成 3 的話,磨損會集中在接近 scale 的時候, 是 0.9658,三千小時幾乎都壞光了。
WEIBULL
WEIBULL.DIST 的舊名,參數一樣。
語法:
舊名寫法
=WEIBULL(1000, 1.5, 2000, TRUE)結果同樣是 0.2978。
三個分布放在一起看
同樣是算「某個值以內的機率」,三者差在資料長相:
| 資料 | 函式 | 結果 |
|---|---|---|
| 訂單 150 元以下 | LOGNORM.DIST(150, F2, F3) | 0.6940 |
| 2 分鐘內來電 | EXPON.DIST(2, 0.25, TRUE) | 0.3935 |
| 1000 小時內壞掉 | WEIBULL.DIST(1000, 1.5, 2000, TRUE) | 0.2978 |
這些結果都建立在「資料真的長這樣」的前提上。我自己會先拿真實資料畫個直方圖看形狀,再決定套哪個分布。接下來試著把自己的訂單或來電紀錄丟進去算算看吧。
接下來可以
相關文章
查看所有文章常態分布函式全整理:NORM.DIST、NORM.INV、STANDARDIZE 與標準常態
用 10 家分店的日杯數,整理 NORM.DIST、NORM.INV、NORM.S.DIST、NORM.S.INV、STANDARDIZE、GAUSS、PHI 與舊名 NORMDIST 等 11 個常態分布函式,附語法、手算過程與對得上課本表的數值。
指數、對數與階乘:EXP、LN、LOG、FACT、GAMMALN 與 SERIESSUM
EXP、LN、LOG、LOG10 的指數對數家族,加上 FACT、FACTDOUBLE、MULTINOMIAL、GAMMALN、SQRTPI、SUMSQ、SERIESSUM、ERF、ERFC 等數學特殊函式。用連續複利和幾年翻倍當實例。
留言討論
共 0 則留言
