第 5 章 多重共线性的诊断和矫正
5.1 实验目的及要求
- 目的:掌握多重共线性的检验与处理方法。
- 要求:在老师指导下完成计量经济模型的多重共线性检验,并对存在多重共线性的模型进行修正,最终得到正确的分析结果。
5.2 实验原理
线性回归模型的解释变量不满足相互独立的基本假设前提下,如果模型的解释变量存在多重共线性,将导致最小二乘法得到的模型参数估计量非有效且方差变大,参数估计量经济含义不合理等。
5.2.1 什么是模型多重共线性?
Yi=β1+β2X2i+β3X3i+⋯+βkXki+ui(PRM)Yi=ˆβ1+ˆβ2X2i+ˆβ3X3i+⋯+ˆβkXki+ei(SRM)
ffalse{-91-22810-37325-20849-32447-24615-93-}定义 5.1 \iffalse (多重共线性) 在多元线性回归模型中,各解释变量{X2,X3,⋯,Xk}之间有交互相关,但又非完全相关的现象。正式地:
λ2X2i+λ3X3i+⋯+λkXki+vi=0
其中,vi为随机误差项。
我们称总体回归模型(5.1)存在多重共线性,此时λ1;λ2;⋯;λk不全为0,且vi≠0。
我们称总体回归模型(5.1)存在完全多重共线性,此时λ1;λ2;⋯;λk不全为0,且vi=0。如果模型出现多重共线性问题,在N-CLRM假设下,OLS估计量仍然是最优线性无偏估计量(BLUE):
- 只要不是完全共线性,在近似多重共线性的情形下,OLS估计量仍然是无偏的
- 只要不是完全共线性,在近似多重共线性的情形下,OLS估计量的方差一定是小的
- 多重共线性本质上是一种样本现象。即使总体中X变量间不存在共线性,由于抽样方法或小样本问题,也可能带来多重共线性问题
但是如果模型出现多重共线性问题,则往往会带来如下一些理论后果:
- 更大的方差和协方差,估计精度大大下降。(尽管OLS估计仍是BLUE)
- 参数估计置信区间变宽,系数的检验倾向于不显著。(即回归系数的t检验更倾向接受原假设H0,认为系数为零)
- 系数的t值倾向于统计上不显著,但判定系数R2却会很高
- 0LS估计量及其标准误对数据的微小变化非常敏感
5.2.2 如何诊断模型多重共线性问题?
为了诊断样本回归模型(5.2)是否存在多重共线性问题,并判明其严重程度,我们一般可以采用如下的经验方法:
- 主回归方程分析报告结果异常。根据样本回归模型(5.2),如果出现如下情形,我们认为回归方程结果异常,很有可能模型存在多重共线性问题:
- 主回归分析报告的R2值高(大于0.8)
- 分析报告F∗检验显著
- 但不显著的t∗检验较多(多于回归系数个数的一半及以上)
- 图形分析发现自变量之间存在明显相关关系。利用样本数据,我们可以分析得到自变量之间的相关系数矩阵和矩阵散点图,如果出现如下情形,我们认为回归方程结果异常,很有可能模型存在多重共线性问题:
- 相关系数矩阵发现高度线性相关(相关系数大于0.8)
- 散点图矩阵发现高度线性相关的数据分布模式
- 分析检查辅助回归方程是否异常。首先构建主回归方程,然后分别构建回归元之间的辅助回归方程。如果出现如下情形,我们认为回归方程结果异常,很有可能模型存在多重共线性问题:
- 辅助回归方程的判定系数R2j大于主回归方程的判定系数R2
- 辅助回归方程的方差膨胀因子:VIFj∈[10,100]表明中度多重共线性;VIFj≥100表明严重多重共线性
- 辅助回归方程的的容忍度:TOLj∈[0.01,0.1]表明中度多重共线性;TOLj≤0.01表明严重多重共线性
- 利用回归系数方差分解法(Coefficient Variance Decomposition)。通过计算特征值(eigenvalues),进而得到病态数(Kj)和方差分解比率VDPj,最后做出多重共线性的诊断结论:
- 若发现至少一个病态数 Kj≤0.001,则表明存在严重多重共线性;
- 观察病态数最小时所对应的方差分解比率,如果有多个斜率系数的 VDPj≥0.5,则表明存在严重的多重共线性
对于样本回归模型(5.2),在普通最小二乘法下,我们可以证明:
S2ˆβj=ˆσ2(n−1)S2Xj⋅11−R2j
其中R2j为辅助回归方程(5.4)的判定系数。S2Xj为变量Xj的样本方差。
ffalse{-91-26041-24046-33192-32960-22240-23376-21644-23481-24525-24230-93-}定义 5.3 \iffalse (方差膨胀因子和容忍度) 用来度量在最小二乘法下,多元线性回归模型的多重共线性问题严重程度的两个指标。
具体地,方差膨胀因子表达为单独一个变量对模型估计方差贡献的比率,一般记为VIF(variance-inflation factor),并正式定义为:
VIFj=11−R2j
容忍度是方差膨胀因子的倒数,一般记为TOL(tolerrance),并正式定义为: TOlj=1−R2j根据多元回归分析的矩阵方法实现(第4章),对于多元回归模型 Yi=β1+β2X2i+β3X3i+⋯+βkXki+uiy=Xβ+u(PRM)y=Xˆβ+e(SRM)
可以得到OLS下参数估计的方差协方差矩阵: var−cov(ˆβ)=σ2(X′X)−1=σ2VD−1V′
其中,D是含有矩阵(X′X)−1的特征值(eigenvalues)Em(m∈1,2,⋯,k)的一个对角矩阵,而V是由相应特征向量构成的一个矩阵。
ffalse{-91-30149-24577-25968-21644-26041-24046-20998-35299-27604-29575-93-}定义 5.4 \iffalse (病态数和方差分解比率) 用来诊断多元线性回归模型的多重共线性问题严重程度的一个指标。
具体地,病态数(condition number)采用微分的方法,考察引入一个变量对(多重共线性)模型结果恶化情形出现的相对改变数,一般记为K,并正式定义为: Kj=min(Em)Ej
方差分解比率(variance-decomposition proportion),一般记为VDPji,并正式定义为: ϕij=v2ijEjVDPji=ϕijϕi
其中vij为矩阵V的第(i,j)个元素。5.2.3 如何修正模型多重共线性问题?
一旦发现模型存在比较严重的多重共线性问题,则需要对模型进行修正处理,具体方法可参考:
- 简单剔除变量法:
- 依据经济学和实践经验观察,进行变量甄选或变量变换
- 变量变换法,进行变量处理。具体又包括差分变换法、比率变换法
- 逐步回归法:包括前向逐步回归(forward stepwise)和后向逐步回归(backward stepwise)
- p值判别法:p∈[0.1,0.05)(比较显著);p∈[0.05,0.01)(比较显著);p≤0.01(极其显著)
- t∗值判别法:2t法则
- 补充新数据(有时候有用!)
- 由于多重共线性是一个样本特性,故有可能在关于同样变量的另一样本中共线性没有第一个样本那么严重
- 多项式回归模型中离差形式或正交多项式(orthogonal polynomials)以降低共线性的影响
- 多项式回归模型的一个特点是解释变量以不同的幂出现,从而容易导致多重共线性
- 矫正多重共线性问题的其他方法
- 脊回归(ridge regression) 常被用来”解决”多重共线性问题。
- 主成分分析法
- 先根据主成分分析确定主成分个数(看累积解释百分比)
- 再用主成分得分(scoring)序列进行回归分析
5.3 实验内容
- 采用最小二乘法建立主回归模型
- 侦查模型是否存在多重共线性:
- 观察主回归方程分析报告:建立主回归方程,分析回归报告结果。
- 主回归分析报告的R2值高(大于0.8),F∗检验显著,但不显著的t∗检验较多(多于回归系数个数的一半及以上)
- 矩阵相关系数和矩阵散点图:绘制回归元之间的相关系数矩阵和散点图矩阵。
- 相关系数矩阵发现高度线性相关(相关系数大于0.8)
- 散点图矩阵发现高度线性相关的数据分布模式
- 分析辅助回归方程:首先构建主回归方程,然后分别构建回归元之间的辅助回归方程。
- 辅助回归方程的判定系数R2j大于主回归方程的判定系数R2
- 辅助回归方程的方差膨胀因子:VIFj∈[10,100]表明中度多重共线性;VIFj≥100表明严重多重共线性
- 辅助回归方程的的容忍度:TOLj∈[0.01,0.1]表明中度多重共线性;TOLj≤0.01表明严重多重共线性
- 主成分分析法(principal components):计算特征值(eigenvalues),进而得到病态数(K)和病态指数CI=√k
- 病态数:K∈[100,1000]表明中度多重共线性;K≥1000表明严重多重共线性
- 病态指数:CI∈[10,30]表明中度多重共线性;CI≥30表明严重多重共线性
- 观察主回归方程分析报告:建立主回归方程,分析回归报告结果。
- 根据上述对多重共线性的诊断,对模型进行合理修正:
- 简单剔除变量法:
- 依据经济学和实践经验观察,进行变量甄选或变量变换
- 逐步回归法:包括前向逐步回归(forward stepwise)和后向逐步回归(backward stepwise)
- p值判别法:p∈[0.1,0.05)(比较显著);p∈[0.05,0.01)(比较显著);p≤0.01(极其显著)
- t∗值判别法:2t法则
- 补充新数据(有时候有用!)
- 由于多重共线性是一个样本特性,故有可能在关于同样变量的另一样本中共线性没有第一个样本那么严重
- 多项式回归模型中离差形式或正交多项式(orthogonal polynomials)以降低共线性的影响
- 多项式回归模型的一个特点是解释变量以不同的幂出现,从而容易导致多重共线性
- 拯救多重共线性的其他方法
- 脊回归(ridge regression) 常被用来”解决”多重共线性问题。
- 主成分分析法
- 先根据主成分分析确定主成分个数(看累积解释百分比)
- 再用主成分得分(scoring)序列进行回归分析
- 简单剔除变量法:
5.4 实验准备
5.4.1 实验软件
本次实验需要提前准备好如下软件:
- 统计分析软件Eviews 9.0版本及以上
- 公式编辑软件Mathtype 6.0版本及以上
- 写作编辑软件Office Word/Excel 2010版本及以上
- 浏览器软件chrome 66.0版本及以上或 360极速浏览器9.5版本及以上
5.4.2 实验材料
就业情况的郎利数据:表5.1给出美国1947-1961年间就业情况及主要影响因素的数据表。
| Year | Y | X1 | X2 | X3 | X4 | X5 | X6 |
|---|---|---|---|---|---|---|---|
| 1947 | 60323 | 830 | 234289 | 2356 | 1590 | 107608 | 1 |
| 1948 | 61122 | 885 | 259426 | 2325 | 1456 | 108632 | 2 |
| 1949 | 60171 | 882 | 258054 | 3682 | 1616 | 109773 | 3 |
| 1950 | 61187 | 895 | 284599 | 3351 | 1650 | 110929 | 4 |
| 1951 | 63221 | 962 | 328975 | 2099 | 3099 | 112075 | 5 |
| 1952 | 63639 | 981 | 346999 | 1932 | 3594 | 113270 | 6 |
| 1953 | 64989 | 990 | 365385 | 1870 | 3547 | 115094 | 7 |
| 1954 | 63761 | 1000 | 363112 | 3578 | 3350 | 116219 | 8 |
| 1955 | 66019 | 1012 | 397469 | 2904 | 3048 | 117388 | 9 |
| 1956 | 67857 | 1046 | 419180 | 2822 | 2857 | 118734 | 10 |
| 1957 | 68169 | 1084 | 442769 | 2936 | 2798 | 120445 | 11 |
| 1958 | 66513 | 1108 | 444546 | 4681 | 2637 | 121950 | 12 |
| 1959 | 68655 | 1126 | 482704 | 3813 | 2552 | 123366 | 13 |
| 1960 | 69564 | 1142 | 502601 | 3931 | 2514 | 125368 | 14 |
| 1961 | 69331 | 1157 | 518173 | 4806 | 2572 | 127852 | 15 |
| 1962 | 70551 | 1169 | 554894 | 4007 | 2827 | 130081 | 16 |
变量说明见表5.2:
| variable | label |
|---|---|
| Year | 年份 |
| Y | 就业人数(打) |
| X1 | 消费价格指数 |
| X2 | 名义GNP |
| X3 | 失业人数 |
| X4 | 军队人数 |
| X5 | 14岁以上的非机构人口数 |
| X6 | 时间趋势 |
5.4.3 实验规则
本实验将要求保留Eviews操作过程的相关结果,因此对Eviews对象命名规则设计如下:
- 方程对象(Equation)
的命名规则:
- 主回归方程对象保存命名为
eq_m0 - 辅助回归方程对象依次保存命名为
eq_a1、
eq_a2、
eq_a3、
eq_a4、
eq_a5、
eq_a6 - 用经济学和实践经验删除变量来矫正模型,新方程保存并命名为
eq_adj_man - 用逐步回归方法来矫正模型,新方程保存并命名为
eq_adj_step
- 主回归方程对象保存命名为
- 向量对象(Vector)
的命名规则:
- 构造含有6个元素的向量对象,用于存放6个辅助回归方程的判定系数,并命名为
r2 - 构造含有6个元素的向量对象,用于存放6个辅助回归方程计算得到的方差膨胀因子,并命名为
vif - 构造含有6个元素的向量对象,用于存放6个辅助回归方程计算得到的容忍度,并命名为
tol
- 构造含有6个元素的向量对象,用于存放6个辅助回归方程的判定系数,并命名为
- 表格对象(Table)
的命名规则:
- 自变量的相关系数矩阵保存为表格对象,并命名为:
tab_cor - 回归系数方差分解结果保存为表格对象,并命名为:
tab_cvd
- 自变量的相关系数矩阵保存为表格对象,并命名为:
5.5 主要实验步骤
5.5.1 新建工作文件并导入数据
目标:构建工作文件,成功导入数据
思路:利用EViews代码创建工作文件并导入数据。
Eviews操作:新建Eviews工作文件(见图7.2)
- 依次操作:File⇒New⇒Workfile
- 进行workfile create引导设置:
- workfile structure type:
unstructured/undatede - data range:16
- workfile names(optional):
- WF:
longley(建议命名) - Page:
employee(建议命名)
- WF:
- workfile structure type:
Eviews操作:导入外部xlsx数据
- 处理Excel数据。
- Eviews导入数据。
File⇒Import⇒Import From File:d:\github\books\data\Lab5-longley-short-origin.xlsx
5.5.2 采用最小二乘法建立主回归模型
Eviews操作目标:得到回归方程,查看回归结果
思路:构建回归方程对象。回归模型为:
Y=+β1+β2X1+β3X2+β4X3+β5X4+β6X5+β7X6+u
- Eviews操作:构建主回归方程
- 进入方程估计的引导界面。
- EViews主窗口上依次点击点
Quick⇒Estimation Equation
- EViews主窗口上依次点击点
- 完成方程估计的引导设置。
- 设置方程。
Equation Estimation⇒Specification⇒Equation specification中依次输入变量y c x1 x2 x3 x4 x5 x6(注意变量之间的空格,以及截距c) - 选择估计方程。
Estimation settings中的Method下拉框 ⇒ 下拉选择LS - Least Squares (NLS and ARMA) - 完成设置,点击
OK
- 设置方程。
- 命名并保存回归方程。
- 在未命名的方程对象

UNTITLED视窗下,点击菜单栏Name⇒ 输入命名eq_m0(建议命名) ⇒ 完成命名,点击Ok
- 在未命名的方程对象
- 进入方程估计的引导界面。
在工作文件视窗下,可以看到如下新生成的方程对象,可以双击查看
eq_m0(见图5.1):
图 5.1: 主回归模型Eviews建模操作
回归方程结果见图5.2:
图 5.2: 郎利数据的回归结果
5.5.3 侦查多重共线性:主回归方程报告观察法
目标:观察t∗检验,判定系数R2,F∗检验的关系
思路:观察主回归分析报告的相关指标,诊断的标准如下:
- 的R2值高(大于0.8)
- F∗检验显著
- 不显著的t∗检验较多(斜率系数个数的一半及以上)
郎利数据案例中,根据EViews回归结果(见图5.2),可以整理成简要回归报告如下:
ˆY=+ˆβ1+ˆβ2X1+ˆβ3X2+ˆβ4X3+ˆβ5X4+ˆβ6X5+ˆβ7X6 ˆY=+77270.12+1.51X1−0.04X2−2.02X3(t)(3.4332)(0.1774)(−1.0695)(−4.1364)(se)(22506.7070)(8.4915)(0.0335)(0.4884)(cont.)−1.03X4−0.05X5+1829.15X6(t)(−4.8220)(−0.2261)(4.0159)(se)(0.2143)(0.2261)(455.4785)(fitness)n=16;R2=0.9955;¯R2=0.9925F∗=330.29;p=0.0000
显然,在α=0.05水平下t检验不显著的回归元有:
| 回归元 | 回归系数 | 样本t值 | p值 |
|---|---|---|---|
| X1 | 1.51 | 0.1774 | 0.8631 |
| X2 | 0.04 | -1.0695 | 0.3127 |
| X5 | 0.05 | -0.2261 | 0.8262 |
5.5.4 侦查多重共线性:矩阵相关系数和矩阵散点图
目标:观察t∗检验,判定系数R2,F∗检验的关系
思路:得到回归元之间的相关系数表,绘制它们的散点矩阵图。分析图表是否存在如下特征:
- 散点图矩阵发现高度线性相关的数据分布模式
- 相关系数矩阵发现高度线性相关(相关系数大于0.8)
Eviews菜单操作:
- 构造X数据的组对象(group):
- 依次选择X变量:X1,X2,X3,X4,X5,X6
- 以组对象打开,鼠标右键:Open as group
- 命名并保存组对象:name(建议命名为
group_x)
- 绘制散点图矩阵
- 进入group视窗:双击打开组对象
group_x - 进入引导菜单:⇒ View ⇒ Graph
- 选择绘图类型(Graph type):Scatter
- 选择绘图细节(Detail):Multiple series ⇒ 下拉框选中Scatterplot matrix
- 点击完成:OK
- 命名并保存绘图(graph)对象
:(建议命名为scatter_matrix) - 查看结果:双击
scatter_matrix (见图5.3)
- 进入group视窗:双击打开组对象
- 制作得到相关系数矩阵表格(table)
- 进入group视窗:双击打开组(group)对象
group_x
- 进入引导菜单:⇒ View ⇒ Covariance Analysis
- 选择分析类型(Statistics):只勾选Correlation
- 其他设置细节:(默认设置)
- 点击完成:OK
- 将上述组(group)对象
group_x另存为表格(table)对象
- 另存为表格(table)对象:点击Freeze
- 命名并保存表格(table)对象:点击name(建议为tab_cor)
- 查看结果:双击
tab_cor (见图5.4)
- 进入group视窗:双击打开组(group)对象
- 构造X数据的组对象(group):
图 5.3: 自变量X间相关系数矩阵的Eviews操作
图 5.4: 自变量X间散点矩阵图的Eviews操作
| X1 | X2 | X3 | X4 | X5 | X6 | |
|---|---|---|---|---|---|---|
| X1 | 1.0000 | |||||
| X2 | 0.9916 | 1.0000 | ||||
| X3 | 0.6206 | 0.6043 | 1.0000 | |||
| X4 | 0.4647 | 0.4464 | -0.1774 | 1.0000 | ||
| X5 | 0.9792 | 0.9911 | 0.6866 | 0.3644 | 1.000 | |
| X6 | 0.9911 | 0.9953 | 0.6683 | 0.4172 | 0.994 | 1 |
- 分析结论:根据相关系数矩阵表(图@ref:(fig:fig-cor)和散点矩阵图(图5.4),我们发现有6对X变量呈现明显线性相关关系,分别是:
X1 VS X2:r2,1=0.9916
X1 VS X5:r5,1=0.9792
X1 VS X6:r6,1=0.9911
X2 VS X5:r5,2=0.9911
X2 VS X6:r6,2=0.9953
X5 VS X6:r6,5=0.994
5.5.5 侦查多重共线性:构建辅助回归方程
目标:构建并得到6个辅助回归方程及其Eviews报告。
思路:分别构建一个X变量对其他X变量的线性回归,共会得到6个辅助回归方程的Eviews报告。
定义:
- 主回归模型(Main Model)是指Y变量对全部X变量的线性回归。
- 辅助回归模型(Auxiliary Model)是指一个X变量对其他X变量的线性回归。
Yt=ˆβ0+ˆβ1X1t+ˆβ2X2t+ˆβ3X3t+ˆβ4X4t+ˆβ5X5t+ˆβ6X6t+et( M0 )X1t=ˆα0+ˆα2X2t+ˆα3X3t+ˆα4X4t+ˆα5X5t+ˆα6X6t+et( A1 )X2t=ˆα0+ˆα1X1t+ˆα3X3t+ˆα4X4t+ˆα5X5t+ˆα6X6t+et( A2 )X3t=ˆα0+ˆα1X1t+ˆα2X2t+ˆα4X4t+ˆα5X5t+ˆα6X6t+et( A3 )X4t=ˆα0+ˆα1X1t+ˆα2X2t+ˆα3X3t+ˆα5X5t+ˆα6X6t+et( A4 )X5t=ˆα0+ˆα1X1t+ˆα2X2t+ˆα3X3t+ˆα4X4t+ˆα6X6t+et( A5 )X6t=ˆα0+ˆα1X1t+ˆα2X2t+ˆα3X3t+ˆα4X4t+ˆα5X5t+et( A6 )
提示:此处仅以A1 (5.19)为例,其他辅助模型类似操作。
Eviews菜单操作(具体操作演示见图5.5):
- 依次选择⇒ Quick ⇒ Estimation Equation
- 引导设置Equation Estimation ⇒ specification
- Equation specification:输入方程设置
x1 c x2 x3 x4 x5 x6 - Estimation settings:
- Method: 下拉选择LS - Least Squares (NLS and ARMA)
- Sample: (默认设置)
- 点击完成:OK
- 命名保存方程对象
:(建议命名为eq_a1,其他辅助回归方程依次命名为eq_a2,…,eq_a6) - 查看结果:双击
eq_a1
- Equation specification:输入方程设置
- 依次选择⇒ Quick ⇒ Estimation Equation
图 5.5: 辅助回归Eviews操作过程
全部6个辅助回归方程的Eviews分析报告结果:A1-A3辅助模型见图5.6;A4-A6辅助模型见图5.7。


图 5.6: 辅助回归方程A1-A3


图 5.7: 辅助回归方程A4-A6
各个辅助回归方程的简要结果如下:
^X1=+2044.58+0.00X2+0.03X3+0.01X4(t)(3.8333)(2.7006)(2.1098)(1.1770)(se)(533.3698)(0.0009)(0.0151)(0.0075)(cont.)−0.02X5−9.99X6(t)(−2.7720)(−0.5996)(se)(0.0063)(16.6654)(fitness)n=16;R2=0.9926;¯R2=0.9889F∗=269.06;p=0.0000 ^X2=−480986.04+164.66X1−13.79X3−3.00X4(t)(−3.2408)(2.7006)(−9.1921)(−1.6774)(se)(148413.7872)(60.9699)(1.5002)(1.7873)(cont.)+5.62X5+10902.88X6(t)(4.7649)(4.2411)(se)(1.1804)(2570.7562)(fitness)n=16;R2=0.9994;¯R2=0.9992F∗=3575.03;p=0.0000 ^X3=−28518.24+9.65X1−0.06X2−0.27X4(t)(−2.4914)(2.1098)(−9.1921)(−2.4895)(se)(11446.8866)(4.5736)(0.0071)(0.1090)(cont.)+0.35X5+768.55X6(t)(3.6779)(4.6007)(se)(0.0954)(167.0507)(fitness)n=16;R2=0.9703;¯R2=0.9554F∗=65.24;p=0.0000 ^X4=−11881.24+13.82X1−0.07X2−1.41X3(t)(−0.3600)(1.1770)(−1.6774)(−2.4895)(se)(33002.4231)(11.7447)(0.0437)(0.5663)(cont.)+0.20X5+1167.78X6(t)(0.6084)(2.0791)(se)(0.3276)(561.6770)(fitness)n=16;R2=0.7214;¯R2=0.5820F∗=5.18;p=0.0133 ^X5=+95694.37−24.76X1+0.12X2+1.64X3(t)(11.0221)(−2.7720)(4.7649)(3.6779)(se)(8682.0335)(8.9319)(0.0259)(0.4454)(cont.)+0.18X4−782.04X6(t)(0.6084)(−1.3319)(se)(0.2943)(587.1614)(fitness)n=16;R2=0.9975;¯R2=0.9962F∗=796.30;p=0.0000 ^X6=+8.31−0.00X1+0.00X2+0.00X3(t)(0.5392)(−0.5996)(4.2411)(4.6007)(se)(15.4036)(0.0058)(0.0000)(0.0002)(cont.)+0.00X4−0.00X5(t)(2.0791)(−1.3319)(se)(0.0001)(0.0001)(fitness)n=16;R2=0.9987;¯R2=0.9980F∗=1515.96;p=0.0000
5.5.6 侦查多重共线性:判定系数比较法
目标:分别6个辅助回归方程的判定系数R2j(j=1,⋯,6),比较它们与主模型判定系数R2的大小关系。
思路:分别提取辅助回归方程的Eviews报告中的判定系数。构造一个列向量(vector)对象
(含6个元素),把6个辅助回归方程的判定系数依次放置其中。提示:多重共线性问题的诊断依据是,辅助回归方程的判定系数R2j(j=1,⋯,6)大于主回归方程的判定系数R2
Eviews操作:
在命令视窗中依次输入并运行如下EViews代码:
'多重共线性诊断:辅助方程的判定系数比较
vector(6) r2
r2.fill(o=1) eq_a1.@r2 '提取辅助方程A1的判定系数
r2.fill(o=2) eq_a2.@r2 '提取辅助方程A2的判定系数
r2.fill(o=3) eq_a3.@r2 '提取辅助方程A3的判定系数
r2.fill(o=4) eq_a4.@r2 '提取辅助方程A4的判定系数
r2.fill(o=5) eq_a5.@r2 '提取辅助方程A5的判定系数
r2.fill(o=6) eq_a6.@r2 '提取辅助方程A6的判定系数
在工作文件视窗下,可以看到如下新生成的对象,可以双击查看(见图5.8):
- 包含六个辅助方程判定系数的向量对象
r2
图 5.8: 辅助回归模型A1~A6的判定系数提取汇总操作
根据上述比较分析,判定系数比较法的结论初步认为模型(5.18)可能存在严重的多重共线性问题理由如下:
| 辅助模型 | 模型设置 | 判定系数 | |
|---|---|---|---|
| 1 | A1 | X1对其他全部自变量Xi | 0.9926 |
| 2 | A2 | X2对其他全部自变量Xi | 0.9994 |
| 3 | A3 | X3对其他全部自变量Xi | 0.9703 |
| 4 | A4 | X4对其他全部自变量Xi | 0.7214 |
| 5 | A5 | X5对其他全部自变量Xi | 0.9975 |
| 6 | A6 | X6对其他全部自变量Xi | 0.9987 |
5.5.7 侦查多重共线性:方差膨胀因子(VIF)比较法
目标:分别得到6个辅助回归方程的方差膨胀因子VIFj(j=1,⋯,6),与参考值进行比较,得到相关结论。
思路:
- Eviews手动计算:根据6个辅助回归方程的判定系数R2j(见表5.5),分别计算得到各自的方差膨胀因子VIFj。
- Eviews方程提取:利用Eviews菜单功能Coefficient Diagnostics ⇒ Variance Inflation Factors 一次性得到主回归模型的Eviews方程
eq_m0全部方差膨胀因子VIFj(j=1,⋯,6)
提示:
- 操作提示:构造一个列向量(vector)对象
(含6个元素),用来装载6个辅助回归方程的方差膨胀因子VIFj(j=1,⋯,(6))。
- 诊断提示:辅助回归方程的方差膨胀因子中如果VIFj∈[10,100]表明中度多重共线性;如果VIFj≥100表明严重多重共线性
- 公式提示:辅助回归方程方差膨胀因子的理论计算公式为
- 操作提示:构造一个列向量(vector)对象
VIFj=11−R2j,(j=1,⋯,6)
- (方法1)Eviews命令操作(手动计算实现,具体见图5.9):
在命令视窗中依次输入并运行如下EViews代码:
'多重共线性诊断:方差膨胀因子
vector(6) unit=1 '为计算做准备
vector vif=@ediv(unit,(unit-r2)) '利用公式计算VIF
在工作文件视窗下,可以看到如下新生成的对象,可以双击查看(见图5.9):包含6个辅助回归方程各自方差膨胀因子(VIFi)的向量对象
vif
图 5.9: 辅助回归模型A1~A6的VIF手动提取操作
- (方法2)Eviews菜单操作(菜单操作实现,具体见图5.10):
- 打开主方程:双击方程(equation)对象

eq_m0 - 进入功能菜单:
- 选择分析菜单:⇒
View⇒Coefficient Diagnostics⇒Variance Inflation Factors - 另存为表格(table)对象:点击
Freeze - 命名并保存表格(table)对象:点击
name(建议为tab_vif) - 查看结果:双击

tab_vif
- 选择分析菜单:⇒
- 打开主方程:双击方程(equation)对象
图 5.10: 辅助回归模型A1~A6的VIF系统提取操作
- 多重共线性诊断结果:
根据诊断经验标准,主回归方程M0的方差膨胀因子中,如果VIFj∈[10,100]表明中度多重共线性;如果VIFj≥100表明严重多重共线性。
| 自变量 | VIF | >100 | 10~100 |
|---|---|---|---|
| 1 | 135.532 | 很严重 | … |
| 2 | 1788.514 | 很严重 | … |
| 3 | 33.619 | … | 中等 |
| 4 | 3.589 | … | … |
| 5 | 399.151 | 很严重 | … |
| 6 | 758.981 | 很严重 | … |
根据计算结果汇总(见表5.6),可以认为主模型M0存在较严重的多重共线性问题。其中VIF值大于100的系数就包括c(“1”, “2”, “5”, “6”)。
5.5.8 侦查多重共线性:容忍度(TOL)比较法
目标:分别得到6个辅助回归方程的容忍度TOLj(j=1,⋯,6),与参考值进行比较,得到相关结论。
思路:根据6个辅助回归方程的判定系数R2j(见表5.5),分别计算得到各自的容忍度TOLj。
提示:
- 操作提示:构造一个列向量(vector)对象
(含6个元素),用来装载6个辅助回归方程的容忍度TOLj(j=1,⋯,(6)) - 诊断提示:辅助回归方程的的容忍度如果TOLj∈[0.01,0.1]表明中度多重共线性;如果TOLj≤0.01表明存在严重的多重共线性
- 公式提示:辅助回归方程容忍度的理论计算公式为
- 操作提示:构造一个列向量(vector)对象
TOLj=1−R2j=1VIFj,(j=1,⋯,6)
在命令视窗中依次输入并运行如下EViews代码:
'多重共线性诊断:容忍度
vector tol=unit-r2 '利用公式计算TOL
在工作文件视窗下,可以看到如下新生成的对象,可以双击查看(见图5.11):
- 辅助方程容忍度TOLi组成的向量对象
tol
图 5.11: 辅助回归模型A1~A6的TOL手动提取操作
5.5.9 侦查多重共线性:回归系数方差分解法(Coefficient Variance Decomposition)
目标:利用Eviews的共线性诊断菜单,进行回归系数方差分解(Coefficient Variance Decomposition)。分析病态数(Condition Numbers,K)和方差分解比率(variance-decomposition proportions,VDP),并与参考值进行比较,得到相关结论
思路:特征值(Eigenvalue);病态数(condition number,K);方差分解比率(variance-decomposition proportions,VDP)
提示:
- 操作提示:用Eviews的共线性诊断菜单 ⇒ View ⇒ Coefficient Diagnostics ⇒ Coefficient Variance Decomposition
- 诊断提示:若发现至少一个病态数K≤(0.001,则表明存在严重多重共线性;观察病态数最小时所对应的方差分解比率,如果有多个斜率系数的VDP≥0.5 ,则表明它们存在严重的多重共线性
^var_^cov(ˆβ)=ˆσ2(X′X)−1
- Eviews操作(菜单操作实现,具体见图5.12):
- 打开主方程:双击方程(equation)对象
eq_m0
- 进入功能菜单:
- 选择分析菜单:⇒ View ⇒ Coefficient Diagnostics ⇒ Coefficient Variance Decomposition
- 另存为表格(table)对象:点击Freeze
- 命名并保存表格(table)对象:点击name(建议为tab_cvd)
- 查看结果:双击
tab_cvd
- 打开主方程:双击方程(equation)对象
图 5.12: 主回归模型系数方差分解的操作过程
- 多重共线性诊断分析
(具体Eviews报告见5.13)
图 5.13: 主回归模型系数方差分解的Eviews报告
5.5.10 重共线性模型矫正:经济学和实践观察法
目标:根据某种考虑或规则,删除特定变量,重新估计回归模型,得到相关结论。
思路:面对严重的共线性,最简单的方法就是去掉某些变量,但剔除变量会导致设定误差。实际中需要权衡利弊。
理论提示:酌情删除:经济学和实践观察法。利用先验信息(成为研究领域的专家!)酌情删除特定变量,减弱模型的多重共线性问题。那怎样才能获得先验信息呢?它往往源自经验研究工作或者有关基础理论。
操作提示:
- 改用真实GNP,不用名义GNP(X2):将名义GNP(X2)除以价格指数CPI(X1)
- 留下14 岁以上非机构人口数(X5),去掉时间趋势(X6):14 岁以上非机构人口数随时间不断增长,它与时间趋势变量高度相;而且时间趋势变量还和很多其他变量高度相关。
- 去掉失业人数变量(X3):可能失业率是劳动力市场状况的一个更好的度量指标,但我们没有这方面的数据,而失业人数也没有充分的理由包括进来。
Eviews操作(菜单操作实现,见图5.15):
- 变量变换,生成实际GNP(=名义GNP/CPI)(见图5.15)
- 命令视窗(Command)输入命令 :
series x_rgnp=X2/X1 - 运行命令:命令行中按Enter键
- 查看计算结果
- 命令视窗(Command)输入命令 :
- 引导设置Equation Estimation⇒specification
- Equation specification:输入命令 Y c x_rgnp X3 X4 X5
- Estimation settings:
- Method: 下拉选择
LS - Least Squares (NLS and ARMA) - Sample: 默认设置
- Method: 下拉选择
- 点击
OK
- 模型命名:建议为
eq_adj_man
- 变量变换,生成实际GNP(=名义GNP/CPI)(见图5.15)
图 5.14: 多重共线性模型的变量变换操作
酌情法矫正的分析结果如图:
图 5.15: 多重共线性问题模型的矫正:酌情删除法
利用酌情删除法的矫正多重共线性问题后的简要回归报告如下:
ˆY=+ˆβ1+ˆβ2I(X2/X1)+ˆβ3X3+ˆβ4X4+ˆβ5X5 ˆY=+47497.87+73.95I(X2/X1)−0.54X3−0.73X4(t)(3.2408)(3.4066)(−1.6852)(−2.4163)(se)(14656.2227)(21.7092)(0.3180)(0.3010)(cont.)−0.05X5(t)(−0.2749)(se)(0.1966)(fitness)n=16;R2=0.9852;¯R2=0.9798F∗=183.31;p=0.0000
5.5.11 重共线性模型矫正:变量变换法
目标:根据某种考虑或规则,删除特定变量,重新估计回归模型,得到相关结论。
思路:面对严重的共线性,最简单的方法就是去掉某些变量,但剔除变量会导致设定误差。实际中需要权衡利弊。
理论提示1:一阶差分法(first difference form)巧妙删除变量。
模型中两个解释变量Xk,i和Xw,i可能导致高度多重共线性,但是分别对二者进行一阶差分,再进行回归建模,新模型可能的多重共线性问题很可能大大缓解!具体变换如下:
Yt=β1+β2X2,t+β3X3,t+ut原模型Yt−1=β1+β2X2,t−1+β3X3,t−1+ut−1滞后1阶变量模型Yt−Yt−1=β2(X2,t−X2,t−1)+β3(X3,t−X3,t−1)+(ut−ut−1)一阶差分模型Y∗t=β2X∗2,t+β3X∗3,t+vt精简化模型
需要注意的是,“按下葫芦浮起瓢”,治疗比疾病更糟糕?差分变换Yt−1减少了自由度;同时vt=(ut−ut−1)可能带来异方差问题。
- 理论提示2:比率变换法(ratio transformation)巧妙删除变量。
模型中两个解释变量Xk,i和Xw,i可能导致高度多重共线性,如果可以用其中的一个变量同时对模型其他变量进行比率变换,而且如果变换后的所有变量还能具有经济学含义,那么理论上将至少消掉一个回归元,从而大大缓解甚至消除多重共线性问题!具体变换如下:
消费支出决定案例:Yt 为以真实价格表示的消费支出,X2,t表示GDP, X3,t表示总人口。
Yt=β1+β2X2,t+β3X3,t+ut原模型YtX3,t=β1X3,t+β2X2,tX3,t+utX3,t比率变换模型Y∗t=β∗1+β∗2X∗2,t+vt精简化模型
同样需要注意的是,“按下葫芦浮起瓢”,治疗比疾病更糟糕?vt=utX3,t可能带来异方差问题。
5.5.12 重共线性模型矫正:逐步最小二乘回归法(Stepwise Least Squares Regression)
目标:根据某种考虑或规则,删除特定变量,重新估计回归模型,得到相关结论。
思路:面对严重的共线性,最简单的方法就是去掉某些变量,但剔除变量会导致设定误差。实际中需要权衡利弊。
理论提示:逐步最小二乘回归法(Stepwise Least Squares Regression)通过多个统计标准,可以自动判断模型该引入还是删除某些自变量X。这些统计标准主要包括分析引入新变量对回归平方和ESS的贡献大小,及F检验等。
- 前向逐步回归法(Stepwise-Forwards),是从一个简化模型(很少X变量)开始,再逐步引入新的X变量,直至达到某个统计标准(主要是p值标准)
- 后向逐步回归法(Stepwise-Backwards),是从一个完全模型(全部X变量)开始,对模型逐步删除某些X变量,直至剩余变量都达到某个统计标准(主要是p值标准)
Eviews操作(以后向逐步回归法为例,见图5.16):
- 依次选择⇒ Quick ⇒ Estimation Equation
- 引导设置Equation Estimation ⇒ Specification
- 输入因变量和选择一直保留的自变量(Dependent variable followed by list of always included regressors): Y (此处如果仅填Y变量,则任何X变量都没有强制一定要留在模型中)
- 输入自变量(List of search regressors):Y c X1 X2 X3 X4 X5 X6
- 估计方法(Estimation settings):
- Method:下拉选择
STEPLS - stepwise Least Squares - Sample: 默认设置
- Method:下拉选择
- 引导设置Equation Estimation ⇒ Options
- 方法设置(Selection Method):
- 下拉选择Stepwise
- 点击选择Backwards
- 标准设置(Stopping Criteria):
- 点击选择p-value
- 填写(p-value forwards):0.05
- 填写(p-value backwards):0.05
- 其他:默认设置
- 权重设置(Weights):默认设置
- 步数设置(Maximum steps):默认设置
- 完成设置:点击
OK
- 方法设置(Selection Method):
- 模型命名:建议为
eq_adj_step
- 查看分析报告(见图5.17)
- 依次选择⇒ Quick ⇒ Estimation Equation
图 5.16: 多重共线性模型的矫正:后向逐步回归法
图 5.17: 多重共线性模型的后向逐步回归法矫正报告
逐步回归法矫正后的简要回归报告如下:
ˆY=+ˆβ1+ˆβ2X2+ˆβ3X3+ˆβ4X4+ˆβ5X6 ˆY=+74169.53−0.04X2−2.09X3−1.01X4(t)(17.4451)(−2.4398)(−7.2021)(−5.5223)(se)(4251.5849)(0.0165)(0.2900)(0.1837)(cont.)+1887.41X6(t)(4.9310)(se)(382.7665)(fitness)n=16;R2=0.9954;¯R2=0.9937F∗=589.76;p=0.0000
5.5.13 重共线性模型矫正:主成分法(Principal Components)(自学)
5.6 附录:prg源代码
实际操作中,在EViews命令视窗中逐条输入代码,既容易出错,又不便于维护这些代码,还不能进行代码的重复使用(在第一章的节1.8中已经论述)。
因此,读者可以创建一个.prg编程文件
,并在其中编写EViews代码,进行管理、维护、运行和分析。下面代码按本章主要实验步骤编写,读者可以用于本章的EViews编程参考,进行实验练习。
'=========================================================================================================
'说明:以下为EViews编程文件longley.prg的代码
'将展示第五章中“郎利就业数据案例”主要分析步骤的“批量式命令驱动”实现方法(::
'其中,符号'起始的行,为注释行,其他为EViews命令行。
'=========================================================================================================
'创建工作文件(工作文件名=longley,子页命名=employee),无结构无日期,样本数为16
wfcreate(wf=longley,page=employee) u 16
'导入外部数据,路径为d:\github\books\data\Lab5-longley-short-origin.xlsx
import d:\github\books\data\Lab5-longley-short-origin.xlsx
'生成线性回归模型的方程对象
equation eq_m0.ls Y c x1 x2 x3 x4 x5 x6 '回归方程
scalar r2_m0=eq_m0.@r2
'多重共线性诊断:计算自变量的相关系数表格和散点矩阵图
group varx x1 x2 x3 x4 x5 x6 '构建只含X的group
freeze(tab_cor) varx.cor '把group的相关系数矩阵表视图保存为表格
graph scatter_matrix.scatmat varx '绘制散点矩阵图
'多重共线性诊断:构建辅助回归方程
equation eq_a1.ls X1 c X2 X3 X4 X5 X6
equation eq_a2.ls X2 c X1 X3 X4 X5 X6
equation eq_a3.ls X3 c X1 X2 X4 X5 X6
equation eq_a4.ls X4 c X1 X2 X3 X5 X6
equation eq_a5.ls X5 c X1 X2 X3 X4 X6
equation eq_a6.ls X6 c X1 X2 X3 X4 X5
'多重共线性诊断:辅助方程的判定系数比较
vector(6) r2
r2.fill(o=1) eq_a1.@r2 '提取辅助方程A1的判定系数
r2.fill(o=2) eq_a2.@r2 '提取辅助方程A2的判定系数
r2.fill(o=3) eq_a3.@r2 '提取辅助方程A3的判定系数
r2.fill(o=4) eq_a4.@r2 '提取辅助方程A4的判定系数
r2.fill(o=5) eq_a5.@r2 '提取辅助方程A5的判定系数
r2.fill(o=6) eq_a6.@r2 '提取辅助方程A6的判定系数
'多重共线性诊断:方差膨胀因子
vector(6) unit=1 '为计算做准备
vector vif=@ediv(unit,(unit-r2)) '利用公式计算VIF
freeze(tab_vif) eq_m0.varinf '直接冻结主方程的一个view(varinf)为VIF表格
'多重共线性诊断:容忍度
vector tol=unit-r2 '利用公式计算TOL
'多重共线性诊断:回归系数方差分解法
freeze(tab_vcd) eq_m0.cvardecomp '
'多重共线性矫正:经济学和实践观察法
series x_rgnp=x2/x1 ' 构造新变量
equation eq_adj_man.ls y c I(x2/x1) x3 x4 x5 '回归新方程
'多重共线性矫正:逐步最小二乘回归法(后向逐步回归,p值标准为0.05)
equation eq_adj_step.stepls(back,btol=0.05) Y @ c X1 X2 X3 X4 X5 X6
' ===========================================================================
5.7 实验作业
就业情况的郎利数据:表5.1给出美国1947-1961年间就业情况及主要影响因素的数据表。
| X | x1 | x2 | x3 | x4 | x5 | x6 | Ydata1 | Ydata2 | Ydata3 |
|---|---|---|---|---|---|---|---|---|---|
| id | x1 | x2 | x3 | x4 | x5 | x6 | 2015014495 | 2016010317 | 2016011222 |
| name | x1 | x2 | x3 | x4 | x5 | x6 | 刘琳 | 王雪明 | 韩双瑞 |
| class | x1 | x2 | x3 | x4 | x5 | x6 | 保险1601 | 保险1601 | 保险1601 |
| n1 | 83 | 509300 | 3740 | 2552 | 120287 | 1 | 64630.60 | 64630.10 | 64630.33 |
| n2 | 84 | 529500 | 3852 | 2514 | 121836 | 2 | 65777.74 | 65776.65 | 65776.23 |
| n45 | 426 | 11017600 | 8774 | 1423 | 226223 | 45 | 137735.53 | 137736.21 | 137737.16 |
| n46 | 438 | 11762100 | 8149 | 1411 | 228892 | 46 | 139252.98 | 139252.40 | 139252.14 |
| n47 | 452 | 12502400 | 7591 | 1378 | 231552 | 47 | 141732.78 | 141730.06 | 141730.32 |
变量说明见表5.8:
| variable | label |
|---|---|
| Year | 年份 |
| Y | 就业人数(打) |
| X1 | 消费价格指数 |
| X2 | 名义GNP |
| X3 | 失业人数 |
| X4 | 军队人数 |
| X5 | 14岁以上的非机构人口数 |
| X6 | 时间趋势 |
请考虑如下样本回归模型:
Yt=ˆβ0+ˆβ1X1t+ˆβ2X2t+ˆβ3X3t+ˆβ4X4t+ˆβ5X5t+ˆβ6X6t+et
请回答如下问题:
根据回归模型(5.44),写出总体回归模型(PRM),并对参数的理论预期(符号、大小、关系)进行说明。
答:
PRM:
参数预期:利用Eviews对样本回归模型(5.44)进行回归分析(将报告截图过来,并写出相应的简要报告形式——三行式或四行式)。参数估计结果符合你的理论预期么?
答:
报告截图:
简要报告(三行式或四行式):
参数估计结果是否符合你前面的理论预期:数据中存在多重共线性的证据吗?(请以此按照下列方法进行诊断):
根据上题中主回归报告结果,观察t检验,判定系数,F检验的关系,请你得出关于多重共线性的初步结论。
答:利用Eviews绘制矩阵散点图(matrix scatter)(截图过来),请你得出关于多重共线性的初步结论。
答:利用Eviews得到简单相关系数矩阵(截图过来),请你得出关于多重共线性的初步结论。
答:利用Eviews进行辅助回归诊断(完成下表,并将8个辅助回归结果依次截图过来),请你得出关于多重共线性的初步结论。
答:
| 回归类型 | 模型设置 | 判定系数R2= |
|---|---|---|
| 主回归 | Y 对全部Xi | |
| 辅助回归 | X1 对其他全部Xi | |
| 辅助回归 | X2 对其他全部Xi | |
| 辅助回归 | X3 对其他全部Xi | |
| 辅助回归 | X4 对其他全部Xi | |
| 辅助回归 | X5 对其他全部Xi | |
| 辅助回归 | X6 对其他全部Xi |
- 请按下列要求完成下表和提问:
- 利用上表结果,计算方差膨胀因子和容忍度指标;
- 利用Eviews菜单,对主模型(5.44)操作,得到方差膨胀因子(截图并列出结果到下表中)
- 根据上述结果,请你得出关于多重共线性的初步结论。
答:
| 辅助模型 设置 | 容忍度 TOLj | 辅助模型 VIFj | 主模型 VIF |
|---|---|---|---|
| X1 对其他全部Xi | |||
| X2 对其他全部Xi | |||
| X3 对其他全部Xi | |||
| X4 对其他全部Xi | |||
| X5 对其他全部Xi | |||
| X6 对其他全部Xi |
- 计算病态数(Condition Numbers,K)和方差分解比率(variance-decomposition proportions,VDP。并根据分析结果,得出关于多重共线性的初步结论。
答:
- 若存在多重共线性问题,那你会采用什么补救措施(如果有的话)?
- 简单剔除变量法——经济学和实践观察法。请写明剔除变量的理由,并将纠正后模型的Eviews结果截图过来,新模型减弱了多重共线性问题吗?
答:
- 简单剔除变量法——逐步回归法。将逐步回归后模型的Eviews结果截图过来,新模型减弱了多重共线性问题吗?
答:
- 主成分法(principal components)。将因子回归模型的Eviews结果截图过来,新模型减弱了多重共线性问题吗?(此题选作)
答:
- 简单剔除变量法——经济学和实践观察法。请写明剔除变量的理由,并将纠正后模型的Eviews结果截图过来,新模型减弱了多重共线性问题吗?
【本次实验题目完毕啦!!】