Boxplot是一個常用的瞭解數據分佈的工具,在數據預處理階段也常用boxplot剔除離羣點,但是當數據是一個偏態分佈的時候,boxplot將許多點誤分類爲離羣點。《AN ADJUSTED BOXPLOT FOR SKEWED
DISTRIBUTIONS》是一篇經典的修正boxplot在偏態分佈數據上的誤報問題的文章。
1. 傳統boxplot方法
對於一組數據Xn={x1,x2,x3,...,xn},計算Q1(第一四分位數), Q3(第三四分位數), IQR(四分位距),然後得到Tukey bound:
[Q1−1.5∗IQR,Q3+1.5∗IQR]
boxplot 方法認爲落在tukey bound外的數據爲離羣值。
缺點:該上下界是基於數據時對稱分佈得到的,當數據是偏態分佈時tukey bound表現得並不好。
2. 通用的boxplot方法
medcouple
medcouple(MC)是一個健壯的,用於描述連續單變量分佈(F)偏度的統計量:
MC(F)=xi<mF<xjmedianh(xi,xj)
mF是F的中值,xi,xj是F中的樣本,核函數h(x)定義如下:
h(xi,xj)=xj−xi(xj−mF)−(mF−xi)
MC取值在[-1,1],MC>0分佈右偏,MC<0分佈左偏。對於對稱分佈,MC=0。
boxplot修正
接下來利用MC對tukey bound進行偏態修正,這裏引入修正函數$h_l(MC)$
和hr(MC):
[Q1−hl(MC)∗IQR,Q3+hr(MC)∗IQR]
這裏需要滿足hl(0)=hr(0)=0,以保證和原始boxplot在對稱分佈數據中取得同樣的效果。
然後作者研究了3種簡單的,不需要太多參數的關於修正函數的模型:
- 線性模型:hl(MC)=1.5+a∗MC, hr(MC)=1.5+b∗MC
- 二次多項式模型:hl(MC)=1.5+a1∗MC+a2∗MC2, hr(MC)=1.5+b1∗MC+b2∗MC2
- 指數模型:hl(MC)=1.5∗ea∗MC, hr(MC)=1.5∗eb∗MC
爲了求上述模型中的常數,我們要求離羣值的期望百分比爲0.7%,這與正態分佈下原箱線圖的離羣值百分比一致。
以線性模型舉例,常數a,b應該滿足Q1−(1.5+a∗MC)∗IQR=Qα,Q3+(1.5+b∗MC)∗IQR=Qβ,其中Qp表示分佈中的第p分位數,α=0.0035,β=0.9965。線性模型的修正函數可以改寫爲:IQRQ1−Qα−1.5=a∗MC和IQRQβ−Q3−1.5=b∗MC,然後可以用無截距的線性迴歸估計常數a和b。
二次模型和指數模型也可以利用同樣的推導方法進行估計。例如,對於指數模型,經過轉換,得到下面的線性形式:
ln(32IQRQ1−Qα)=a∗MCln(32IQRQβ−Q3)=b∗MC
然後,作者從Γ,χ2,F,Pareto,Gg分佈族中衍生出12605個分佈的數據,用於訓練出參數a,b。分佈選取不極端傾斜的分佈(保證medcouple<=0.6,因爲很難找到簡單的模型解決極端分佈的情況),每個分佈生成了10000個觀測值。最終結果如下(這裏只考慮對稱和右偏的分佈,y軸爲ln(32IQRQβ−Q3)):
可以看到指數模型擬合效果最好。
最終修正後的上下界爲:
[Q1−1.5∗e−3.5∗MC∗IQR,Q3+1.5∗e4∗MC∗IQR]
3. 總結
本文提出了一種進行偏度調整後的boxplot法,減弱了分佈偏度的影響,在異常處理時是個不錯的選擇。
參考
[1] <AN ADJUSTED BOXPLOT FOR SKEWED DISTRIBUTIONS>