歡迎回到我的有關離群值的博客系列。 在第一集,我們著眼於定義和視覺識別異常值。 在第二集,我們使用分位數(通過Box&Whisker圖)來幫助識別一維離群值。
在本集中,我們著眼於使用馬氏距離在多個維度上識別異常值。 我們也快速瀏覽一下T 2 ,這是馬氏距離的簡單擴展。
多維離群值
圖1是其中一幅圖的複製品第1集並顯示一個包含1,000個數據點的二維圖,其中有一個明顯的異常值(標有紅色正方形):
圖1:二維的1,000個數據點,離群值用紅色標記
圖1中的散點圖使我們能夠輕鬆地從視覺上確定二維離群值,即使從單變量直方圖分佈中看不到離群值也是如此。 因此,“盒與晶須”(分位數)技術在第2集在分析多維數據時並不總是可靠的。 並視覺識別異常值(如第1集)隨著尺寸數量的增加而變得困難。 那麼,如何才能更可靠地檢測這些多維離群值呢?
馬氏距離
馬氏距離(D中號)為我們提供了一種用於識別多維離群值的數值方法。 它以創建者印度統計學家Prasanta Chandra Mahalanobis(1893-1972)的名字命名。 有關馬哈拉諾比斯醫生的更多信息,我將您引向這篇維基百科文章。
廣告中號圖1中所示的數據集的曲線如下所示:
圖2:圖1中1,000個數據點的馬氏距離圖
圖2以行順序顯示了所有數據點與D的關係中號在Y軸上 D的值中號每個點代表每個點到所有數據點質心的標準化“距離”。 紅色數據點顯然在其餘點上很突出,因此有必要作為一個離群點進行進一步研究。
那麼,該計算如何工作?
通用方法
假設我們有1,000個點的二維分佈。 在每個維度中,從均值為零且標準偏差為1.0的正態分佈總體中得出999個點。 然後,我添加了一個離群點作為樣本中的最後一個點。 如果我們做一個XY散點圖,我們可能會有這樣的東西:
圖3:1000個不相關數據點的散點圖,其中一個標記為離群值(紅色)
注意圖3中的紅色興趣點。 我們可以輕鬆地計算每個維度上1,000個點的樣本的均值和標準差,並且可以使用勾股定理計算從紅色點到點的質心的歐幾里得距離。 對於多維:

實際上,我們可以繪製以質心為中心的圓,表示距質心的距離相等,如圖4所示:
圖4:1,000個不相關數據點的散點圖,與質心的等距圓被覆蓋
在圖4中,圓圈表示到點質心的距離為1、2、3和4個單位(從最小到最大)。 在這裡可以清楚地看到紅色的點離這些點的質心最遠。 其距離用“ d”表示。
如果我們具有類似縮放比例的分佈(即,標準偏差相同),則此方法效果很好。但是,如果我們有不同的比例,如圖5所示,該怎麼辦?
圖5:1000個不相關數據點的散點圖,每個點具有不同的均值和標準偏差。
在這裡,我們有兩個問題。 首先,X3維度中的點均值不為零。 只需從所有數據點中減去平均值即可解決這一問題。
第二個問題是X3尺寸的標準偏差比X1尺寸大。 除非我們可以補償差異,否則這將引起距離計算的爭議。 這也很容易做到。 在校正了從零開始的平均偏移之後,我們只需將每個維度除以其標準偏差即可。 標準化了標準偏差中的任何不匹配。 用於評估此距離的多維方程變為:

其中m和s代表每個維度的平均值和標準偏差。 如果執行這些計算並重新繪製標準化數據,則會得到下圖:
圖6:圖5中的數據經過轉換以校正每個維度的均值和標準偏差
因此,現在我們有一種方法可以調整數據的非零均值和不相等的標準差。 只要每個維度上的數據彼此獨立(即不相關),此方法就很好。但是,如果存在如圖1所示的相關性,我們該怎麼辦?
一種方法是採用主要組件建立與數據趨勢對齊的新軸,然後執行上述操作。 但這需要大量的點擊。 (如果對它的工作方式感興趣,請參閱附錄A。)
幸運的是,馬哈拉諾比斯醫生為我們提供了一種簡單而優雅的方法來計算該距離!
馬氏距離方程
Mahalanobis博士計算D的優雅公式中號是:
哪裡:

是i的N個維度的值的向量日個別觀察到的數據點。
N =感興趣的維數(或列數)。
T表示移調操作。

是感興趣的N個維度(或列)中每個維度的均值的向量。
小號-1是所有數據點的NxN協方差矩陣的逆矩陣(可從JMP中的Multivariate平台獲得)。
將適當的值代入上述方程式可得出D中號從我日指向數據集中所有點的質心。 如果您對這種計算的工作方式感興趣,請附錄B解決一個小樣本問題。
JMP中的Mahalanobis情節
d中號本身對我們沒有多大用處。 與其他數據點相比,它才有意義。 JMP中的Mahalanobis圖顯示了這些結果。
我們可以通過以下方法生成Mahalanobis圖:轉到“分析” /“多變量方法” /“多變量”,選擇列,然後從紅色下拉列表中選擇“離群值分析/ Mahalanobis距離”。 對於圖1的示例數據集,得出:
圖7:1,000個數據點樣本的馬氏距離(圖2的重複)
在這裡我們看到數據表第1行中的數據點具有最大距離(D中號),表示它距離所有10個數據點的質心最遠。 藍線代表我們是否相信D為95%的置信上限(UCL)中號與零明顯不同。 紅點明顯在UCL上方,因此有必要進一步調查作為異常值。
但是,離群值並不總是那麼容易被察覺,尤其是對於小型數據集。 在附錄B的示例中,我顯示了一個小型數據集(三個維度中的10個數據點)的示例計算。 該數據集生成一個D中號情節如下圖:
圖8:附錄B中10個數據點樣本的馬氏距離
D中號圖已將點1確定為異常值。 但是我們也看到D中號第1行與D並沒有什麼不同中號為第7行! 為什麼是這樣? 您必須等待下一個情節才能找到該問題的答案!
關於T的快速說明2
JMP還提供了T選項2分析/多元方法/多元,然後進行離群分析。 Ť 2只是D的平方中號。 有些人喜歡用它來迫使離群值和大量數據之間更直觀地分離,但是T 2確實包含與D相同的信息中號。
下一集
在下一個情節中,我們將介紹Jackknife距離,這是查看離群值的另一種方法,它將使上述示例數據集中的離群值突出。
查看有關該系列的所有文章了解離群值。
附錄A:使用主要成分識別異常值
如果我們有一種方法可以旋轉圖1中的軸,使它們與數據趨勢對齊,那將是很好的,如下所示:
圖9:二維數據集的軸的概念旋轉
然後,我們可以使用前面描述的技術對數據進行標準化以檢測異常值。
一種方法是主成分分析(PCA)。 PCA會找到最適合數據的一組正交(相互垂直)軸。 您可以在數據集中擁有與原始尺寸(列)一樣多的主要成分。 在JMP中,PCA可以在兩個位置找到:在“分析/多元方法/主成分”下,或在“分析/多元方法/多元”下,然後從“多元”旁邊的紅色下拉列表中,選擇“主成分/相關性”。 紅色下拉菜單還提供了將主要組件保存回數據表的選項。 完成此操作後,您可以使用這些方法校正上面概述的均值和標準偏差,以確定與質心的距離。
附錄B:D中號計算示例數據集
假設我們有一個包含三列和十行的樣本數據集:
圖10:用於DM示例計算的小樣本數據集
在JMP中,我們可以在這三列上運行Analysis / Multivariate Methods / Multivariate以生成以下散點圖矩陣:
圖11:示例數據的散點圖矩陣
在圖11中,我們可以看到,在X1-X2尺寸中進行比較時,第1行數據(以紅色突出顯示)似乎是一個異常值,儘管在X1-X3或X2-X3圖中並沒有那麼清楚。
我們要計算第一點的馬氏距離。 因此,填寫上述D中的向量和矩陣中號等式,我們從興趣點開始:

每列的平均值可以通過幾種不同的方式找到。 讓我們使用Cols / Column Viewer,然後使用Show Summary:
圖12:摘要統計數據,例如三維10點數據集
因此,均值的向量變為:

接下來,我們需要在分析/多元方法下找到的協方差矩陣。 從紅色下拉三角形中選擇“協方差矩陣”:
圖13:協方差矩陣,例如三維10點數據集
我們還需要協方差矩陣S的逆-1 。 JMP不會從菜單系統中提供該信息,但是我們可以通過以下自定義腳本輕鬆獲得該信息:
圖14:查找矩陣逆的JMP JSL腳本
結果是:
小號-1 =

然後,我們只需插入並求解矩陣方程式:





馬氏距離(D中號對於示例數據集第1行中顯示的數據,)為2.814。
圖15:示例數據集的馬氏圖表(圖8的重複)
感謝您的清晰明確的解釋。 我會向我的同事介紹這個系列,因為它已經很好地說明了。 我期待關於刀切距離的討論,因為與馬哈拉諾比斯相比,我對刀切距離的了解不多。
我不得不寫一張Excel表格來計算一些同事的馬氏距離(確實是T2),但確實行得通,但是在JMP中它是如此的快捷和簡便!