多元回归理论及R语言实现(转载基础上添加自己的新代码)

回归分析是研究两个变量之间的不确定性关系,考察变量之间的数量变化规律,通过回归方程的形式描述和反映这种关系,帮助人们挖掘出变量之间隐藏的规律。


建立回归模型的一般过程为:

1)建立理论回归模型

2)估计模型参数

3)回归模型检验

4)模型诊断

5)利用回归方程进行预测


以下是RStudio实现过程:

1、建立模型及显著性检验

getwd()
setwd("E:")
A=read.csv("多元回归数据.csv")#读取数据集
A
fix(A)#修改变量名字
A=A[,-c(5,6)]#删除x4,x5两个变量
A
library(car)
scatterplotMatrix(~y+x1+x2+x3,data=A,main="散点图")#绘制各个变量的散点图

利用car包中的scatterplotMatrix函数绘制矩阵散点图,以便观察自变量与因变量的关系,可以看到,y与各自变量之间呈现出一定的线性关系。或者用plot(A) A为数据集名称 直接画图。或者plot(Y~X1);abline(lm(Y~X1))

多元回归理论及R语言实现(转载基础上添加自己的新代码)


所以下一步建立回归方程,将y对x1、x2、x3三个变量进行多元回归。通过summary函数显示model.lm对象中的详细信息。

可以看到,调整R2为0.704;回归方程显著性的F检验中,P值小于显著性水平α(假设取0.05),表明选择线性模型合理。

多元回归理论及R语言实现(转载基础上添加自己的新代码)


在回归系数显著性检验中,x1不显著,所以把x1直接剔除。再次进行回归,此时调整R2=0.704,回归方程显著,且各回归系数在显著性水平0.001下显著,所以该模型可用。

多元回归理论及R语言实现(转载基础上添加自己的新代码)


2、回归诊断

(1)残差项的正态性检验和等方差性检验

      借助残差图进行,从右上Q-Q图可见,仍有部分残差点有规律地落在对角线之外;从左边两个图可见,误差项的方差随着y的拟合值而变化,尤其在y的拟合值>20之后,残差的方差有所增大。所以可近似地认为不满足残差项的正态性、等方差假定。residuls(remodel.lm)即可提取残差列。

多元回归理论及R语言实现(转载基础上添加自己的新代码)


基于残差不满足正态性、等方差性,所以对模型进行改进,对y进行对数变换后再回归。

多元回归理论及R语言实现(转载基础上添加自己的新代码)


多元回归理论及R语言实现(转载基础上添加自己的新代码)


可见残差的正态性、等方差性基本上得到了满足,而且R2比之前的0.7049还大,说明建立对数模型是合理的。

用car包中的ncvTest函数再次检验异方差,P值>0.05所以基本上满足了等方差性。

多元回归理论及R语言实现(转载基础上添加自己的新代码)

(2)多重共线性检验

从多重共线性检验效果来看,VIF<10,多重共线性还可以容忍。如果存在多重共线性可以直接删除变量,也可以通过岭回归等有偏估计处理。

多元回归理论及R语言实现(转载基础上添加自己的新代码)

(3)自相关检验

自相关关系主要存在于时间序列数据中,当然截面数据也有可能存在自相关,这种情况通常是由于遗漏了某些重要的解释变量或者模型设定偏误导致的。在截面数据中,对于异方差的处理一般就是添加忽略掉的解释变量或者调整模型,也可以用序列相关稳健标准误修正相应的方差。在时间序列数据中当以上方法不能满足时则需要用一阶差分法、广义差分法、序列相关稳健标准误等。

残差自相关的 Durbin-Watson 检验:


library(lmtest)
x <- rnorm(100)
y <- 2 * x + rt(100,9)
res <- lm(y~x)
dwtest(res)

        Durbin-Watson test

data:  res 
DW = 1.80, p-value = 0.1498
alternative hypothesis: true autocorrelation is greater than 0 

接受原假设

或者用bgtest()检验

多元回归理论及R语言实现(转载基础上添加自己的新代码)


P值<0.05,说明残差存在自相关性,这里采用尼威-韦斯特稳健标准误修正相应的方差,它能够同时针对异方差、自相关进行修正,这种方法估计出的参数与OLS的相同,只是修正了参数的方差,消除自相关、异方差的存在带来的不良后果。

尼威-韦斯特稳健标准误能同时修正异方差和序列相关,而且只对大样本(50以上)有效,修正后参数系数不变,但标准误已改变,所以t值等等就改变。

多元回归理论及R语言实现(转载基础上添加自己的新代码)

(4)异常值检测

利用car包中的influencePlot函数可以将各类异常值可视化。横坐标为杠杆值,纵坐标是学生化残差,圆圈大小表示库克距离的大小。可见117号观测点是强影响点,388号为离群点,14号为高杠杆值点。

多元回归理论及R语言实现(转载基础上添加自己的新代码)


对于强影响点的删除需要谨慎,删除或者包含强影响点都可能会导致回归方程的截距和斜率产生很大的变化。可以先把异常值删除,再重新回归。

至此,最终回归模型已确立:。表示在x3一定的条件下,x2每增加100个单位,y将会减少26个单位。