stata回归估计
Stata 提示 omitted because of collinearity(变量被共线性剔除)
不是 bug,是数学上算不出来。同时放原变量和对数、固定效应里放不随时间变化的变量,都会触发。
报错原文
note: x2 omitted because of collinearity为什么会报这个错
这条是 note 不是 error,回归照样出结果,但某个变量被剔除了。含义是「这个变量能被其他变量线性表示,信息重复了」。
三个高频场景:
- 同时放入
size和ln(size)。两者完全共线。 xtreg, fe里放了不随时间变化的变量。固定效应会吸收所有个体层面不随时间变化的差异,性别、行业、注册地这类变量必然被剔除。- 虚拟变量陷阱。k 个类别放了 k 个虚拟变量又带常数项,必有一个被剔除。
第 2 种最容易被误判成 bug——它其实是固定效应的数学性质,不是模型写错了。
怎么解决
第一步:确认是哪种共线
corr x1 x2相关系数接近 ±1,就是近似完全共线。
第二步:按场景处理
- 原变量 + 对数 → 只留一个
- FE 里的时不变变量 → 这是正常的,系数本来也不可识别。如果确实要估计它的效应,改用
reghdfe的absorb()配合随机效应,或用 Mundlak 方法 - 虚拟变量陷阱 → 少放一个类别作基准组
第三步:系统性检查共线性
estat vifVIF > 10 提示严重共线。
注意:FE 模型里时不变变量被剔除是预期行为,不用修。真正要担心的是时变变量之间的共线。
代码示例
* 场景 1:原变量与对数同时放入
gen ln_size = ln(size)
reg y size ln_size // 必有一个被剔除
* 场景 2:FE 中的时不变变量
xtset id year
xtreg y x1 x2 i.industry, fe // industry 被剔除
* 共线性诊断
reg y x1 x2
estat vif延伸阅读
方差膨胀因子(VIF)是什么?如何用它诊断多重共线性? →假设你用三个自变量——教育年限、工作经验、年龄——去解释工资。直觉上,这三个变量之间肯定有关系:年龄大的人通常工作经验也更多。但具体来说,这种\"自变量之间的相关性\"对你的回归估计有什么影响?
报错解决了,但方法还没搞懂?
报错只是表象。因果推断、面板数据、稳健性检验这些方法背后的逻辑,知识库里按「原理 × 直觉 × 代码」讲清楚了。
进入知识库 →