1. 为什么做完回归,你还要做这四大检验?
刚上手Eviews做回归分析,你是不是也有过这样的经历?吭哧吭哧把数据导进去,点几下鼠标,一个漂亮的回归结果表格就出来了。R方挺高,F检验也显著,几个变量的系数看着也合理,心里一阵窃喜:“搞定!模型建好了!”
别急,先别急着写报告。我刚开始做项目的时候,就犯过这个错误,拿着一个“看起来很美”的模型就去汇报,结果被导师几个问题就问懵了:“你这个模型变量之间是不是互相‘打架’了?”“误差项的波动是不是随着数据变化而变大了?”“你确定这个模型在整个时间段内都适用吗?”
这些问题,指向的就是多元线性回归模型背后必须过关的“体检”。我们建立的模型,是基于一系列严格的统计假设的,比如误差项要独立、同方差、服从正态分布,解释变量之间不能有太强的线性关系,模型的结构要稳定。现实中的数据往往很“骨感”,很少能完美满足这些“理想”假设。如果假设不成立,那么你之前看到的那些漂亮的t检验、F检验结果,甚至你得到的系数估计值,都可能是有偏的、不可靠的。用这样的模型去做预测或者政策分析,就像用一把刻度不准的尺子去量东西,结果可想而知。
所以,这四大检验——多重共线性、异方差性、误差项正态性、模型稳定性检验——根本不是可有可无的“高级操作”,而是模型构建完成后,判断其是否健康、结果是否可信的必做步骤。它们回答的是:“我的模型真的靠谱吗?”这个问题。今天,我就以一个农业经济分析的实例,手把手带你走一遍Eviews里的完整检验流程。咱们不深究复杂的数学公式,就聚焦在“怎么操作”和“怎么看结果”上,让你做完回归心里真正有底。
2. 第一步:把数据“喂”给Eviews,并跑出基础回归
万事开头难,但Eviews的开头其实挺简单。咱们的目标是分析影响农业产值(假设变量叫Farming)的因素。可能的影响因素有农业劳动力(Labor)、化肥使用量(Fertilizer)、农机总动力(Machinery)、灌溉面积(Irrigation)和年降水量(Rainfall),数据时间跨度从1985年到2014年。
2.1 创建你的“数据工作室”——工作文件
打开Eviews,第一件事就是建一个专属的“工作间”。点击菜单栏的 File -> New -> Workfile。在弹出的对话框里,因为我们是时间序列数据,所以在 Workfile structure type 选择 Dated-regular frequency,频率(Frequency)根据数据选 Annual(年度)。在 Start date 输入 1985,End date 输入 2014,然后给工作文件起个名,比如 Agri_Model。点 OK,一个空白的工作文件就创建好了。
懒人技巧:你也可以在Eviews主窗口最下方的命令窗口(Command)里直接输入:wfcreate a 1985 2014,然后回车,效果一模一样。“a”就代表年度数据。
2.2 导入数据:从Excel到Eviews
数据通常都在Excel里。最简单的方法是:在Eviews中点击 Quick -> Empty Group,会打开一个空的数据组窗口。然后,回到你的Excel表格,选中包括变量名在内的所有数据(比如A1到G31,共7列30行),按 Ctrl+C 复制。再回到Eviews那个空的数据组窗口,鼠标点击左上角第一个格子,按 Ctrl+V 粘贴。Eviews会自动识别列名作为序列名。粘贴后,关闭这个数据组窗口,你会发现在工作文件窗口里,已经出现了 Farming, Labor 等7个序列对象了。
2.3 跑一个“全家福”回归模型
现在,我们把所有可能的因素都放进去,做一个初步的回归,看看整体情况。
点击 Quick -> Estimate Equation,打开方程估计对话框。在 Equation specification 的输入框里,我们需要写明回归方程的形式。格式是:因变量 c 自变量1 自变量2 ...。所以,我们输入:farming c labor fertilizer machinery irrigation rainfall。
在 Method 下拉菜单确认选择的是 LS - Least Squares (NLS and ARMA),也就是普通最小二乘法。样本区间(Sample)默认是 1985 2014,不用改。点击 确定。
命令窗口捷径:同样,你也可以在命令窗口输入:ls farming c labor fertilizer machinery irrigation rainfall,然后回车。
2.4 看懂你的第一份回归报告
回归结果窗口会弹出很多信息,咱们先关注最核心的几块:
- 模型整体显著性(F检验):找到
F-statistic和它旁边的Prob(F-statistic)。这个P值如果小于你设定的显著性水平(通常是0.05或0.01),就说明至少有一个解释变量对因变量有显著影响,模型整体是有效的。比如,这里Prob(F-statistic) = 0.0001,远小于0.05,说明模型整体显著。 - 变量个体显著性(t检验):表格中间部分,每一行对应一个解释变量。看
Prob.这一列。同样,如果某个变量的P值小于0.05,通常认为该变量影响显著。假设我们这次的结果显示,只有Machinery和Rainfall的P值小于0.05,其他变量如Labor、Fertilizer的P值都很大(比如0.3, 0.4)。这是一个典型的警示信号:模型整体有效,但多数单个变量却不显著。这往往预示着第一个问题——多重共线性。
3. 诊断与治疗:多重共线性检验与修正
当你的解释变量之间存在着较强的线性相关关系时,就会产生多重共线性。它不会影响模型的预测能力,但会严重干扰对单个变量影响力的判断(导致t检验不显著),并使系数估计值变得非常不稳定(数据轻微变动,系数值可能发生巨大变化)。
3.1 如何检验:方差膨胀因子(VIF)法
在刚才的回归结果窗口,点击菜单栏的 View -> Coefficient Diagnostics -> Variance Inflation Factors。Eviews会输出一个包含VIF值的表格。
结果怎么看:通常,VIF值大于10,就认为存在严重的多重共线性。有些严格的标准认为大于5就需要关注。假设我们看到的VIF值是:Labor: 12.5, Fertilizer: 15.8, Machinery: 8.2, Irrigation: 18.1, Rainfall: 1.3。除了Rainfall,其他变量的VIF值都远超10,这说明解释变量之间(比如劳动力、化肥、灌溉面积)可能存在很强的相关性,严重干扰了我们的分析。
3.2 如何修正:逐步回归法
面对严重的多重共线性,常用的解决办法是剔除一些不必要或重复信息的变量。手动尝试剔除哪个变量很麻烦,我们可以让Eviews用逐步回归来帮我们自动筛选。
关闭当前的回归结果窗口,再次点击 Quick -> Estimate Equation。在 Equation specification 输入框,还是输入:farming c labor fertilizer machinery irrigation rainfall。但这次,关键是要把下面的 Method 从 LS 改成 STEPLS - Stepwise Least Squares。
点击 确定 后,会弹出一个逐步回归选项对话框。这里我们需要设置两个关键阈值:
p-value to enter:变量进入方程的显著性水平,比如设0.05。p-value to exit:变量被移除方程的显著性水平,比如设0.10。 意思是,如果一个不在方程中的变量,其t检验的P值小于0.05,它就有资格进入方程;如果一个已在方程中的变量,其P值变得大于0.10,它就可能被踢出去。设置好后点OK。
命令窗口捷径:stepls(pent=0.05, pout=0.10) farming c labor fertilizer machinery irrigation rainfall
3.3 解读逐步回归结果
Eviews会输出一个最终的回归方程。假设经过逐步筛选,最后留在模型里的变量是 Machinery 和 Rainfall。报告会显示每一步的变量进出情况。现在,对这个新的、变量更精简的模型,务必再重复一次VIF检验。点击 View -> Coefficient Diagnostics -> Variance Inflation Factors。这时你看到的VIF值应该都变得很小(通常接近1,比如1.2, 1.1),这表明多重共线性的问题已经基本被消除。现在,模型里剩下的变量,其t检验的显著性也更加可信了。
4. 审视误差的“性格”:异方差检验
解决了变量间“打架”的问题,我们接下来要看看模型的“误差项”是否守规矩。经典线性回归的一个重要假设是“同方差”,即误差项的波动大小是恒定的。如果误差项的方差随着解释变量的变化而变化(比如,农业产值高的时候,预测误差的波动也更大),这就是“异方差”。异方差不会影响系数估计的无偏性,但会使得标准误的估计不准确,从而导致假设检验(t检验、F检验)失效。
4.1 如何检验:怀特(White)检验
在我们修正后的新方程结果窗口(只包含Machinery和Rainfall的方程),点击 View -> Residual Diagnostics -> Heteroskedasticity Tests -> White。注意,这里要勾选 Include cross terms(包含交叉项),这样检验更全面。
Eviews会输出怀特检验的结果。我们主要看两个统计量:F-statistic 和 Obs*R-squared(即卡方统计量),以及它们对应的 Prob. 值。
原假设(H0):模型是同方差的(不存在异方差)。
结果解读:如果输出的P值(Prob. F 或 Prob. Chi-Square)小于你的显著性水平(如0.05),则拒绝原假设,认为存在异方差。如果P值大于0.05,则不能拒绝原假设,可以认为不存在明显的异方差问题。
假设我们得到的 Prob. Chi-Square = 0.03,小于0.05,那么我们就判断模型存在异方差问题,需要进行修正。
4.2 如何修正:加权最小二乘法(WLS)
一种常用的修正异方差的方法是加权最小二乘法。它的核心思想是给波动小的数据点更高的权重,给波动大的数据点更低的权重,从而“拉平”误差的波动。
在Eviews中操作很简单。回到方程估计对话框(Quick -> Estimate Equation),输入修正后的模型:farming c machinery rainfall。在 Method 选择 LS,但这次要点开右下角的 Options 选项卡。
在Options里,找到 Weighted LS/TSLS 选项,打勾。在 Weight 输入框里,我们需要指定一个权重序列。权重的选择有几种常见思路:
- 使用某个解释变量的倒数:如果怀疑方差与某个变量(如
Machinery)成正比,可以输入1/machinery。 - 使用拟合值的倒数:更常用的方法是使用OLS回归得到的拟合值(
y_hat)。你需要先跑一个OLS回归,然后生成拟合值序列(在方程窗口点击Forecast,生成一个比如叫FITTED的序列)。然后在权重框输入1/fitted。 - 使用残差绝对值的倒数:先生成OLS回归的残差序列(方程窗口的
Resids序列),生成其绝对值序列(命令:genr abs_res = abs(resid)),然后在权重框输入1/abs_res。 假设我们采用第二种方法,权重输入1/fitted,点击确定进行估计。
4.3 修正后再次检验
得到WLS的回归结果后,必须对新的残差再次进行怀特检验,以确认异方差问题是否得到解决。操作同上:View -> Residual Diagnostics -> Heteroskedasticity Tests -> White。如果这次检验的P值变大了(比如0.25),大于0.05,那么我们就认为异方差问题已经得到了有效的纠正。此时,基于WLS结果进行的统计推断才是可靠的。
5. 检查误差的“出身”:正态性检验
很多统计检验(如t检验、F检验)都依赖于误差项服从正态分布这个假设。虽然在大样本下,这个要求可以放宽,但进行检验仍然是一个好习惯。
5.1 图形法:直方图与Q-Q图
在最终的方程结果窗口(建议使用修正了异方差后的WLS方程),点击 View -> Actual, Fitted, Residual -> Residual Graph。这个图能直观看到残差随时间的变化,但看正态性更推荐另一个视图。
点击 View -> Residual Diagnostics -> Histogram - Normality Test。Eviews会输出一张残差的直方图,并叠加了一条正态分布曲线作为对比。同时,还会给出 Jarque-Bera检验 的结果。
图形解读:观察直方图的形状是否大致对称、钟形,是否与正态曲线贴合。旁边通常还会附上Q-Q图(分位数-分位数图),如果点大致分布在一条45度直线上,则表明服从正态分布。
5.2 数值检验:Jarque-Bera检验
在同一输出界面中,找到 Jarque-Bera statistic 和它的 Probability。
原假设(H0):残差服从正态分布。
结果解读:如果J-B检验的P值大于显著性水平(如0.05),则我们没有足够证据拒绝原假设,可以认为残差满足正态分布。如果P值很小(小于0.05),则拒绝原假设,认为残差不服从正态分布。
假设我们得到的 Probability = 0.42,远大于0.05,那么我们就可以放心地接受残差正态性的假设。在实际应用中,只要不是严重偏离正态(P值极小),轻微的偏离通常是可以接受的,尤其是样本量较大的时候。
6. 拷问模型的“稳定性”:邹(Chow)断点检验
我们建立的模型,是假设变量之间的关系在整个研究时期内(1985-2014)是稳定不变的。但现实中,政策突变、经济危机、技术革新等事件,都可能使这种关系在某个时间点发生结构性变化。邹检验就是用来判断模型在某个预设时点前后是否发生了显著变化。
6.1 如何确定可能的断点?
首先,我们需要一个怀疑的“断点”。这可以来自历史知识(如2006年取消了农业税),也可以通过观察图形来猜测。
在方程窗口,点击 View -> Actual, Fitted, Residual -> Actual, Fitted, Residual Graph。仔细观察拟合值(Fitted)曲线是否很好地跟踪了实际值(Actual)曲线。如果发现在某个年份(比如2006年)之后,拟合线和实际线开始出现系统性的偏离(例如持续高估或低估),或者残差(Residual)在该点前后表现出明显的不同模式(例如之前波动小,之后波动剧烈),那么2006年就可能是一个结构断点。
6.2 执行邹检验
在方程窗口,点击 View -> Stability Diagnostics -> Chow Breakpoint Test。在弹出的对话框中,输入你怀疑的断点年份,例如 2006。点击 OK。
Eviews会输出邹检验的结果,我们主要关注 F-statistic 和 Log likelihood ratio 这两个统计量,以及它们对应的 Prob. 值。
原假设(H0):模型在断点处没有发生结构变化(即两个子时期的回归系数相同)。
结果解读:如果F统计量的P值小于0.05,则拒绝原假设,认为2006年前后模型结构发生了显著变化,模型不稳定。假设我们得到 Prob. F = 0.008,小于0.05,那么结论就是模型在2006年存在结构断点。
6.3 如何修正:引入虚拟变量
当邹检验显示模型不稳定时,一个有效的修正方法是引入“虚拟变量”来捕捉这种结构变化。
我们需要创建一个虚拟变量D,在断点年份之前取值为0,在断点年份及之后取值为1。在Eviews命令窗口输入:genr D = @recode(@year<2006, 0, 1)。这条命令生成了一个新序列D,2006年之前(不含2006)的值为0,2006年及之后的值为1。
然后,我们将这个虚拟变量及其与原有解释变量的交互项加入模型。新的方程形式为:
farming c machinery rainfall D D*machinery D*rainfall
这个模型相当于允许2006年前后,模型的截距项(由D的系数体现)和斜率项(由交互项 D*machinery 和 D*rainfall 的系数体现)都发生变化。重新估计这个包含虚拟变量的方程,并再次进行邹检验(通常断点就不再显著了),或者观察新模型中虚拟变量及其交互项的显著性,就能具体分析结构变化体现在哪里。这样,我们就得到了一个在全部时间段内都更稳健、解释力更强的模型。
走完这一整套流程,你的多元线性回归模型才算真正完成了“体检”和“治疗”。从导入数据、初步回归,到逐一排查并修正多重共线性、异方差问题,再到验证正态性,最后确保模型结构稳定,每一步都让模型的基石更加牢固。我自己的经验是,刚开始觉得这些检验很繁琐,但坚持做下来,对模型的理解会深刻得多,汇报结果时也更有底气。下次再做回归,别忘了这四大“护法”,它们能帮你避开很多隐藏的坑。
2万+



被折叠的 条评论
为什么被折叠?



