vlambda博客
学习文章列表

R语言—回归诊断(2)

上期介绍了回归诊断的标准方法,但是还有一些改进的方法可以更好的对回归模型进行验证。
(一)线性模型假设综合验证
使用gvlma包中的gvlma()函数。

#回归诊断

> state<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

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

> library(gvlma)

> gvmodel<-gvlma(fit)

> summary(gvmodel)

我们可以看到数据满足OLS回归模型所有的统计假设(p=0.597),若p<0.05)则可用以下方法继续检测。
(二)car包中提供多个拟合和评价回归模型的函数
(1)正态性
检验正态性可以用car包中的qqPlot()函数。

>library(car)

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

R语言—回归诊断(2)

在上图可以很清楚的看到大多数的点均落在置信区间内,但Nevada点离直线比较远,说明该模型在该点时有较大的正残差值,也就是说模型在该点的预测是不准确的。
(2)独立性

>library(car)

>durbinWatsonTest(fit)

R语言—回归诊断(2)

结果表明p>0.05,说明变量之间相互独立,符合独立性。
(3)线性

>library(car)

>crPlots(fit)

R语言—回归诊断(2)

本图中线性关系良好,若存在非线性,说明可能对预测变量的函数形式建模不够充分,那么就需要添加一些非线性成分,如添加多项式项等。
(4)同方差性

>library(car)

>ncvTest(fit)

R语言—回归诊断(2)

结果中p>0.05,表明满足同方差性。
(5)多重共线性

>library(car)

>vif(fit)

>sqrt(vif(fit))>2

R语言—回归诊断(2)

若vif的平方根大于2,说明存在多重共线问题,本结果中均小于2,表明不存在多重共线问题。
以上就是回归诊断的常用方法,这些是对模型很重要的评价手段,我们可以根据评价结果对所建模型进行修改。下期将会介绍模型中异常观测值的处理,明天见喽!

扫描二维码

获取更多精彩

大康的笔记

R语言—回归诊断(2)