面板数据与固定效应
PanelFE

面板数据与固定效应:FE vs RE 的选择与TWFE实操

系统讲解面板数据分析方法:固定效应vs随机效应的选择逻辑、Hausman检验、双向固定效应TWFE、聚类标准误的选择。

作者:计量科研导航站发布:2025-03-05★★★

本文结构

  1. 原理:FE / RE / Pooled OLS 的区别与选择
  2. 直觉:什么时候该用固定效应
  3. 代码:完整的面板数据分析 Stata 代码

第一层:原理

面板数据模型

面板数据(Panel Data)同时包含截面维度 ii 和时间维度 tt

Yit=Xitβ+αi+λt+εitY_{it} = X_{it}'\beta + \alpha_i + \lambda_t + \varepsilon_{it}

其中:

  • αi\alpha_i:个体固定效应(time-invariant unobserved heterogeneity)
  • λt\lambda_t:时间固定效应(common time shocks)
  • εit\varepsilon_{it}:特异性误差项

三种估计方法对比

方法 假设 适用场景
Pooled OLS Cov(αi,Xit)=0\text{Cov}(\alpha_i, X_{it}) = 0 无个体异质性
随机效应 (RE) Cov(αi,Xit)=0\text{Cov}(\alpha_i, X_{it}) = 0 个体效应与解释变量不相关
固定效应 (FE) 允许 Cov(αi,Xit)0\text{Cov}(\alpha_i, X_{it}) \neq 0 个体效应可能与解释变量相关

Hausman 检验

H=(β^FEβ^RE)[Var(β^FE)Var(β^RE)]1(β^FEβ^RE)χ2(k)H = (\hat{\beta}_{FE} - \hat{\beta}_{RE})' [\text{Var}(\hat{\beta}_{FE}) - \text{Var}(\hat{\beta}_{RE})]^{-1} (\hat{\beta}_{FE} - \hat{\beta}_{RE}) \sim \chi^2(k)
  • H0H_0:RE 一致且有效(即 Cov(αi,Xit)=0\text{Cov}(\alpha_i, X_{it}) = 0
  • 若拒绝 H0H_0:使用 FE

实践建议:在因果推断研究中,几乎总是使用 FE。RE 的核心假设(个体效应与解释变量不相关)在多数经济学场景中不太可信。

聚类标准误

面板数据中,误差项 εit\varepsilon_{it} 在个体层面通常存在序列相关。此时需要聚类标准误(Cluster-robust SE):

V^cluster=(XX)1(g=1GXgu^gu^gXg)(XX)1\hat{V}_{cluster} = (X'X)^{-1} \left(\sum_{g=1}^{G} X_g' \hat{u}_g \hat{u}_g' X_g \right) (X'X)^{-1}

聚类层级选择原则

  1. 聚类在处理变量变化的最高层级
  2. 聚类数 GG 应足够大(一般 G50G \geq 50
  3. GG 过少时考虑 Wild cluster bootstrap

第二层:直觉

固定效应的直觉

固定效应本质上是一种"组内去均值"(within transformation)操作:

Y~it=YitYˉi\tilde{Y}_{it} = Y_{it} - \bar{Y}_i

它消除了所有不随时间变化的个体特征(观测到的和未观测到的),只利用个体随时间的变化来识别效应。

例子:研究教育投入对经济增长的影响

  • 不用 FE:富裕省份教育投入高且增长快,估计有偏
  • 用 FE:比较同一个省份在不同年份教育投入变化带来的增长变化

第三层:Stata 代码

// ═══════════════════════════════════════════════
// 面板数据与固定效应分析
// ═══════════════════════════════════════════════
 
clear all
set seed 44444
 
// 模拟面板数据
local N = 100
local T = 10
set obs `=`N'*`T''
gen id = ceil(_n/`T')
bysort id: gen t = _n
 
// 个体固定效应(与 x 相关!)
gen alpha_i = rnormal(0, 2) if t == 1
bysort id: replace alpha_i = alpha_i[1]
gen x = 0.5*alpha_i + rnormal(0, 1)
gen y = 1 + 2*x + alpha_i + 0.3*t + rnormal(0, 1)
// 真实系数 β = 2
 
xtset id t
 
// ═══ Pooled OLS(有偏)═══════════════════
reg y x, cluster(id)
est store pooled
 
// ═══ 随机效应 ═══════════════════════════
xtreg y x, re
est store re
 
// ═══ 固定效应 ═══════════════════════════
xtreg y x, fe cluster(id)
est store fe
 
// ═══ reghdfe(推荐)═════════════════════
reghdfe y x, absorb(id t) cluster(id)
est store twfe
 
// ═══ Hausman 检验 ═══════════════════════
hausman fe re
// 若 p < 0.05,使用 FE
 
// ═══ 结果对比 ═══════════════════════════
esttab pooled re fe twfe, ///
    se star(* 0.10 ** 0.05 *** 0.01) ///
    title("Panel Data Estimation Comparison") ///
    mtitles("Pooled" "RE" "FE" "TWFE") ///
    note("True β = 2")

参考文献

  • Wooldridge, J. M. (2010). Econometric Analysis of Cross Section and Panel Data. MIT Press.
  • Cameron, A. C., & Miller, D. L. (2015). A Practitioner's Guide to Cluster-Robust Inference. Journal of Human Resources, 50(2), 317-372.