回归诊断技术提供了评价回归模型使用性的必要工具,能帮助发现并且纠正问题。

有几种方法进行回归诊断。

分别是 标准方法、car包中的函数、gvlma函数 。建议先通过 gvlma函数 进行验证,如果违反假设条件,再使用其他方法来判断哪些假设没有满足并进行修改。

第一种:标准方法(了解),对lm()函数的返回对象使用plot()函数。

> fit<-lm(weight~height,data=women)
> par(mfrow=c(2,2))
> plot(fit)

最好满足线性假设(左上),残差正态性(右上)和同方差性(左下)。

线性假设:若因变量与自变量线性相关,那么残差值和预测值应该没有任何关联。如果在左上图中看到清楚的曲线关系,那么需要对回归模型加上一个二次项。

正态性:若满足正态假设,那么右上图的点应该落在呈45度角的直线上。

同方差性:若满足不变方差假设,那么左下图中,水平线周围的点应该随机分布。

从上面四个图可见,这次的拟合看起来满足了正态性和同方差性,但是最好对回归模型加上一个二次项来满足线性假设。

> fit<-lm(weight~height+I(height^2),data=women)
> par(mfrow=c(2,2))
> plot(fit)

这样看起来就满足了线性假设,残差正态性和同方差性。
右下的图为残差杠杆图,可以鉴别出离群点、高杠杆点和强影响点。可以通过剔除强影响点来提高模型的拟合程度,但是后面还有更好的呈现方法,所以这里就不对这张图作深入,稍微了解即可。

方法二:使用car包中的函数进行验证:

1、正态性:通过qqPlot()检测正态性

> library(car)
> fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
> qqPlot(fit,labels=row.names(states),id.method="identify",simulate=TRUE,main="Q-Q Plot")

看起来除了Nevada和Rhode Island,其他州通过模型,根据该州的人口、收入、文盲率和温度预测所得的谋杀率结果都十分理想。

2、误差的独立性:通过函数作Durbin-Wstson检验

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

p值是0.234,显然误差项之间相互独立

3、线性
使用car包中的crPlots()函数绘制。

> library(car)
> crPlots(fit)

如果图中显示出了非线性的关系,可能说明假设的模型不够精确,需要添加适当的曲线成分,比如多项式项或者对其中的变量进行变换(例如用log(x)代替x)。
从图中看,似乎线性模型对这个数据集是比较合适的。

4、同方差性:
car包提供了两个函数:
**ncvTest():**生成一个计分检验。若检验显著,则拒绝零假设。
**零假设:**误差方差不变
**备选假设:**误差方差随着拟合值水平变化而变化
**spreadLevelPlot():**创建添加了最佳拟合曲线的散点图。

> ncvTest(fit)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 1.746514, Df = 1, p = 0.18632

p=0.18,不显著,说明满足方差不变的假设。

> spreadLevelPlot(fit)
Suggested power transformation:  1.209626 

也可以通过这个函数绘制出来的图片看到出这个结论,如果违反假设,那么会看到非水平的曲线。其中suggested power transformation为建议转换的幂,比如如果为0.5,那么fit可以改为:

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

方法三:使用gvlma()函数进行线性模型假设的综合验证
它给模型提供了一个单独的综合检验(通过/不通过)

> library(gvlma)
> gvmodel<-gvlma(fit)
> summary(gvmodel)

可见,Global Stat中,p=2.5965 ,满足OLS回归模型中的所有统计假设。若p值过小,可以使用前面的方法来判断哪些假设没有被满足。

PS:
多重共线性:

多重共线性是指线性回归模型中的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确,具体表现为模型参数的置信区间过大,使单个系数难以解释。

可以使用car包中的vif函数计算vif值,一般原则下,如果(vif)^(1/2) >2就表明村庄多重共线问题(结果为TRUE)。

> library(car)
> fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
> vif(fit)
Population Illiteracy     Income      Frost 
  1.245282   2.165848   1.345822   2.082547 
> sqrt(vif(fit))>2#problem?
Population Illiteracy     Income      Frost 
     FALSE      FALSE      FALSE      FALSE 

可见,此模型不存在多重共线性问题,

8.3回归诊断回归诊断技术提供了评价回归模型使用性的必要工具,能帮助发现并且纠正问题。有几种方法进行回归诊断。分别是标准方法、car包中的函数、gvlma函数。建议先通过gvlma函数进行验证,如果违反假设条件,再使用其他方法来判断哪些假设没有满足并进行修改。第一种:标准方法(了解),对lm()函数的返回对象使用plot()函数。&gt; fit&lt;-lm(weight~height...
回归诊断 在前面,我们给出了利用逐步回归来选择对因变量Y影响最显著的自变量进入回归方程的方法,并且还可以利用AIC准则或其他准则来选择最佳回归模型。但是这些只是从选择自变量上来研究,而没有对回归模型的一些特性做更进一步的研究,并且没哟研究一引起样本问题,异常样本的存在往往会给回归模型带来不稳定。为此,人们提出所谓回归诊断的问题(regression diagnostics),其主要内容如下:
通过课上的内容,我们可以使用lm()函数拟合回归模型,通过summary()函数获取模型系数及其显著性检验结果。但是,没有任何输出告诉你这个模型适是否合适,模型是否正确依赖于它在多大程度上满足了OLS回归的假设条件。 首先,我们有必要回顾一下线性回归的一系列前提假设: 1.因变量与自变量之间有线性关系(线性) 2.各观测值之间相互独立(独立性) 3.残差服从N(0, σ^2)的正态分
人们提出所谓回归诊断的问题,其主要内容有:关于误差项是否满足:独立性、等方差性、正态性。选择线性模型是否合适是否存在异常样本回归分析的结果是否对某些样本依赖过重,也就是回归模型是否具有稳定性自变量之间是否存在高度相关,即是否存在多重共线性下面我们通过一个小例子来大体认识一下回归诊断的重要性。一、使用散点图显示变量之间的关系及修正过程:Anscombe&lt;-data.frame( X =c(...
线性回归中的一个关键假设是残差之间不存在相关性,即残差是独立的。 确定是否满足这个假设的一种方法是执行Durbin-Watson检验,该检验用于检测回归残差中自相关性(autocorrelation)的存在与否。 Durbin-Watson Tes