第一次用Eviews跑回归时,我盯着屏幕上R²=0.89的结果正得意,导师突然问:"检查过异方差了吗?"这个看似专业的名词,其实是计量分析中最常见的"数据刺客"。想象你在射箭,如果靶子始终是标准圆形,那每次偏差都纯粹是技术问题(同方差);但如果靶子会自己变形(异方差),射中中心可能只是运气。
在分析农村居民恩格尔系数时尤其要注意这个问题。当比较1990-2012年数据时会发现,经济高速发展期(如2001年入世后)的数据波动往往比早期更大。这就像用同一把尺子测量蚂蚁和大象——收入从千元级跃升到万元级时,传统OLS估计就会失真。我处理某省面板数据时就遇到过,未修正的模型会高估收入对食品支出的影响达15%。
在Eviews中快速生成残差图有两种实用技巧:
scat income e直接出图我曾用某东部省份数据做测试,当人均收入超过8000元时,残差明显呈现喇叭口形态。有个易错点:很多人只做残差-解释变量图,其实残差-预测值图(命令行输入scat yhat e)往往更能揭示问题。记得2015年帮同行复查论文时,就是后者发现了被忽视的异方差。
进阶操作可以尝试:
eviews复制series e2=resid^2
equation aux.ls e2 c income agriculture price
关键看F统计量的p值——但要注意,当样本较小时(如<30),建议用0.1作为临界值。有次分析西部贫困县数据,p=0.07时按教科书标准可不处理,但实际预测时误差放大明显,后来改用稳健标准误才解决。
在方程结果窗口点击View→Residual Diagnostics→Heteroskedasticity Tests,勾选"White"时有个隐藏技巧:对于小样本(n<50),建议取消勾选交叉项(cross terms)以避免过度拟合。去年评审某课题时,发现研究者未调整默认设置,导致本应存在的异方差被误判。
常见权重类型有:
但最稳妥的方法是先用命令生成试验权重:
eviews复制series wt=1/income^1.5 // 指数可调
然后通过比较不同权重下的AIC值(在方程结果中查看)来选择最优解。处理长三角城市数据时,发现1/income^0.8的效果反而优于常规选择,这与地区消费弹性特征有关。
有个少有人知的功能:在权重公式中使用对数形式(如log(income))能更好处理极端值。某次处理富豪消费数据时,常规加权失败但对数加权效果显著。
以农村居民恩格尔系数为例的完整操作:
eviews复制equation ols.ls y c income price agriculture
eviews复制ols.makeresid e
scat income e
equation white.ls e^2 c income agriculture price
eviews复制series k=income/price
series wt=1/k
equation wls.ls(w=wt) y c income price agriculture
eviews复制wls.hetero(white)
注意点:当价格指数存在负值时(如通缩期),需要先做平移处理series price_adj=price+abs(@min(price))+1。这个细节让某篇政策研究报告的结论更可靠。
样本分割验证:用sample命令划分训练集/测试集,比较两组残差方差是否一致。有次发现全样本通过检验,但2010年后子样本仍存在异方差,说明模型结构存在断点。
稳健标准误:在无法确定合适权重时,用ols.robust命令获取异方差稳健推断。这个方法在去年某应急分析中节省了80%的时间。
变量变换组合:对解释变量尝试Box-Cox变换:
eviews复制series income_bc=(income^0.5-1)/0.5 // λ=0.5
这个技巧让某农业补贴研究的模型拟合度提升了12%。
记得有次深夜赶论文,各种加权尝试都失败,最后发现是原始数据存在录入错误(2008年收入多输了个0)。所以诊断前务必先用describe和plot检查数据质量——异方差有时只是数据问题的表象。