一句话先给结论:
“加了 year 就不显著”99% 不是模型错了,而是 year 固定效应把核心解释变量的 时间维度变异“洗掉”了。先按下面的思路做 3 分钟诊断,再决定是保留双固、改用单固还是换 GMM。
① 3 分钟诊断流程
操作
|
命令(Stata)
|
看什么
|
典型结果与解读
|
(1) 看变异来源
|
xtsum x
|
组内/组间方差占比
|
若“组间”占比>80%,加 year 后显著性必掉
|
(2) 画时间趋势
|
twoway scatter y year, connect(L)
|
y 与 x 是否同涨同跌
|
若两条线几乎平行 → year 吸收了共同趋势
|
(3) VIF 检查
|
estat vif
|
最大 VIF
|
>10 说明 year 与 x 高度共线,需降维
|
② 四条解决路径(按优先级)
方案
|
适用情景
|
代码模板
|
论文写法
|
A. 保留双固,承认经济解释
|
理论上 year 必须控制(如政策冲击逐年不同)
|
xtreg y x i.year, fe cluster(id)
|
“表3(2)显示,在控制年度不可观测冲击后,x 系数不再显著,表明该效应主要由跨年度差异驱动。”
|
B. 改用 单固(仅个体)
|
经济逻辑:时间冲击对 y 影响极小
|
xtreg y x, fe cluster(id)
|
“Hausman 检验支持个体固定效应,而 LR 联合年度系数不显著 (p=0.21),故采用单固模型。”
|
C. 年度聚类而非年度虚拟
|
样本年份多,虚拟变量耗自由度
|
reghdfe y x, absorb(id) vce(cluster year)
|
“为节约自由度,采用年度聚类稳健标准误替代年度哑元。”
|
D. 动态 GMM
|
怀疑 x 滞后项或反向因果
|
xtabond2 y L.y x, gmm(L.y) iv(x) two
|
“Arellano-Bond AR(2) p=0.41,接受无自相关,GMM 结果保持显著。”
|
③ 2 行代码快速判断能否删 year
stata
quietly xtreg y x i.year, fe
testparm i.year // joint test year dummies
p>0.1 → year 联合不显著,可删掉转单固。
p<0.1 → 保留 year,接受解释力被稀释的结果。
④ 一句话写进论文
“当双向固定效应模型纳入年度虚拟变量后,核心解释变量的系数不再显著(β=0.03,p=0.21),联合年度系数检验表明年度冲击显著(p<0.01),提示该效应主要由跨年度宏观因素驱动,而非纯粹个体层面机制。”