R語言學習-迴歸診斷

powerx_yc發表於2019-02-03

在上一節中,我們學會了用lm()函式來擬合OLS迴歸模型,通過summary()函式來獲取模型引數和相關統計量,但是沒有任何輸出告訴我們模型是否合適,所以我們要進行迴歸診斷

標準方法-plot()

最常見的方法就是對lm()函式的返回物件使用plot()函式,可以生成評價擬合情況的四幅圖形

> fit<-lm(weight~height,data = women)
> par(mfrow=c(2,2))
> plot(fit)
14463769-0e19d7f94219abd5.png
image.png

生成的圖形如上所示,下面對生成的圖形進行解釋
OLS迴歸的統計假設為:正態性,獨立性,線性,同方差性

線性 Residuals vs Fitted 殘差圖與擬合圖 若應變數與自變數線性相關,那麼殘差值與擬合值就沒有任何系統關聯,在圖中可以看到有一個明顯的曲線關係,這說明可能要對迴歸模型新增一個二次項
正態性 Normal Q-Q 正態QQ圖 用於檢驗殘差正態性 如果滿足正態假設,那麼圖上的點就應該均勻的落在呈45°角的直線上(圖中虛線),不然就違反了正態性的假設
同方差性 Scale-Location 位置尺度圖 如果滿足同方差性,那麼圖中水平線周圍的點應該隨機分佈
Residuals VS Leverage 殘差與槓桿圖 從圖形中可以鑑別出離群點,高槓杆值點和強影響點 離群點:表明擬合迴歸模型對其預測效果不佳 高槓杆值點:是一個異常的預測變數值的組合 強影響點:表明它對模型引數的估計產生的影響過大,非常不成比例

再來看一下二次擬合的診斷圖

> fit<-lm(weight~height+I(height^2),data = women)
> plot(fit)
14463769-27eed7c4151558a7.png
image.png

從圖中可以看出,多項式迴歸模型更為理想,點13不滿足殘差正態性,點15為一個強影響點(cook距離值大),滿足同方差性

再來看一看多元線性迴歸診斷圖

> state<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
> fit<-lm(Murder~Population+Illiteracy+Income+Frost,data = state)
> plot(fit)
14463769-b3dff6aa6e0caae4.png
image.png

改進的方法-car包

正態性-qqPlot()

與基礎包中的plot()相比,qqPlot()函式提供了更為精確的正態性假設檢驗的方法,它畫出了在n-p-1個自由度的t分佈下學生化殘差

> state<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
> fit<-lm(Murder~Population+Illiteracy+Income+Frost,data = state)
> qqPlot(fit)
      Nevada Rhode Island 
          28           39 
14463769-afdfcfbd550419e7.png
image.png

可以看出除了Nevada點,其他點離直線都很近,Nevada這個點有很大的殘差值,說明模型低估了該州的謀殺率

線性-crPlots()

通過成分殘差圖也稱偏殘差圖,可以看看因變數與自變數之間是否呈線性關係,也可以看看是否有不同於已設定線性模型的系統偏差,圖形可以使用car包中的crPlots()函式繪製

> crPlots(fit)
14463769-057270f44fa4a661.png
image.png

這個函式分別對4個自變數進行繪圖,可已看出成分殘差圖證實了線性假設,藍色虛線與紫色曲線幾乎擬合,說明線性模型對該資料集是適合的

同方差性-ncvTest() spreadLevelPlot()

ncvTest()函式生成一個計分檢驗,如果檢驗顯著,則說明存在異方差性

> ncvTest(fit)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 1.746514, Df = 1, p = 0.18632

p=0.18632,不顯著,說明方差滿足不變假設

spreadlevelPlot()函式則會繪製最佳擬合曲線散點圖,如果違反同方差假設,你將會看到一個非水平的曲線

> spreadLevelPlot(fit)

Suggested power transformation:  1.209626 
14463769-9f2878bb8869f3e5.png
image.png

圖形顯示,異方差性不明顯,總體上滿足同方差性

相關文章