線性回歸診斷--R
【轉載時請注明來源】:http://www.cnblogs.com/runner-ljt/
Ljt 勿忘初心 無畏未來
作為一個初學者,水平有限,歡迎交流指正。
R--線性回歸診斷(一) 主要介紹了線性回歸診斷的主要內容和基本方法。
本文作為R中線性回歸診斷的進一步延伸,將主要介紹用car包中的相關函數就行線性回歸診斷。
> > head(bank) y x1 x2 x3 x4 1 1018.4 96259 2239.1 50760 1132.3 2 1258.9 97542 2619.4 39370 1146.4 3 1359.4 98705 2976.1 44530 1159.9 4 1545.6 100072 3309.1 39790 1175.8 5 1761.6 101654 3637.9 33130 1212.3 6 1960.8 103008 4020.5 34710 1367.0 > fline<-lm(y~x1+x2+x3+x4,data=bank) >
正太性檢驗:
qqPlot
相較於 plot()函數,畫更為精確的學生化殘差圖。
> qqPlot(fline)
直線兩側的虛曲線代表置信區間,落在兩曲線外的點可以認為是離群點。
線性檢驗:
crPlots
可通過成分殘差圖即偏殘差圖,判斷因變量與自變量之間是否呈非線性關系,這種處理在檢驗線性關系的時候可以排除掉其他自變量的影響。
散點的 橫軸為Xi ,縱軸為 Θi*Xi +ε
可以通過紅線和綠線趨勢是否一致來判斷線性關系。(紅線為 y=Θi*Xi ; 綠線為散點的趨勢曲線)
> crPlots(fline)
異方差檢驗:
ncvTest
原假設:隨機誤差的方差不變 ------- P值>0.05 則接受原假設,即不存在明顯的異方差現象。
> > ncvTest(fline) Non-constant Variance Score Test Variance formula: ~ fitted.values Chisquare = 0.2017512 Df = 1 p = 0.653311 >
P值=0.653311>0.05 故不存在異方差情況。
spreadLevelPlot
創建標准化殘差絕對值與擬合值的散點圖。
若輸出結果建議冪次變換(suggested power transformation)接近1,則異方差不明顯,即不需要進行變換;
若冪次變換為0.5,則用根號y代替y;
若冪次變換為0,則用對數變換。
> > spreadLevelPlot(fline) Suggested power transformation: 0.5969254 >
自相關性檢驗:
在線性回歸模型基本假設中有 cov(εi ,εj)=0 的假設,如果一個模型不滿足該式則稱隨機誤差項之間存在自相關現象。
注意:這里的自相關不是指兩個或兩個以上的變量之間的相關關系,而是指一個變量前后期數值之間的相關關系。
原假設:隨機誤差之間存在相關性。 -------P值>0.05 拒絕原假設,即不存在自相關現象。
> > durbinWatsonTest(fline) lag Autocorrelation D-W Statistic p-value 1 0.3578255 1.25138 0 Alternative hypothesis: rho != 0 >
從結果可以看出 P<0.05 接受原假設,存在嚴重自相關性。
共線性檢驗:
vif
VIF:variance inflation factor 方差擴大因子
一般情況下,VIFi>10 就表明存在多重共線性問題;而方程的多重共線性就是由VIF>10的這幾個變量引起的。
> > fline1<-lm(y~x1+x2+x4,data=bank) > vif(fline1) x1 x2 x4 4.830666 91.196064 88.411675 > > cor(bank[,c(2,3,5)]) x1 x2 x4 x1 1.0000000 0.8904046 0.8867331 x2 0.8904046 1.0000000 0.9943239 x4 0.8867331 0.9943239 1.0000000 > > fline2<-lm(y~x1+x4,data=bank) > vif(fline2) x1 x4 4.67936 4.67936 >
從回歸方程 fline1的結果可以看出 X2與X4的VIF值明顯的大於10,說明這兩個變量之間存在着共線性;
同時,從簡單相關系數矩陣也可以看出X2與X4之間的相關系數為0.9943239,表明兩者之間高度相關。
可以通過刪除VIF最大的變量來消除多從共線性,在刪除X2后回歸方程 fline2的結果就不存在明顯的多重共線性現象。
異常值檢驗:
異常值點分為兩種情況:(1)關於因變量y異常;(2)關於自變量x異常
(1)離群點 :預測效果不佳的點,具有加大殘差。
outlierTest
根據最大的殘差值的顯著性來判斷是否存在離群點。
若不顯著 Bonferonni P>0.05 ,表明沒有離群點;
若顯著 Bonferonni P<0.05 ,表明該最大殘差值點為離群點,需要刪去,然后對刪除該點后的擬合模型再次進行離群點的檢驗。
>
> outlierTest(fline)
No Studentized residuals with Bonferonni p < 0.05
Largest |rstudent|:
rstudent unadjusted p-value Bonferonni p
16 -2.879438 0.011463 0.24071
>
(2)高杠桿點
距離樣本總體較遠的點,對回歸參數影響加大。
杠桿值大於均值的2~3倍的樣本點即可認為是高杠桿點。
> > hatvalues(fline) 1 2 3 4 5 6 7 0.4453268 0.1937509 0.1943925 0.1376962 0.2137907 0.1647341 0.2542901 8 9 10 11 12 13 14 0.1114443 0.1203456 0.1075918 0.1372937 0.1113233 0.2690678 0.2546604 15 16 17 18 19 20 21 0.1712032 0.1200677 0.2205161 0.3279132 0.3918183 0.2912191 0.7615544 >
從各樣本點的杠桿值可以看出 第21個樣本點的杠桿值明顯較大,為高杠桿點。
(3)強影響點
對模型的參數估計有較大的影響的點(綜合考慮了殘差和杠桿值),若將其刪除則會導致模型發生本質的改變。
線性回歸的杠桿值表示自變量的觀測值與自變量平均值之間距離的遠近;
較大的杠桿值的殘差偏小,這是因為杠桿值大的觀測點遠離樣本中心,能夠把方程拉向自身,因而把杠桿值大的樣本點稱為強影響點;
強影響點對回歸效果通常有較強的影響:
1.在實際問題中,因變量與自變量的線性關系只是在一定范圍內成立,強影響點遠離樣本中心,因變量與自變量間可能不再是線性函
數關系,因而在選擇回歸函數形式時會側重強影響點,
2.即使線性回歸形式成立,但強影響點遠離樣本中心,能把回歸方程拉向自身,使方程產生偏移
可以通過Cook距離來判斷
> cooks.distance(fline) 1 2 3 4 5 1.146928e-01 8.816365e-06 1.721683e-03 1.180151e-02 5.950745e-02 6 7 8 9 10 1.188010e-02 1.049215e-03 1.595864e-02 5.529126e-03 7.215198e-04 11 12 13 14 15 1.040969e-05 5.131290e-04 3.465269e-01 1.077292e-01 1.045665e-01 16 17 18 19 20 1.554358e-01 1.388942e-03 1.154579e-01 1.330203e-01 5.371479e-03 21 3.517750e-01 >
第21個樣本點的Cook值明顯偏大,故具有較強的影響。
influence.measures
樣本點有強影響則在右側用 * 標記
> > influence.measures(fline) Influence measures of lm(formula = y ~ x1 + x2 + x3 + x4, data = bank) : dfb.1_ dfb.x1 dfb.x2 dfb.x3 dfb.x4 dffit cov.r cook.d hat inf 1 0.45826 -0.568459 0.055623 0.512937 0.009836 0.75016 1.981 1.15e-01 0.445 * 2 -0.00507 0.004561 -0.000964 0.000134 0.000275 -0.00643 1.713 8.82e-06 0.194 3 -0.06156 0.064613 -0.021146 -0.035703 0.013871 -0.08994 1.695 1.72e-03 0.194 4 -0.15306 0.124729 -0.077062 0.020415 0.062390 -0.23797 1.425 1.18e-02 0.138 5 -0.19112 0.045121 -0.136219 0.376396 0.126321 -0.54719 1.232 5.95e-02 0.214 6 -0.05657 -0.004141 -0.023041 0.165138 0.024055 -0.23824 1.503 1.19e-02 0.165 7 0.00462 0.013033 -0.013136 -0.058289 0.012084 0.07016 1.843 1.05e-03 0.254 8 -0.01447 -0.000661 -0.180381 0.032928 0.169471 0.27911 1.269 1.60e-02 0.111 9 -0.03729 0.017606 -0.096442 0.056441 0.084377 0.16202 1.473 5.53e-03 0.120 10 -0.02597 0.030394 -0.027975 -0.018465 0.020941 0.05821 1.533 7.22e-04 0.108 11 -0.00312 0.002135 -0.000075 0.004076 -0.000837 0.00699 1.600 1.04e-05 0.137 12 0.03346 -0.031808 0.013247 -0.004924 -0.005163 -0.04908 1.544 5.13e-04 0.111 13 -0.88710 1.114394 -0.618970 -0.968065 0.435245 1.51702 0.331 3.47e-01 0.269 * 14 -0.46471 0.322235 -0.157021 0.463529 0.054450 0.74845 1.103 1.08e-01 0.255 15 0.54324 -0.482824 -0.052544 -0.244757 0.172698 -0.76306 0.704 1.05e-01 0.171 16 0.76658 -0.744780 0.123881 -0.025557 0.011793 -1.06364 0.174 1.55e-01 0.120 17 0.01766 -0.010056 -0.043461 -0.040832 0.045946 -0.08075 1.758 1.39e-03 0.221 18 0.05049 0.055714 0.583416 -0.186662 -0.554400 0.76448 1.399 1.15e-01 0.328 19 0.20494 -0.110758 0.593949 -0.153020 -0.518155 0.81642 1.627 1.33e-01 0.392 20 -0.04819 0.059309 -0.002337 -0.027989 -0.022679 -0.15900 1.909 5.37e-03 0.291 21 -0.20629 0.281238 0.822119 0.113466 -0.986662 -1.30680 4.861 3.52e-01 0.762 * > >
從結果來看 第1,13,21 個樣本點的影響較大。
influencePlot
將離群點、高杠桿點、強影響點整合到一個圖中。
縱坐標在 -2~2之外的可以認為是離群點;
橫坐標為杠桿值;
圓圈大小代表影響值大小。