【stata】xtreg VS reghdfe
这次的内容一共包括三个部分。
1.固定效应和随机效应的介绍和代码分析;
2.xtreg和reghdfe命令的区别;
3.reghdfe命令的介绍
固定效应FE VS 随机效应RE
FE和RE的核心区别在于如何处理个体之间不可观测的异质性(比如每个工人或公司自身的“固有特质”)。
固定效应模型允许这些个体效应与解释变量相关,要求相对来说比较松;
随机效应模型认为个体效应模型与解释变量不存在相关性,要求是比较严格的。
就比如说,在做企业创新的相关研究,每家企业都有不随时间变化的特征,比如企业文化等等,这些会对企业的创新影响很大,但又很难直接测量。即所谓的 “不可观测的个体效应”,也叫异质性。
以企业创新研究为例,每家企业通常拥有一些不随时间变化的特征,例如企业文化、管理理念等。这些因素虽然难以直接观测或量化,却可能对企业的创新投入与产出产生显著影响。这类无法直接控制但又可能与解释变量(如研发投入)相关的因素,便构成了所谓的**“不可观测的个体效应”,或称为个体异质性**。
若我们认为这些企业特质可能影响自变量(如研发支出)的选择时,更应采用固定效应模型(假设没那么严格);
若有充分理由认为个体效应与解释变量不相关(要求是比较严格了),或需要保留时间不变变量的系数时,用随机效应模型,
但在模型选择的时候,应该 Hausman 检验方法进行合理性验证。
✅ 一张对比表:固定效应 vs 随机效应
比较项 | 固定效应模型(FE) | 随机效应模型(RE) |
---|---|---|
基本思想 | 个体特质(如能力、文化)是固定的且与解释变量相关 | 个体特质是随机的,与解释变量不相关 |
个体效应是否与解释变量相关? | ✅ 允许相关 | ❌ 假设不相关 |
处理方式 | 显式控制个体效应(如去均值、哑变量、吸收) | 把个体效应当作误差的一部分建模 |
估计方法 | “within” 转换 / LSDV | GLS(广义最小二乘法) |
能否估计时间不变变量的系数? | ❌ 不能(因为时间不变的变量被固定效应吸收了) | ✅ 可以估计 |
效率(在假设满足的前提下) | 稳健但可能效率低 | 更有效率(但要求严格) |
Hausman 检验 | 无需(默认更保守) | ✅ 推荐使用(检验是否合理) |
*** 导入数据
webuse nlswork, clear
* 如果你像我一样会报错,那么,你可以选择打开这个链接下载数据
* https://www.stata-press.com/data/r16/nlswork.dta
* use "C:\Users\26985\Downloads\nlswork.dta", clear* 设置面板
xtset idcode year* FE VS RE
* 注意哦,这里的变量回归没有任何意义,仅仅做演示使用的哦~
xtreg ln_wage hours union age, fe
estimates store fextreg ln_wage hours union age, re
estimates store rehausman fe re
这里的检验结果:
. hausman fe_model re_model---- Coefficients ----| (b) (B) (b-B) sqrt(diag(V_b-V_B))| fe_model re_model Difference S.E.
-------------+----------------------------------------------------------------hours | -.0013602 .0000844 -.0014445 .0001015union | .1070362 .13072 -.0236838 .0023724age | .0153429 .0148032 .0005397 .0001229
------------------------------------------------------------------------------b = consistent under Ho and Ha; obtained from xtregB = inconsistent under Ha, efficient under Ho; obtained from xtregTest: Ho: difference in coefficients not systematicchi2(3) = (b-B)'[(V_b-V_B)^(-1)](b-B)= 328.00Prob>chi2 = 0.0000.
end of do-file
这里, p = 0.000 p=0.000 p=0.000,卡方统计量的值为328非常大,说明 FE 和 RE 的估计差异非常大,也即拒绝了原假设 H 0 H_0 H0,说明固定效应模型比随机效应模型更合适。
关于xtreg和reghdfe的差别
注:下面的两个(1)和(2)对应的代码是等同的
-
(1),固定效应模型自动控制了个体效应。所以在使用
reghdfe
的时候,要使用absorb(idcode)
。 -
(2)中,
xtreg
里面的r
和reghdfe
中的vce(r)
是一样的。但是呢,加入了稳健标准误后,你会发现结果有所差异,原因在于其代码内部对于固定效应的处理方式不同,xtreg
采用去均值,"within"转换;reghdfe
采用投影矩阵法,效率更高,支持多个固定效应。
*** 导入数据
webuse nlswork, clear
* 如果你像我一样会报错,那么,你可以选择打开这个链接下载数据
* https://www.stata-press.com/data/r16/nlswork.dta
* use "C:\Users\26985\Downloads\nlswork.dta", clear* 设置面板
xtset idcode year* (1)固定效应模型的两个写法
xtreg ln_wage hours union age, fe
reghdfe ln_wage hours union age, absorb(idcode)* (2)固定效应模型——稳健标准误
xtreg ln_wage hours union age, fe r
reghdfe ln_wage hours union age, absorb(idcode) vce(r)
当然可以,下面是对 reghdfe
命令在 Stata 中的详细解释和实战指南,适合用于面板数据分析、固定效应建模、高维控制变量建模。
reghdfe命令介绍
reghdfe
是一个用于线性回归的高级命令,专门设计来高效地处理 一个或多个固定效应(fixed effects),并支持稳健/聚类标准误差,适合大规模面板数据或需要吸收多个层次控制变量的场景。
🔧 安装命令:
在使用前,请确保你已安装:
ssc install reghdfe, replace
ssc install ftools, replace
ftools, compile
✅ 基本语法结构:
reghdfe depvar indepvars, absorb(varlist) [vce(cluster varname)]
参数说明:
参数 | 含义 |
---|---|
depvar | 因变量 |
indepvars | 解释变量(自变量) |
absorb(varlist) | 要吸收的固定效应变量(可多个,如个体、年份、行业) |
vce(cluster varname) | 聚类稳健标准误,通常用于个体或面板单位 |
📘 示例应用场景讲解
📌 例 1:控制个体固定效应
reghdfe ln_wage hours union age, absorb(idcode) vce(cluster idcode)
- 控制:个体固定效应(
idcode
) - 自变量:工时、是否工会、年龄
- 对标准误聚类于个体 → 允许个体内的误差项自相关或异方差
📌 例 2:控制个体 + 年份固定效应
reghdfe ln_wage hours union age, absorb(idcode year) vce(cluster idcode)
- 同时控制了个体差异与年份影响(如经济周期)
- 类似于在模型中加入
idcode
和year
的一组 dummy 变量,但计算更高效
📌 reghdfe 的优势
优点 | 解释 |
---|---|
✅ 多重固定效应 | 可同时吸收多个维度(例如个体 + 时间 + 地区) |
✅ 高效计算 | 比 areg 、xtreg 更快(特别是大样本) |
✅ 聚类支持 | 支持 vce(cluster ...) 聚类于任意维度 |
✅ 可与权重、交互项配合使用 | 灵活支持各种高级模型设定 |
🛠 常用选项汇总
选项 | 说明 |
---|---|
absorb(varlist) | 指定固定效应变量 |
vce(robust) | 普通异方差稳健标准误 |
vce(cluster var) | 聚类标准误,适合面板分析 |
residuals(varname) | 保存残差 |
nofe | 不显示固定效应部分信息(仅报告主变量) |
savefe(varname) | 保存固定效应估计值 |
aweights , pweights | 支持加权回归 |
✅ 总结:什么时候用 reghdfe
?
情形 | 是否推荐用 reghdfe |
---|---|
有多个固定效应(如个体+年份) | ✅ 强烈推荐 |
需要聚类标准误 | ✅ YES |
样本量很大 | ✅ 比 xtreg 、areg 更高效 |
需要估计时间不变变量 | ❌ 不支持(除非不吸收个体效应) |