方法选择 ·
传统双向固定效应 DID 还是 CSDID?错位实施政策怎么选
TWFE DID 与 CSDID 怎么选?本文从统一处理时点、交错实施、效应异质性和对照组出发给出决策,并核对 ChatSRS 当前 DID 系数与 simple 总体 ATT 的真实输出。
直接决策答案
如果处理组在同一时点统一受到政策,存在稳定的未处理对照组,且一个平均 DID 系数能回答研究问题,双向固定效应 DID(TWFE)通常更直接。
如果不同个体在不同年份首次受处理,且处理效应可能随 cohort 或处理后时间变化,应优先考虑 CSDID 的组—时效应框架。不能因为某个软件操作更方便,也不能因为某个结果更显著而选择估计器。
这里的“优先”仍受实现范围约束:当前 CSDID 路径要求存在 never-treated 个体,直出的是 simple 聚合总体 ATT,不展示完整 ATT(g,t) 明细。若所有个体最终都被处理,当前实现不会自动改用 not-yet-treated 对照。
先检查处理时点
| 设计情形 | 更匹配的起点 | 核心原因 |
|---|---|---|
| 全部处理组同一年实施 | TWFE DID | 一个 treat×post 系数对应清晰共同冲击 |
| 不同地区分批实施 | CSDID | 避免把已处理组不恰当地作为其他组的对照 |
| 处理效应随 cohort/事件时间变化 | CSDID | 估计框架允许组别与时间异质性 |
| 只想得到简洁基准规格 | TWFE DID | 便于报告个体/时间固定效应与聚类 SE |
| 没有 never-treated,所有单位最终处理 | 当前两者都需额外设计判断 | 当前 CSDID 不支持 not-yet-treated;TWFE 又可能受交错异质性影响 |
选择之前还要核对处理是否不可逆、政策是否有提前反应、对照组是否受溢出,以及结果变量口径是否跨期一致。
设计诊断要先于估计器切换
从 TWFE 换到 CSDID 不能修复错误政策日期、被污染的对照组或结果口径变化。建议先按个体列出首次处理年份,检查处理后是否又回到未处理状态,再统计各 cohort 在每一年可用的处理前后观测。随后核对 never-treated 是否在整个研究期保持未处理,以及它与各 cohort 在政策前是否具有可比较趋势。
还要区分“没有显著前趋势”与“平行趋势可信”。前者只是样本中的检验结果,可能受统计功效影响;后者需要制度背景、趋势图、系数区间和替代规格共同支持。若政策会影响邻近未处理地区,never-treated 也可能被溢出污染。此时无论 TWFE 还是当前 CSDID,估计对象都需要重新定义。
最后,交错处理不等于效应一定异质,但它使异质性风险不能被忽略。可以把 TWFE 作为透明基准,把 CSDID 作为与设计更匹配的主结果或敏感性分析;报告时说明两者使用的对照和权重不同,而不是把结果差异简单归因于“方法更先进”。
ChatSRS 当前 TWFE DID 的真实范围
panel_did 要求:
- Y、个体列、时间列;
- 0/1 DID 状态列,其中只有处理组在政策后取 1;
- 可选控制变量。
它估计个体与时间双向固定效应,并按个体层级计算聚类稳健 SE。直出摘要包含 DID 系数、SE、精确 p、N、调整 R²,以及 DID=1 和 DID=0 的观测数;系数表同时用星号表示阈值显著性。
**边界:**当前 DID 状态列必须是 treat×post,而不是时不变处理组标签。直出不含事件研究、处理前各期系数、联合平行趋势检验或安慰剂检验。交错实施且效应异质时,TWFE 系数可能混合不恰当比较,分析器也会在表注中提示这一点。
ChatSRS 当前 CSDID 的真实范围
panel_csdid 要求 cohort 列记录首次受处理年份,0 或缺失表示 never-treated。它用 differences.ATTgt 估计后进行 simple 聚合,直出总体 ATT、SE、Z、正态近似 95% CI、个体总数、处理个体数和 never-treated 个体数。
**边界:**当前格式化结果没有完整 ATT(g,t) 表或事件时间图,只展示 simple 总体 ATT。没有 never-treated 会直接停止;总体 ATT 不能反推出每个 cohort 或每个时期的效应。CSDID 运行成功也不证明平行趋势、无提前反应或无溢出已经成立。
两种数据编码不能混用
TWFE 输入示例:
| unit | year | outcome | did |
|---|---|---|---|
| A | 政策前 | … | 0 |
| A | 政策后且已处理 | … | 1 |
| 对照单位 | 任意期 | … | 0 |
CSDID 输入示例:
| unit | year | outcome | first_treat_year |
|---|---|---|---|
| A | 各期 | … | 2019 |
| B | 各期 | … | 2021 |
| 对照单位 | 各期 | … | 0 |
把 cohort 年份误填进 0/1 did 列,或把每期 0/1 状态误当首次处理年份,都会改变估计含义。
可复核的一句话输入
统一处理时点的 TWFE:
outcome 是 Y,unit_id 和 year 是面板索引,did 是 treat×post 的 0/1 列,控制 size 和 baseline。请做双向固定效应 DID,按 unit_id 聚类,报告 DID b、SE、精确 p、N、调整 R²和 0/1 观测数;明确当前没有直出事件研究或平行趋势检验。
交错实施的 CSDID:
outcome 是 Y,unit_id 是个体,year 是时间,first_treat_year 是首次处理年份,0 或缺失表示 never-treated。请做 CSDID,核对处理组与 never-treated 均存在,报告 simple 总体 ATT、SE、Z、95% CI 和个体数;明确当前不直出 ATT(g,t) 明细。
输出解读与论文模板
[TWFE 模板]
本研究以 did=treat×post 估计个体和时间双向固定效应模型,
标准误聚类至 [unit]。DID 系数为 b = [ ](SE = [ ],
p = [ ]),N = [ ],调整 R² = [ ]。该估计作为统一处理时点下
的平均政策关联报告;平行趋势与动态效应另行检验。
[CSDID 模板]
鉴于政策分批实施,本研究以首次处理年份定义 cohort,并使用
never-treated 作为对照。simple 聚合总体 ATT = [ ](SE = [ ],
Z = [ ],95% CI [[ ], [ ]])。当前直出未展示 ATT(g,t) 明细,
因此不据总体平均值推断每个 cohort 或事件时间的效应。
如果将两者作为稳健性比较,不能只写“方向一致所以因果稳健”。应说明二者对照组、估计对象、权重与样本不同。
常见问题 FAQ
Q1:政策分批实施还能直接用 TWFE 吗?
可以作为描述或基准,但在异质处理效应下可能有偏,需要诊断并配合适当的稳健估计。
Q2:CSDID 一定需要从未处理组吗?
理论实现可以有不同对照组策略,但当前产品路径明确要求 never-treated。
Q3:CSDID 总体 ATT 显著是否表示所有 cohort 都显著?
不表示。聚合结果可能掩盖不同组别和时期的方向与量级。
Q4:平行趋势由哪个分析器自动证明?
都不能自动证明。当前两条直出均不含完整的前趋势证据,需要按设计另行检验与解释。
相关阅读
确认处理时点与对照组后,可打开 ChatSRS,按设计选择 TWFE 或 CSDID。选择理由应先于结果显著性。