R in action讀書筆記(9)-第八章:回歸 -回歸診斷


8.3回歸診斷

> fit<-lm(weight~height,data=women)

> par(mfrow=c(2,2))

> plot(fit)

為理解這些圖形,我們來回顧一下oLs回歸的統計假設。

口正態性當預測變量值固定時,因變量成正態分布,則殘差值也應該是一個均值為0的正態分布。正態Q-Q圖(Normal Q-Q,右上)是在正態分布對應的值下,標准化殘差的概率圖。若滿足正態假設,那么圖上的點應該落在呈45度角的直線上;若不是如此,那么就違反了正態性的假設。

口獨立性你無法從這些圖中分辨出因變量值是否相互獨立,只能從收集的數據中來驗證。上面的例子中,沒有任何先驗的理由去相信一位女性的體重會影響另外一位女性的體重。假若你發現數據是從一個家庭抽樣得來的,那么可能必須要調整模型獨立性的假設。

口線性若因變量與自變量線性相關,那么殘差值與預測(擬合)值就沒有任何系統關聯。換句話說,除了自噪聲,模型應該包含數據中所有的系統方差。在“殘差圖與擬合圖”( Residuals vs Fitted,左上)中可以清楚的看到一個曲線關系,這暗示着你可能需要對回歸模型加上一個二次項。

口同方差性若滿足不變方差假設,那么在位置尺度圖(Scale-Location Graph,左下)中,水平線周圍的點應該隨機分布。該圖似乎滿足此假設。最后一幅“殘差與杠桿圖”(Residuals vs Leverage,右下)提供了你可能關注的單個觀測點的信息。從圖形可以鑒別出離群點、高杠桿值點和強影響點。

8.3.2改進的方法

qqPlot() 分位數比較圖

durbinWatsonTest()對誤差自相關性做Durbin-Watson檢驗

crPlots()成分與殘差圖

ncvTest()對非恆定的誤差方差做得分檢驗

spreadLevelPlot()分散水平檢驗

outlierTest()Bonferroni離群點檢驗

avPlots()添加的變量圖形

inluencePlot()回歸影響圖

scatterplot()增強的散點圖

scatterplotMatrix()增強的散點圖矩陣

vif()方差膨脹因子

1.正態性

與基礎包中的plot ( )函數相比,qqPlot()函數提供了更為精確的正態假設檢驗方法,它畫出了在n-p-1個自由度的t分布下的學生化殘差(( studentized residual,也稱學生化刪除殘差或折疊化殘差)圖形,其中n是樣本大小,p是回歸參數的數目(包括截距項)。

Eg:

> library(car)

> states=data.frame(state.region,state.x77)

> fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)

> qqPlot(fit,labels=row.names(states),id.method="identify",simulate=TRUE,main="Q-QPlot")

 

繪制學生化殘差圖的函數

residplot<-function(fit,nbreaks=10){

z<-rstudent(fit)

hist(z,breaks=nbreaks,freq=FALSE,

xlab="Studentized Residual",

main="Distribution of Errors")

rug(jitter(z),col="brown")

curve(dnorm(x,mean=mean(z),sd=sd(z)),

add=TRUE,col="blue",lwd=2)

legend("topright",legend=c("NormalCurve","Kernel Density Curve"),

lty=1:2,col=c("blue","red"),cex=.7)

}

residplot(fit)

2.誤差的獨立性

car包提供了一個可做Durbin-Watson檢驗的函數,能夠檢測誤差的序列相關性。

> durbinWatsonTest(fit)

lagAutocorrelation D-W Statistic p-value

1 -0.2006929 2.317691 0.284

Alternative hypothesis: rho != 0

3. 線性

通過成分殘差圖(component plus residual plot)也稱偏殘差圖(partialresidual plot),你可以看看因變量與自變量之間是否呈非線性關系,也可以看看是否有不同於已設定線性模型的系統偏差,圖形可用car包中的crPlots()函數繪制。

4. 同方差性

ncvTest()函數生成一個計分檢驗,零假設為誤差方差不變,備擇假設為誤差方差隨着擬合值水平的變化而變化。若檢驗顯著,則說明存在異方差性(誤差方差不恆定)。spreadLevelPlot()函數創建一個添加了最佳擬合曲線的散點圖,展示標准化殘差絕對值與擬合值的關系

檢驗同方差性

> library(car)

> ncvTest(fit)

Non-constant Variance Score Test

Variance formula: ~ fitted.values

Chisquare = 1.746514 Df = 1 p = 0.1863156

> spreadLevelPlot(fit)

Suggested power transformation: 1.209626

8.3.3 線性模型假設的綜合驗證

gvlma包中的gvlma()函數

> library(gvlma)

> gvmodel<-gvlma(fit)

> summary(gvmodel)

Call:

lm(formula = Murder ~Population + Illiteracy + Income + Frost,

data = states)

Residuals:

Min 1Q Median 3Q Max

-4.7960 -1.6495-0.0811 1.4815 7.6210

Coefficients:

Estimate Std. Error t valuePr(>|t|)

(Intercept)1.235e+00 3.866e+00 0.319 0.7510

Population 2.237e-04 9.052e-05 2.471 0.0173 *

Illiteracy 4.143e+00 8.744e-01 4.738 2.19e-05 ***

Income 6.442e-05 6.837e-04 0.094 0.9253

Frost 5.813e-04 1.005e-02 0.058 0.9541

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1

Residual standarderror: 2.535 on 45 degrees of freedom

MultipleR-squared: 0.567, Adjusted R-squared: 0.5285

F-statistic: 14.73 on 4and 45 DF, p-value: 9.133e-08

ASSESSMENT OF THELINEAR MODEL ASSUMPTIONS

USING THE GLOBAL TESTON 4 DEGREES-OF-FREEDOM:

Level of Significance= 0.05

Call:

gvlma(x = fit)

Value p-value Decision

Global Stat 2.7728 0.5965 Assumptions acceptable.

Skewness 1.5374 0.2150 Assumptions acceptable.

Kurtosis 0.6376 0.4246 Assumptions acceptable.

Link Function 0.1154 0.7341 Assumptions acceptable.

Heteroscedasticity0.4824 0.4873 Assumptions acceptable.

8.3.4 多重共線性

多重共線性可用統計量VIF(Variance Inflation Factor,方差膨脹因子)進行檢測。VIF的平

方根表示變量回歸參數的置信區間能膨脹為與模型無關的預測變量的程度(因此而得名)。car

包中的vif()函數提供VIF值。一般原則下,vif >2就表明存在多重共線性問題

檢測多重共線性:

> library(car)

> vif(fit)

PopulationIlliteracy Income Frost

1.245282 2.165848 1.345822 2.082547

> sqrt(vif(fit))>2

PopulationIlliteracy Income Frost

FALSE FALSE FALSE FALSE


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM