天天看點

預測分析:R語言實作2.5 線性回歸的問題

<b>2.5 線性回歸的問題</b>

<b></b>

在本章,我們已經看到了在嘗試建構線性回歸模型的時候遇到某些問題的一些示例。我們讨論過的一大類問題是和模型線上性、特征獨立性和同方差性及誤差的正态性等方面的假設相關的。我們還具體看到了診斷這類問題的方法,要麼借助像殘差圖這樣的圖,或者利用能識别非獨立成分的函數。本節要探讨線性回歸中可能出現的一些其他問題。

2.5.1 多重共線性

作為預處理步驟的一部分,我們會盡力去除互相線性相關的特征。在此過程中,我們尋找的是一種完全的線性關系,這就是完全共線性(perfect collinearity)的示例。共線性(collinearity)是描述兩個特征近似具有一種線性關系的性質。這對于線性回歸會産生一個問題,因為我們會嘗試給互相之間接近是線性函數的變量配置設定獨立的系數。這樣會導緻的情況是:兩個高度共線性的特征具有較大的p值表明它們和輸出變量不相關,但如果去除其中一個特征并重新訓練該模型,剩下的那個特征就會具有較小的p值。共線性的另一種典型迹象是某個系數出現不正常的符号,例如在一個預測收入水準的線性模型裡,教育背景的系數為負。兩個特征之間的共線性可以通過配對相關系數進行檢測。處理共線性的一種方式是把兩個特征合并為一個(例如通過取平均值);另一種方式是直接去除其中一個特征。

多重共線性(multicollinearity)出現線上性關系涉及多于兩個特征的情況。檢測它的一種标準方法是對線性模型中的每個輸入特征計算其方差膨脹因子(variance inflation factor,vif)。簡而言之,vif可以用來估計由于該特征和其他特征共線性而直接導緻在具體系數的估計過程中能觀察到的方差的增量。這通常是通過拟合一個線性回歸模型來進行的,我們把其中的一個特征作為輸出特征,把其他特征仍保留為正常的輸入特征。然後我們對這個線性模型計算r2統計量,并據此利用公式1 / (1-r2)計算我們選取的那個特征的vif。在r語言中,car包包含了vif()函數,它能友善地對一個線性回歸模型中的所有特征計算vif值。這裡有一個經驗規則是,vif分數為4或更大的特征就是可疑的,而分數大于10就表明了多重共線性的極大可能性。既然看到了二手車資料中存在必須去除的線性依賴特征,就讓我們來調查在餘下的特征中是否存在多重共線性:

這裡有3個值略大于4,但沒有更大的了。作為一個示例,如下的代碼示範了sedan特征的vif值是如何計算的:

2.5.2 離群值

當觀察我們的兩個模型的殘差時,我們會看到有某些觀測資料比其他資料具有明顯更大的殘差。例如,根據cpu模型的殘差圖,我們可以看到觀測資料200有非常大的殘差。這就是一個離群值(outlier)的示例,它是一種預測值距離其實際值非常遠的觀測資料。由于對殘差取平方的原因,離群值對rss往往會産生顯著的影響,給我們帶來模型拟合效果不佳的印象。離群值可能是因為測量誤差産生的,對它們的檢測很重要,因為它們可能預示着不準确或非法的資料。另一方面,離群值也可能隻是沒有選對特征或建立了錯誤種類的模型的結果。

因為我們通常并不知道某個離群值是一個資料收集過程中的錯誤資料還是真實的觀測資料,處理離群值會非常棘手。有時候,尤其是當我們有很少的離群值時,一種常見的手段是去除它們,因為包括它們往往會産生顯著改變預測模型系數的效果。我們要說,離群值經常是具有較高影響(influence)的點。

離群值并不是具有高影響的唯一觀測資料。高杠杆率點(high leverage point)也是這樣的觀測資料,在它們的特征中至少有一個具有極端值,因而遠離大部分其他觀測資料。cook距離(cook's distance)是一個結合了離群值和高杠杆率的概念來識别對資料具有高影響的那些點的典型衡量名額。要更深入地探索線性回歸的診斷方法,有一個很好的參考書是john fox編寫的《an r companion to applied regression》,由sage publications出版。

為了展示去除一個離群值的效果,我們要通過利用去掉觀測資料 200 的訓練資料建立一個新的cpu模型。然後,觀察新模型是否在訓練資料上有所改善。這裡,我們會顯示所采取的步驟和隻有最後三行的模型摘要片段:

正如從減小的rse和調整後的r2統計量看到的,我們在訓練資料上得到了更好的拟合。當然,模型精确度的實際衡量還要看它在測試資料上的表現,我們也無法保證把觀測資料200标記為虛假離群值的決定一定是正确的。

a我們得到了一個比以前更小的測試mse,這往往是表明我們作出了正确選擇的一個良好迹象。這裡要再說一遍,因為測試集比較小,是以我們也無法肯定這個事實,盡管從mse迹象來看是正面的。

繼續閱讀