R語言實戰第八章:回歸
8.1 OLS 回歸
8.2.1 用lm擬合回歸模型
當回歸模型包含一個因變數和一個自變數時,我們稱為簡單線性回歸。當只有一個預測變數,但同時包含變數的冪(比如, X、 X2、 X3)時,我們稱為多項式回歸。當有不止一個預測變數時,則稱為多元線性回歸 。
在R中,擬合線性模型最基本的函數就是lm( ),格式為:myfit <- lm(formula, data)其中, formula指要擬合的模型形式, data是一個數據框,包含了用於擬合模型的數據。結果對象存儲在一個列表中,包含了所擬合模型的大量信息。
表達式(formula)形式如下:Y ~ X1 + X2 + ... + Xk
~左邊為響應變數,右邊為各個預測變數,預測變數之間用+符號分隔。
對擬合線性函數的其他函數:
1.summary( )展示擬合的詳細情況
2.coefficients( ) 列出擬合模型的參數(截距項和斜率)
3.confint( )提供擬合模型的置信區間
4.fitted( )列出擬合模型的預測值
5.residuals( )列出擬合模型的殘差值
從上面可以看出weight^=-87.5+3.45height。
在Pr(>|t|)欄,可以看到回歸係數(3.45)顯著不為0(p<0.001),表明身高每增高1英寸,體重將預期增加3.45磅。 R平方項(0.991)表明模型可以解釋體重99.1%的方差,它也是實際值和預測值之間相關係數的平方。殘差標準誤(1.525 lbs)則可認為是模型用身高預測體重的平均誤差。 F統計量檢驗所有的預測變數預測響應變數是否都在某個幾率水平之上。由於簡單回歸只有一個預測變數,此處F檢驗等同於身高回歸係數的t檢驗。
注意:abline( )函數和line( )的區別
①函數lines( )其作用是在已有圖上加線,命令為lines(x,y),其功能相當於plot(x,y,type="1")
②函數abline( )可以在圖上加直線,其使用方法有四種格式。
(1)abline(a,b)表示畫一條y=a+bx的直線
(2)abline(h=y)表示畫出一條過所有點得水平直線
(3)abline(v=x)表示畫出一條過所有點的豎直直線
(4)abline(lm)表示繪出簡單線性模型得到的線性方程
8.2.2 多項式回歸
圖8.1顯示如果我們能添加一個二次項x的平方或許能使模型擬合得更加好。
weight^=261.87-7.35*height+0.08*height^2
在p<0.001水平下,回歸係數都非常顯著。模型的方差解釋率已經增加到了99.9%。二次項的顯著性(t=13.89, p<0.001)表明包含二次項提高了模型的擬合度 。
依次類推我們依然能擬合更高次多項式。
對於二元回歸我們可以採用car包中的scatterplot( )函數簡單直觀繪製二元關係
scatterplot( formual , data , xlab=" " , ylab=" " , main=" " , spread= , smooth.args=list( ) )
①spread=FALSE選項刪除了殘差正負均方根在平滑曲線上的展開和非對稱信息
②smoother.args=list(lty= )選項設置loess擬合曲線
8.2.4 多元線性回歸
當預測變數不止一個時,簡單線性回歸就變成了多元線性回歸,分析也稍微複雜些。從技術上來說,多項式回歸可以算是多元線性回歸的特例:二次回歸有兩個預測變數(X和X2),三次回歸有三個預測變數(X、 X2和X3) 。
對於多元線性回歸的學習我們採用基礎安裝包中的state.x77數據集。
第一步:數據集的探索
這裡我們僅僅選取五個變數Population Income Illiteracy Frost Muder進行研究。
第二步:檢查變數間的相關性
兩種方法:
①cor函數檢驗二變數間的相關性
②car包中的scatterplotMatrix( )函數生成散點圖矩陣
scatterplotMatrix()函數默認在非對角線區域繪製變數間的散點圖,並添加平滑和線性擬合曲線。對角線區域繪製每個變數的密度圖和軸須圖。
通過cor函數可以看出謀殺率隨著人口和文盲率的增加而增加,隨著收入水平和結霜天氣的增加而減少。當然在散點圖矩陣中我們依然能得出上述結論。
對相關係數進行顯著性檢驗
首先通過上面我們求解到了相關係數,但是這個相關係數是確實存在的還是由於我們的誤差導致,我們不知道。這裡我們就需要對相關係數進行顯著性檢驗。
相關係數顯著性檢驗原假設是在p<0.001的水平下相關係數顯著為0,備擇假設相關係數顯著不為0。
如圖謀殺率和文盲率的相關係數為0.7,其檢驗結果顯示相關係數顯著不為0.
第三步:lm函數擬合回歸模型
由上述代碼得知:R平方項(0.567)表明模型可以解釋犯罪率56.7%的方差,它也是實際值和預測值之間相關係數的平方。由結果可以看出:
p值越小,回歸效果越顯著,並且後面星級越高,R-squared數字越接近於1,回歸效果越好。
當然文盲率的回歸係數為4.14,在p<0.001水平下顯著不為0,在控制其他變數不變的情況下,文盲率每增加1%,犯罪率增加4.14%。再看結霜Frost係數對應p值為0.9541,沒有顯著不為0,控制其他變數不變時,Murder和Frost不呈線性相關。擬合模型時,我們可以考慮Frost的二次項。當然再此之前我們先考慮其交互性,在這裡我僅僅只考慮收入和文盲率的交互性以提高回歸模型的預測精度。
從圖8.6中,我們可以看出隨著文盲率的增加,收入水平對謀殺率的影響漸漸減少。
第四步:回歸診斷
再次之前我們的回歸模型基本已經擬合完成,使用lm()函數來擬合OLS回歸模型,通過summary()函數獲取模型參數和相關統計量。但是,沒有任何輸出告訴你模型是否合適,你對模型參數推斷的信心依賴於它在多大程度上滿足OLS模型統計假設 ,為了能使我們的模型更加準確我們需要對暗含的統計量進行檢驗。因為數據的無規律性或者錯誤設定了預測變數與響應變數的關係,都將致使你的模型產生巨大的偏差。一方面,你可能得出某個預測變數與響應變數無關的結論,但事實上它們是相關的;另一方面,情況可能恰好相反。當你的模型應用到真實世界中時,預測效果可能很差,誤差顯著。
結果表明,文盲率改變1%,謀殺率就在95%的置信區間[2.38, 5.90]中變化。另外,因為Frost的置信區間包含0,所以可以得出結論:當其他變數不變時,溫度的改變與謀殺率無關。當然,我們對這些結果的信念,都只建立在你的數據滿足統計假設的前提之上 。我們還需要進行回歸診斷檢驗其準確性。
方法1:標準方法
最常見的方法就是對lm( )函數返回的對象使用plot( )函數,可以生成評價模型擬合情況的四幅圖形 。
OLS回歸的統計假設
① 正態性 當預測變數值固定時,因變數成正態分布,則殘差值也應該是一個均值為0的正態分布。「正態Q-Q圖」(Normal Q-Q,右上)是在正態分布對應的值下,標準化殘差的概率圖。若滿足正態假設,那麼圖上的點應該落在呈45度角的直線上;若不是如此,那麼就違反了正態性的假設。
②獨立性:在這裡我們並不知道各州的犯罪率是否獨立
③線性: 若因變數與自變數線性相關,那麼殘差值與預測(擬合)值就沒有任何系統關聯。換句話說,除了白雜訊,模型應該包含數據中所有的系統方差。在「殘差圖與擬合圖」(Residuals vs Fitted,左上)中可以清楚地看到一個曲線關係,這暗示著你可能需要對回歸模型加上一個二次項。
④同方差性 :若滿足不變方差假設,那麼在「位置尺度圖」(Scale-Location Graph,左下)中,水平線周圍的點應該隨機分布。該圖似乎滿足此假設。
最後一幅「殘差與槓桿圖」(Residuals vs Leverage,右下)提供了你可能關注的單個觀測點的信息。從圖形可以鑒別出離群點、高槓桿值點和強影響點。下面來詳細介紹。
? 一個觀測點是離群點,表明擬合回歸模型對其預測效果不佳(產生了巨大的或正或負的殘差)。
? 一個觀測點有很高的槓桿值,表明它是一個異常的預測變數值的組合。也就是說,在預測變數空間中,它是一個離群點。因變數值不參與計算一個觀測點的槓桿值。
? 一個觀測點是強影響點(influential observation),表明它對模型參數的估計產生的影響過大,非常不成比例。強影響點可以通過Cook距離即Cook』s D統計量來鑒別。
方法2:car包
1. 正態性檢驗
與基礎包中的plot( )函數相比, qqPlot()函數提供了更為精確的正態假設檢驗方法,它畫出了在n–p–1個自由度的t分布下的學生化殘差(studentized residual,也稱學生化刪除殘差或摺疊化殘差)圖形,其中n是樣本大小, p是回歸參數的數目(包括截距項)。
除了Nevada,所有的點都離直線很近,並都落在置信區間內,這表明正態性假設符合得很好。但是也必須關注Nevada
可以看到, Nevada的謀殺率是11.5%,而模型預測的謀殺率為3.9%。學生化殘差大約為3.5。
下面我們直接畫出學生化殘差圖
如圖所示除了一個離群點(3.5位置的點)以外,其餘很好的服從正態分布。
2.誤差的獨立性檢驗
car包提供了Durbin-Watson檢驗的函數以檢測誤差的相關性
①以p=0.05為基準,由於p=0.242>0.05所以p不顯著,無相關性,誤差項之間相互獨立。
②滯後項lag=1表示數據集中的每一個數據都是與其後一個數據做比較。
③Durbin-watson檢驗僅僅適用於時間獨立的數據,對於非聚集性數據無法檢驗
④duibinwatsonTest函數使用自助法求導p值,如果添加simulate=T每次運行的結果不一樣。
3.線性檢驗
對於線性檢驗只需要通過成分殘差圖(偏殘差圖)檢驗自變數與因變數之間是否呈線性關係。圖形通過car包中的crplot函數繪製。
成分殘差圖繪製Y VS X的關係圖以及e(殘差)+Y VS X關係圖。當成分殘差圖存在非線性時說明我們對預測變數的函數建模不夠理想,這時我們可以根據圖形情況添加二次項或者多項式。
> crPlots(fit3)
從圖中可以看出大致符合線性假設。
4.同方差性檢驗
car包提供兩個函數可以判斷誤差方差是否恆定。
①ncvTest函數生成一個計分檢驗,原假設為誤差方差恆定不變,備擇假設誤差方差隨著擬合值的水平變化而變化。若顯著則說明存在異方差性(誤差方差不恆定)
由於p=0.19<0.5所以p值不顯著,則符合方差不變性。
②除此之外我們還可以通過分布水平圖檢驗是否符合方差不變性。
spreadLevelplot函數創建一個添加最佳擬合曲線的散點圖,展示標準化殘差圖絕對值與擬合值的關係。
通過分布水平圖,圖中的點在最佳水平擬合曲線周圍呈水平隨機分布,說明滿足方差不變性。如果不滿足誤差方差不變性圖中的最佳擬合曲線應該是一條非直線。同時代碼中建議冪次變化指經過p次冪變化即Y的p次冪變換,不恆定的誤差趨於平衡。
5.線性模型假設的綜合檢驗
gvlma包中的gvlma函數能對線性模型進行綜檢驗同時也能對偏斜度,峰度和異方差性進行評價即通過與否評價。
從輸出項(Global stat)我們可以看出數據滿足OLS回歸模型所有的統計假設。若decision下的文字表面違反了假設條件(p<0.05),那麼需要用前面的知識分開檢驗那些沒有滿足條件。
2018.1.7續接上文:
6.多重共線性檢驗
①多重共線性(Multicollinearity)是指線性回歸模型中的解釋變數之間由於存在精確相關關係或高度相關關係而使模型估計失真或難以估計準確。多重共線性使參數估計值的方差增大,1/(1-r2)為方差膨脹因子,如果方差膨脹因子值越大,說明共線性越強。
②多重共線性檢驗和假設檢驗沒有直接關係。
③在R語言中多重共線性可用方差膨脹因子VIF檢驗。VIF的平方根表示變數回歸參數的置信區間能膨脹到與模型無關的預測變數的程度。car包中的vif函數提供VIF值,一般情況下VIF的平方根>2就表明存在多重共線性。
8.3 異常值觀測
一個回歸分析需要覆蓋對異常值的分析,包括離群點,高槓桿值點,強影響點
8.3.1 離群點
離群點指那些模型預測效果不佳的觀測點
鑒別離群點的三種方法:
①在Q - Q圖中落在置信區間以外的點可以視為離群點
②粗略判別:標準化殘差>2或<2的點需要注意,可能是離群點
③car包提供outlierTest函數進行統計檢驗,outlierTest函數提供最大標準化殘差絕對值Bonferror調整後的p值。注意outlierTest函數只是根據單個最大(正,負)標準化殘差的顯著性來判斷是否有離群點,若不顯著說明沒有離群點,若顯著說明有離群點。
在此例中p=0.47544<0.05顯著,說明有離群點Nevada。
8.3.2 高槓桿值點
高槓桿值點指與其他預測變數有關的離群點,或者說高槓桿值點是其他異常預測變數組合起來的,與響應變數無關。
高槓桿值點可以通過帽子統計量判斷。對於給定的數據集,帽子均值為p/n,其中p是模型估計的參數數目,n是樣本量。一般來說若觀測值的帽子值大於帽子均值的2倍或3倍,可以視為高槓桿值點。
或者創建hat.plot函數也可以實現
8.3.3 強影響點
強影響點即對模型參數估計值有比例失衡的點。如果我們移除一個觀測點,模型會發生巨大的改變,這或許就是強影響點在作怪,我們需要檢查是否有強影響點存在。
兩種方法檢驗:
①cookD距離(D統計量)檢驗。一般來說如果cook距離大於4/(n-k-1)則可以判斷為強影響點。n為樣本數量,k為預測變數數目。
通過圖可以看出Alaska,Hawaill,Nevada為強影響點。刪除這些點,模型的截距項和斜率會發生顯著變化。 當然從cookD圖中,我們無法探知這些強影響點如何影響模型參數的。
②變數添加圖
> avPlots(fit3,ask=F,id.method="identify")
圖中直線表示相應預測變數的實際回歸係數。當然我們看到左下角圖形Nevada點的影響效果,如果我們刪除Nevada點,直線斜率必然向下傾斜,由於Nevada點拉動直線向上,所以刪除直線斜率減少。
③影響圖
通過car包中的influencePlot函數將強影響點和高槓桿值點,離群點整合到一個影響圖中。
一般情況下:縱坐標大於2或者小於-2的點被認為是離群點,水平軸超過0.2或者0.3的點被認為是高槓桿值點,圓圈大小與影響成比例,圓圈很大的點可能對模型參數估計造成不成比例的影響。
8.4 改進措施
四種方法處理違背回歸假設的問題
推薦閱讀:
TAG:R語言實戰書籍 | R語言數據分析與挖掘實戰書籍 | 數據分析 |