R語言學習-迴歸診斷
在上一節中,我們學會了用lm()函式來擬合OLS迴歸模型,通過summary()函式來獲取模型引數和相關統計量,但是沒有任何輸出告訴我們模型是否合適,所以我們要進行迴歸診斷
標準方法-plot()
最常見的方法就是對lm()函式的返回物件使用plot()函式,可以生成評價擬合情況的四幅圖形
> fit<-lm(weight~height,data = women)
> par(mfrow=c(2,2))
> plot(fit)
生成的圖形如上所示,下面對生成的圖形進行解釋
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)
從圖中可以看出,多項式迴歸模型更為理想,點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)
改進的方法-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
可以看出除了Nevada點,其他點離直線都很近,Nevada這個點有很大的殘差值,說明模型低估了該州的謀殺率
線性-crPlots()
通過成分殘差圖也稱偏殘差圖,可以看看因變數與自變數之間是否呈線性關係,也可以看看是否有不同於已設定線性模型的系統偏差,圖形可以使用car包中的crPlots()函式繪製
> crPlots(fit)
這個函式分別對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
圖形顯示,異方差性不明顯,總體上滿足同方差性
相關文章
- Lasso迴歸及其R語言操作R語言
- C語言學習【3】——判斷與迴圈C語言
- 資料分析與挖掘 - R語言:多元線性迴歸R語言
- R語言的初級學習R語言
- R語言資料探勘中的,“迴歸分析”是如何操作的?R語言
- R語言歸一化處理R語言
- R語言學習筆記之一R語言筆記
- 故障診斷學習工具
- R語言邏輯迴歸、ROC曲線和十折交叉驗證R語言邏輯迴歸
- R語言學習-高階資料管理R語言
- 線性迴歸 go 語言實現Go
- 【R語言學習筆記】若干排序問題R語言筆記排序
- R語言學習筆記:基礎知識R語言筆記
- 大語言模型與資料庫故障診斷模型資料庫
- 監督學習之迴歸
- R語言data manipulation學習筆記之subset dataR語言筆記
- 【學習感悟】文科生如何入門R語言R語言
- 學習網路診斷命令 - tracert
- r語言R語言
- 簡易指南帶你啟動 R 語言學習之旅
- R語言結合H2O做深度學習R語言深度學習
- 【R語言入門】R語言環境搭建R語言
- 【深度學習基礎-14】迴歸中的相關係數r和決定係數R^2深度學習
- 故障診斷為什麼要用深度學習?深度學習
- C語言學習方法,怎麼學習C語言?C語言
- 【R語言學習筆記】文件讀取和型別修改R語言筆記型別
- 有監督學習——線性迴歸
- C語言程式設計學習中while迴圈和do……while迴圈C語言程式設計While
- R 語言使用
- Python學習筆記-StatsModels 統計迴歸(1)線性迴歸Python筆記
- java語言學習Java
- go語言學習Go
- 風機故障診斷學習資源(更新中)
- 獨家 | 手把手教你學習R語言(附資源連結)R語言
- 【R語言學習筆記】探索ggplot的排列組合(一)R語言筆記
- C語言:判斷一個字串是否為迴文C語言字串
- R語言邏輯迴歸、GAM、LDA、KNN、PCA主成分分類分析預測房價及交叉驗證R語言邏輯迴歸GAMLDAKNNPCA
- 從零開始學習邏輯迴歸邏輯迴歸