You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python+pandas的面板数据双重差分(DID)回归实现咨询

多期双重差分(DID)回归实现方案

你的数据属于典型的多期DID适用场景:不同企业在不同年份进入处理状态(WFR=1),没有统一的政策实施时点,具体落地步骤如下:

1. 前置数据校验

  • 确认面板结构的唯一性:同一企业同一年度只能有一条观测,可通过df.duplicated(['NAME','YEAR']).sum()校验,存在重复值要先做去重或聚合处理
  • 核查处理状态逻辑:若存在企业处理状态从1变回0的情况(比如示例中企业B 2009/2011年WFR=1,2017年后变为0),要先确认是否符合业务真实规则,若为统计错误需提前修正
  • 连续变量异常值处理:对LCR、MR、RA三类连续指标做1%和99%分位的缩尾处理,避免极端值干扰回归结果

2. 基准回归实现

多期DID不需要额外生成处理组×时间的交互项,你现有的WFR字段本身就是个体-时间维度的处理状态标识,直接作为核心解释变量即可。Python环境下可使用linearmodels库实现双向固定效应回归,代码如下:

import pandas as pd
from linearmodels import PanelOLS

# 将数据集转为面板格式,索引依次设为个体(企业)、时间(年份)
df_panel = df.set_index(['NAME', 'YEAR'])

# 构建回归模型:控制个体固定效应、时间固定效应,加入MR、RA两个控制变量
# 标准误聚类到企业层面,允许同一企业不同年度的扰动项存在自相关
model = PanelOLS.from_formula(
    formula='LCR ~ 1 + WFR + MR + RA + EntityEffects + TimeEffects',
    data=df_panel
)
res = model.fit(cov_type='clustered', cluster_entity=True)
print(res)

回归结果中WFR的系数就是WFR对LCR的净影响效应,若系数通过显著性检验即可证明二者存在因果关联。

3. 稳健性检验(必做步骤,保证结论可靠性)

  • 平行趋势检验:生成处理时点前后的时间虚拟变量,和处理组标识做交互后放入回归,若政策实施前的交互项系数均不显著,即满足DID的平行趋势假设
  • 安慰剂检验:随机给企业分配处理状态和处理时点,重复模拟回归1000次以上,若真实回归的WFR系数落在随机模拟系数分布的5%分位外,即可排除结论的偶然性
  • 标准误稳健性检验:更换聚类维度,比如同时聚类到企业和年份,或仅聚类到年份,确认WFR系数的显著性没有发生本质变化
  • 子样本回归:剔除特殊行业、特殊年份的样本后重新回归,确认结论依然成立

内容的提问来源于stack exchange,提问作者Marzieh Karimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:27:03