事件研究设计:OLS在结果变量无方差时仍给出估计的疑问
事件研究中OLS与Poisson回归的行为差异解析
问题描述
在事件研究设计中,处理前(event_time ≤ 0)的结果变量定义上恒为0。预期OLS在因变量无方差的子样本中无法返回估计值,但实际lm和带固定效应的feols均输出了估计结果;仅带固定效应的Poisson回归(feglm)呈现“无法估计处理前系数”的预期行为。以下是可复现代码:
library(fixest) library(dplyr) set.seed(123) n_units <- 500 n_periods <- 10 n_rows <- n_units * n_periods panel <- expand.grid(unit_id = as.character(1:n_units), event_time = -4:5) %>% arrange(unit_id, event_time) %>% mutate(treated = ifelse(runif(n_rows) > 0.5, 1, 0), outcome = ifelse(event_time <= 0, 0, rpois(n_rows, lambda = 1)), time = sample(1:1000, n_rows, replace = TRUE), cluster_id = sample(1:100, n_rows, replace = TRUE)) # 验证处理前结果变量恒为0 panel %>% group_by(event_time <= 0) %>% distinct(outcome) model_1 <- lm(outcome ~ i(event_time, treated, ref = 0), data = panel) model_2 <- feols(outcome ~ i(event_time, treated, ref = 0) | unit_id + event_time + time, data = panel) model_3 <- feglm(outcome ~ i(event_time, treated, ref = 0) | unit_id + event_time + time, family = "poisson", data = panel) summary(model_1) etable(model_2, model_3)
核心原因解析
1. OLS(含feols)的估计逻辑:不依赖子样本因变量方差
OLS的核心是全局最小化残差平方和,只要模型的设计矩阵(自变量组合)满足列满秩(无完全共线性),就能计算出系数估计值。哪怕某个子样本的因变量无方差,只要自变量在该子样本中存在变异,OLS依然会基于全局数据拟合出最优线——处理前的0值只是作为固定观测点参与拟合,不会阻断模型估计。
你之前的认知偏差在于:误以为子样本因变量无方差会导致OLS无法运行,但OLS的收敛条件是设计矩阵列满秩,而非因变量在所有子样本都有方差。
2. feols的行为本质:带固定效应的OLS
fixest::feols本质是demean后的OLS(固定效应通过组内demean消除),只要demean后的设计矩阵依然列满秩,就能得到估计结果。model_2中加入的unit_id、event_time、time固定效应并未导致设计矩阵完全共线,因此模型仍能输出系数。
3. Poisson回归的差异:似然函数的约束逻辑
Poisson回归属于广义线性模型(GLM),依赖最大化对数似然函数估计系数。对于处理前outcome=0的观测,其对数似然项为-exp(Xβ):为了最大化似然,处理前的相对时间虚拟变量对应的系数会被推向负无穷,优化器会识别出这些系数无法被有效估计,最终返回NA或不显示,这就是你看到的“预期行为”。
补充说明
- 查看
model_1的结果会发现,处理前的系数是基于处理后的数据反向推导的,统计意义极弱,因为处理前的因变量没有变异,无法支撑因果推断。 - 若要在OLS框架下实现类似Poisson的“处理前系数无法估计”的结果,可以手动移除处理前的观测,或在模型中加入
event_time ≤ 0的交互项来约束系数,但这需要根据研究设计调整。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

