絕對(duì)中位差Median Absolute Deviation
作者: 不剪發(fā)的Tony老師
畢業(yè)于北京航空航天大學(xué),十多年數(shù)據(jù)庫(kù)管理與開發(fā)經(jīng)驗(yàn),目前在一家全球性的金融公司從事數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)。CSDN學(xué)院簽約講師以及GitChat專欄作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net
文章目錄
絕對(duì)中位差Median Absolute Deviation
示例
用途
MAD與標(biāo)準(zhǔn)差的關(guān)系
總體MAD
R語(yǔ)言MAD函數(shù)
絕對(duì)中位差Median Absolute Deviation
參考維基百科中的MAD定義
在統(tǒng)計(jì)學(xué)中,絕對(duì)中位數(shù)MAD是對(duì)單變量數(shù)值型數(shù)據(jù)的樣本偏差的一種魯棒性測(cè)量。同時(shí)也可以表示由樣本的MAD估計(jì)得出的總體參數(shù)。
對(duì)于單變量數(shù)據(jù)集 X 1 , X 2 , . . . , X n X_1, X_2, ..., X_n X1?,X2?,...,Xn?,MAD定義為數(shù)據(jù)點(diǎn)到中位數(shù)的絕對(duì)偏差的中位數(shù):
M A D = m e d i a n ( ∣ X i ? m e d i a n ( X ) ∣ ) MAD = median(|X_i-median(X)|) MAD=median(∣Xi??median(X)∣)
也就是說,先計(jì)算出數(shù)據(jù)與它們的中位數(shù)之間的殘差(偏差),MAD就是這些偏差的絕對(duì)值的中位數(shù)。
示例
考慮數(shù)據(jù)集(1, 1, 2, 2, 4, 6, 9),它的中位數(shù)為2。數(shù)據(jù)點(diǎn)到2的絕對(duì)偏差為(1, 1, 0, 0, 2, 4, 7),該偏差列表的中位數(shù)為1(因?yàn)榕判蚝蟮慕^對(duì)偏差為(0, 0, 1, 1, 2, 4, 7))。所以該數(shù)據(jù)的絕對(duì)中位差為1。
用途
絕對(duì)中位差是一種統(tǒng)計(jì)離差的測(cè)量。而且,MAD是一種魯棒統(tǒng)計(jì)量,比標(biāo)準(zhǔn)差更能適應(yīng)數(shù)據(jù)集中的異常值。對(duì)于標(biāo)準(zhǔn)差,使用的是數(shù)據(jù)到均值的距離平方,所以大的偏差權(quán)重更大,異常值對(duì)結(jié)果也會(huì)產(chǎn)生重要影響。對(duì)于MAD,少量的異常值不會(huì)影響最終的結(jié)果。
由于MAD是一個(gè)比樣本方差或者標(biāo)準(zhǔn)差更魯棒的度量,它對(duì)于不存在均值或者方差的分布效果更好,比如柯西分布。
MAD與標(biāo)準(zhǔn)差的關(guān)系
為了能將MAD當(dāng)作標(biāo)準(zhǔn)差 σ \sigma σ估計(jì)的一種一致估計(jì)量,使用
σ ^ = k ? M A D \hat\sigma = k \cdot MAD σ^=k?MAD
其中 k 為比例因子常量,值取決于分布類型。
對(duì)于正態(tài)分布數(shù)據(jù),k的值為:
k = 1 / ( Φ ? 1 ( 3 / 4 ) ) ≈ 1.4826 k = 1/(\Phi^{-1}(3/4)) \approx 1.4826 k=1/(Φ?1(3/4))≈1.4826
也就是標(biāo)準(zhǔn)正態(tài)分布 Z = X / σ Z = X/\sigma Z=X/σ的分位函數(shù)的倒數(shù)(也稱為逆累積分布函數(shù))。數(shù)值3/4是為了 ± M A D \pm MAD ±MAD包含標(biāo)準(zhǔn)正態(tài)累積分布函數(shù)的50%(從1/4到3/4的范圍值),也就是:
1 2 = P ( ∣ X ? μ ∣ ≤ M A D ) = P ( ∣ X ? μ σ ∣ ≤ M A D σ ) = P ( ∣ Z ∣ ≤ M A D σ ) . {1 \over 2} = P(|X-\mu| \le MAD) = P(|{X-\mu \over \sigma}| \le {MAD \over \sigma}) = P(|Z| \le {MAD \over \sigma}). 21?=P(∣X?μ∣≤MAD)=P(∣σX?μ?∣≤σMAD?)=P(∣Z∣≤σMAD?).
所以,必須有:
Φ ( M A D / σ ) ? Φ ( ? M A D / σ ) = 1 / 2 \Phi(MAD/\sigma) - \Phi(-MAD/\sigma) = 1/2 Φ(MAD/σ)?Φ(?MAD/σ)=1/2
而
Φ ( ? M A D / σ ) = 1 ? Φ ( M A D / σ ) \Phi(-MAD/\sigma) = 1 - \Phi(MAD/\sigma) Φ(?MAD/σ)=1?Φ(MAD/σ)
得到 M A D / σ = Φ ? 1 ( 3 / 4 ) = 0.67449 MAD/\sigma = \Phi^{-1}(3/4) = 0.67449 MAD/σ=Φ?1(3/4)=0.67449,從而比例因子 k = 1 / Φ ? 1 ( 3 / 4 ) = 1.4826 k = 1/\Phi^{-1}(3/4) = 1.4826 k=1/Φ?1(3/4)=1.4826。
另一種計(jì)算方法是MAD等于半正態(tài)分布的中位數(shù):
M A D = σ 2 e r f ? 1 ( 1 / 2 ) MAD = \sigma \sqrt 2 erf^{-1}(1/2) MAD=σ2
?erf?1(1/2)
這種形式可以用于概然誤差的計(jì)算。
總體MAD
總體的MAD與樣本MAD的定義類似,但是它是基于完全分布而不是樣本執(zhí)行的計(jì)算。對(duì)于均值為零的對(duì)稱分布,總體MAD是分布的75%分位點(diǎn)。
均值有可能是無(wú)限值,或者不存在的值;然而總體MAD永遠(yuǎn)都是一個(gè)有限值。例如,標(biāo)準(zhǔn)柯西分布的方差不存在,但是它的MAD等于1。
已知最早提出MAD概念的是約翰·卡爾·弗里德里希·高斯。
R語(yǔ)言MAD函數(shù)
在R語(yǔ)言中,計(jì)算MAD的函數(shù)是stats包中的mad(),不同的是它默認(rèn)乘上了一個(gè)比例因子1.4826,為了達(dá)到漸進(jìn)正態(tài)一致性。
mad(x, center = median(x), constant = 1.4826, na.rm = FALSE, low = FALSE, high = FALSE)
其中,
x 數(shù)值向量。
center 可選,中心點(diǎn):默認(rèn)為中位數(shù)。
constant 比例因子。
na.rm 如果為TRUE,在計(jì)算之前將x中的NA刪除。
low 如果為TRUE,計(jì)算‘lo-median’,也就是說,對(duì)于個(gè)數(shù)為偶數(shù)的樣本,在最后計(jì)算中位數(shù)時(shí)不使用兩個(gè)中間值的均值,而是采用其中較小的值。
high 如果為TRUE,計(jì)算‘hi-median’,也就是對(duì)于偶數(shù)樣本,采用兩個(gè)中間值的較大者作為中位數(shù)。
在R語(yǔ)言中,該值的計(jì)算方式為constant * cMedian(abs(x - center)),其中center的默認(rèn)值為median(x),cMedian為“低”中位數(shù)或“高”中位數(shù),參見上面的參數(shù)low和high。
默認(rèn)值constant = 1.4826(近似等于 1 / Φ ? 1 ( 3 / 4 ) = 1 / q n o r m ( 3 / 4 ) 1/ \Phi^{-1}(3/4) = 1/qnorm(3/4) 1/Φ?1(3/4)=1/qnorm(3/4))可以確保對(duì)于遵循 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2)分布的 X i X_i Xi?和大的n 值,存在以下一致性:
E [ m a d ( X 1 , . . . , X n ) ] = σ E[mad(X_1, ... , X_n)] = \sigma E[mad(X1?,...,Xn?)]=σ
如果na.rm為TRUE,在執(zhí)行計(jì)算之前,將會(huì)刪除x中的NA值;否則,只要x中存在任何NA值,mad函數(shù)將會(huì)返回NA。
示例
mad(c(1:9))
print(mad(c(1:9), constant = 1)) ==
mad(c(1:8, 100), constant = 1) # = 2 ; TRUE
x <- c(1,2,3,5,7,8)
sort(abs(x - median(x)))
c(mad(x, constant = 1),
mad(x, constant = 1, low = TRUE),
mad(x, constant = 1, high = TRUE))
以上代碼輸出如下:
> mad(c(1:9))
[1] 2.9652
> print(mad(c(1:9), constant = 1)) ==
+ mad(c(1:8, 100), constant = 1) # = 2 ; TRUE
[1] 2
[1] TRUE
> x <- c(1,2,3,5,7,8)
> sort(abs(x - median(x)))
[1] 1 1 2 3 3 4
> c(mad(x, constant = 1),
+ mad(x, constant = 1, low = TRUE),
+ mad(x, constant = 1, high = TRUE))
[1] 2.5 2.0 3.0
通過代碼第2行的輸出可以看出MAD對(duì)于異常值的魯棒性。