跳到主要內容跳到頁尾

對數常態、指數與 Weibull 分布函式:訂單金額、來電間隔、設備壽命

8 分鐘閱讀Lv.3 中級摘要與日期

訂單金額偏右、來電間隔、風扇壽命各自適合哪個分布?整理 LOGNORM.DIST、LOGNORM.INV、EXPON.DIST、WEIBULL.DIST 與 LOGNORMDIST、LOGINV、EXPONDIST、WEIBULL 等舊名共 8 個函式,附手算與可對照的數值。

發布 更新

文章目錄

訂單金額大多落在一百多元,偶爾冒出一張三百多的;客服電話一通接一通,下一通什麼時候來沒人知道;工廠的風扇用了一陣子就開始壞。這三種資料的形狀都不是鐘形,硬套常態分布會算歪,今天來整理剛好對應它們的三組函式:LOGNORM.DIST 和 LOGNORM.INV、EXPON.DIST、WEIBULL.DIST,連同各自的舊名。

我個人最常用的是指數分布,因為「平均幾分鐘一次」這種資料很常見,一個參數就夠了。對數常態拿來看訂單金額、薪水這類偏右的資料,Weibull 則是在算設備壽命的時候才會翻出來。常態分布的 NORM.DIST 在 常態分布函式 講過,Gamma 與 Beta 在 Gamma 與 Beta 分布,這篇都不重複。

怎麼選

資料長什麼樣分布函式
金額、薪水這種不會小於 0、偏右、有少數特大值對數常態LOGNORM.DIST、LOGNORM.INV
事件之間的間隔,過去等多久不影響接下來指數EXPON.DIST
設備壽命,用越久越容易壞(或前期容易壞)WeibullWEIBULL.DIST

舊名 LOGNORMDIST、LOGINV、EXPONDIST、WEIBULL 各有一節。

對數常態

對數常態的意思是「取完 LN 之後是常態分布」。所以丟進函式的 mean 和 standard_deviation,是 LN(資料) 的平均與標準差,不是原始金額的平均與標準差。這是最容易填錯的地方。

先放 10 張訂單的金額(元),A 欄是金額,B 欄是 LN 之後的值:

列A(金額)B(LN 後)
2854.4427
31324.8828
4584.0604
52105.3471
6964.5643
7744.3041
81555.0434
93205.7683
101184.7707
11664.1897

B2 填 往下拉到 B11,然後在 F2、F3 放:

Google 試算表公式
fx

F2:LN 之後的平均

=AVERAGE(B2:B11)
Google 試算表公式
fx

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。再用函式:

Google 試算表公式
fx

訂單在 150 元以下的機率

=LOGNORM.DIST(150, F2, F3)

你應該會得到 0.6940。超過 200 元的比例用 1 減:

Google 試算表公式
fx

訂單超過 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 的反向:給累積機率,找出對應的金額。

語法:

Google 試算表公式
fx

九成的訂單在多少元以下

=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 的舊名,同樣算累積機率。

語法:

Google 試算表公式
fx

舊名寫法

=LOGNORMDIST(150, F2, F3)

結果同樣是 0.6940。

LOGINV

LOGNORM.INV 的舊名。

語法:

Google 試算表公式
fx

舊名寫法

=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。

Google 試算表公式
fx

下一通電話 2 分鐘內來的機率

=EXPON.DIST(2, 0.25, TRUE)

你應該會得到 0.3935。超過 6 分鐘都沒來電的機率:

Google 試算表公式
fx

6 分鐘都沒電話的機率

=1 - EXPON.DIST(6, 0.25, TRUE)

結果是 0.2231,也就是 e^(−1.5)。想知道 9 成的間隔在幾分鐘內,這個函式沒有反向版本,自己反推:x = −LN(1 − 機率) ÷ lambda:

Google 試算表公式
fx

九成的來電間隔在幾分鐘內

=-LN(1 - 0.9) / 0.25

結果是 9.2103 分鐘。

FALSE 是密度, 是 0.1516,用來畫曲線。

指數分布有個很反直覺的特性:已經等了多久不影響接下來。已經 6 分鐘沒電話,接下來 2 分鐘內來電的機率還是 0.3935:

Google 試算表公式
fx

已等 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 的舊名,參數一樣。

語法:

Google 試算表公式
fx

舊名寫法

=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。

Google 試算表公式
fx

使用 1000 小時以內壞掉的機率

=WEIBULL.DIST(1000, 1.5, 2000, TRUE)

你應該會得到 0.2978。

x 剛好等於 scale 的時候,結果永遠是 1 − e^(−1) = 0.6321,不管 shape 是多少,所以 scale 也叫「63.2% 壽命」:

Google 試算表公式
fx

使用 2000 小時(等於 scale)以內壞掉的機率

=WEIBULL.DIST(2000, 1.5, 2000, TRUE)

結果是 0.6321。撐過 1500 小時的機率(可靠度)用 1 減:

Google 試算表公式
fx

用到 1500 小時還沒壞的機率

=1 - WEIBULL.DIST(1500, 1.5, 2000, TRUE)

結果是 0.5223。

維修會最常問的是「保固要給多久,壞的比例才不超過 10%」。Weibull 一樣沒有反向函式,自己反推:x = scale × (−LN(1 − 機率))^(1 ÷ shape)。

Google 試算表公式
fx

10% 的風扇壞掉的時數(B10 壽命)

=2000 * (-LN(1 - 0.1)) ^ (1 / 1.5)

結果是 446.1511 小時,也就是 10% 的風扇在 446 小時左右就壞了。中位數是 ,得到 1566.4395 小時。

平均壽命 = scale × GAMMA(1 + 1 / shape),這時候 GAMMA 就派上用場了:

Google 試算表公式
fx

平均壽命(小時)

=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 的舊名,參數一樣。

語法:

Google 試算表公式
fx

舊名寫法

=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

這些結果都建立在「資料真的長這樣」的前提上。我自己會先拿真實資料畫個直方圖看形狀,再決定套哪個分布。接下來試著把自己的訂單或來電紀錄丟進去算算看吧。

分享:
#對數常態分布#指數分布#Weibull 分布#可靠度
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

八年工作經驗,跨不同業界解決數據需求。做過的案例都整理在作品集。

接下來可以

相關文章

查看所有文章

留言討論

共 0 則留言

訂閱電子報,新文章上線就通知你

免費,隨時可取消。

送出即表示同意服務條款與隱私權政策。