一,定義
異常點(Outlier):殘差很大的點(即:因變量y的值是極端值的觀測值)
高杠桿點(High Leverage Point):遠離樣本空間中心的點(即:自變量x的值是極端值的觀測值)
強影響點(Influential Point):對模型有較大影響的點,如果刪除該點能改變擬合回歸方程
注意:
1,異常點不一定是強影響點,強影響點也不一定是異常點
2,高杠桿點不一定是強影響點,強影響點也不一定是高杠桿點
下面以幾張圖舉例,讓大家更好地分清楚什么是異常點,高杠桿點和強影響點。(下圖摘自:https://online.stat.psu.edu/stat462/node/170/)
(1)
虛線和實線分別是包含紅點在內和不包含紅點在內訓練出來的回歸模型。可以看到,兩條回歸線之間相差不大,因此,該紅點不是強影響點。
同時,該紅點並沒有離其他自變量的值很遠,因此也不是高杠桿點。但是它離回歸線很遠(殘差大),因此該紅點是異常點。
(2)
虛線和實線分別是包含紅點在內和不包含紅點在內訓練出來的回歸模型。可以看到,兩條回歸線之間相差不大,因此,該紅點不是強影響點。
同時,該紅點離回歸線不遠,因此也不是異常點。但是它離其他自變量的值很遠,因此該紅點是高杠桿點。
(3)
虛線和實線分別是包含紅點在內和不包含紅點在內訓練出來的回歸模型。可以看到,兩條回歸線之間相差較大,因此,該紅點是強影響點。
同時,該紅點離其他自變量的值較遠,因此是高杠桿點。它離回歸線也很遠(殘差大),因此該紅點也是異常點。
二,判斷
上面的圖例是簡單線性回歸,在實際應用中,通常有多個自變量,因此在高維空間中,我們不可能通過畫圖來判斷某個觀測值是否是異常點或高杠桿點或強影響點。
1,判斷是否是異常點
(1)標准化殘差(standardized residuals):。相對於普通殘差來說,消除了量綱的影響。如果標准化殘差的絕對值>3,該觀測值即判定為異常值。可用R的rstandard()方法計算出標准化殘差。
(2)學生化殘差(studentized residuals):。相對於標准化殘差,還去除了高杠桿值的影響。如果學生化殘差的絕對值>3,該觀測值即判定為異常值。可用R的outlierTest()方法求得有最大學生化殘差的觀測值和Bonferroni調整后的p值,從而做出判斷。
(3)刪除學生化殘差(deleted studentized residuals):盡管學生化殘差去除了杠桿值的影響,但是異常值會把回歸線“拉向”它所在的位置,因此去除掉該點的影響更為客觀公正。如果刪除學生化殘差的絕對值>3,該觀測值即判定為異常值。可以用R的rstudent()方法計算出刪除學生化殘差。(需要注意的是:如果有不止一個異常點,那么即使刪除這一個異常點,其他異常值仍會把回歸線“拉向”它們所在的位置。)
2,判斷是否是高杠桿點
(1)如果帽子統計量大於平均帽子值的3倍,那么可以判斷該觀測值是高杠桿點。可用R的hatvalues()方法計算出帽子統計量(hat statistic),用leveragePlots()方法畫圖。
附:為什么叫帽子統計量?(具體請見:https://online.stat.psu.edu/stat462/node/171/)
H被稱為帽子矩陣,因為其相當於給y戴上了一頂帽子來預測y的值。是權重,當
較大時,說明第
個觀測值對第
個擬合值有較大的影響。
它的均值為。
3,判斷是否是強影響點
(1)Cook距離法(Cook's D):。Cook距離直接總結了去除某一個數據點之后,其他樣本擬合值的變化,相當於綜合了殘差和杠桿值的信息。可用R的cooks.distance()方法計算出Cook's D。
- 如果 Di 大於 0.5,那么第i個觀測值可能是強影響點,需要對其進行進一步查看。
- 如果 Di 大於 1,那么第i個觀測值很可能就是強影響點。
- 如果 Di 小於 0.5,那么第i個觀測值不是強影響點。
(2)Dffits(Difference in Fits):比較去除某一個數據點和包含此數據點的預測值y的變化。可以調用R的influence.measures()做診斷。
(3)Dfbetas:比較去除某一個數據點和包含此數據點的每個變量參數的變化。可以調用R的influence.measures()做診斷。
另外,可用R的influencePlot()方法將異常點、高杠桿點和強影響點整合到同一張圖中:
此外,用statsodels包可以一並計算出異常點、高杠桿點和強影響點的信息:
三,處理
1,強影響點並不一定是不好的,而是說如果某個點影響特別大,那么需要進一步調查,比如說看是否需要對變量進行轉換。
2,如果發現異常點,首先檢查其是否是錯誤導致的,比如輸入錯誤,測量錯誤等等,如果是,那么直接刪除。但是有時候異常點會提示重要的信息,因此如果異常點不是由錯誤導致的,則需要進一步的調查,不可簡單刪除了事。並且所有刪除數據點的方法和理由都應該呈現在報告中。刪除數據點后要與刪除之前的模型作比較,看模型是否變得更好,並將兩個模型都記錄在報告中。
參考:https://cran.r-project.org/web/packages/olsrr/vignettes/influence_measures.html