DID-双重差分
双重差分(Difference-in-Differences, DID)用于评估“处理组”在政策/事件前后相对“对照组”的净效应。其核心思想是:通过两次差分消除时间趋势与组间固定差异,从而估计政策效应。
DID-双重差分(Difference-in-Differences)
1. 方法概述
双重差分(Difference-in-Differences, DID)用于评估“处理组”在政策/事件前后相对“对照组”的净效应。其核心思想是:通过两次差分消除时间趋势与组间固定差异,从而估计政策效应。
设共有 \(n\) 个样本、\(d\) 个特征,数据集表示为
$$ \mathcal{D}=\{(x_i,y_i)\}_{i=1}^{n},\quad x_i\in\mathbb{R}^d \tag{1} $$
其中 \(y_i\) 为结果变量(因变量),\(x_i\) 包含处理组指示、时间指示与控制变量等。
2. 符号与变量
| 符号 | 含义 |
|---|---|
| \(y_i\) | 第 \(i\) 个样本的结果变量 |
| \(D_i\) | 处理组指示(处理=1,对照=0) |
| \(Post_i\) | 政策/时间指示(后期=1,前期=0) |
| \(D_i\times Post_i\) | DID 交互项 |
| \(X_i\) | 控制变量向量 |
| \(\beta_3\) | DID 效应(核心估计量) |
| \(\varepsilon_i\) | 误差项 |
本系统支持:
- 处理组取值/对照组取值(当处理组列不是 0/1 时,用于映射为 \(D\));
- Post 生成方式:列为 0/1、阈值(>=)、或按值匹配;
- 标准误类型:常规/稳健(HC1)/聚类/ HAC(Newey-West)。
3. DID 均值法(四格均值)
设四类均值为:
- \(\overline{y}_{1,1}=E[y|D=1,Post=1]\)(处理组、后期)
- \(\overline{y}_{1,0}=E[y|D=1,Post=0]\)(处理组、前期)
- \(\overline{y}_{0,1}=E[y|D=0,Post=1]\)(对照组、后期)
- \(\overline{y}_{0,0}=E[y|D=0,Post=0]\)(对照组、前期)
DID 效应为
$$ \widehat{\text{DID}}=(\overline{y}_{1,1}-\overline{y}_{1,0})-(\overline{y}_{0,1}-\overline{y}_{0,0}) \tag{2} $$
系统会输出四格均值表与 DID 汇总结果,并绘制“四格均值柱状图”。
4. DID 回归法(含控制变量)
基准回归模型为
$$ y_i=\beta_0+\beta_1 D_i+\beta_2 Post_i+\beta_3(D_i\times Post_i)+\gamma^\top X_i+\varepsilon_i \tag{3} $$
其中 \(\beta_3\) 即 DID 效应。系统输出系数、标准误、t 值、p 值与置信区间。
4.1 处理组/对照组映射
当处理组列不是 0/1 时,可指定“处理组取值” \(v_T\) 与“对照组取值” \(v_C\),构造指示变量:
$$ D_i=\mathbb{I}(\text{treat}_i=v_T)\quad (\text{若同时指定 } v_C,\ \text{仅保留 } \{v_T,v_C\}) \tag{4} $$
4.2 Post 生成方式
- 列为 0/1 指示:若列已为 0/1,则直接作为 \(Post_i\)。
- 阈值方式(数值或日期):
$$ Post_i=\mathbb{I}(time_i\ge \tau) \tag{5} $$
- 按值匹配:
$$ Post_i=\mathbb{I}(time_i=\tau) \tag{6} $$
5. 标准误与显著性(系统支持)
系统提供以下标准误类型:
- 常规:基于经典 OLS 假设。
- 稳健(HC1):对异方差稳健。
- 聚类(Cluster):按指定聚类列进行聚类稳健标准误。
- HAC(Newey-West):适用于序列相关与异方差。
显著性与置信区间基于显著性水平 \(\alpha\) 计算。
6. 平行趋势与诊断图
DID 的关键假设是“平行趋势”。系统提供:
- 处理组 vs 对照组趋势图(政策前后)
- 残差诊断:残差直方图、Q-Q 图、ACF 自相关图
用于辅助检验趋势一致性与残差结构。
7. 输出结果与图表说明
系统结果目录包含:
- Excel:模型摘要、回归系数、DID 均值、DID 汇总、拟合与残差、处理后数据、原始数据、参数设置、图表清单;
- 图表文件:趋势图、DID 四格均值柱状图、系数置信区间、残差诊断等。
图表路径会列在 Excel 的“图表清单”中,便于直接插入论文。
8. 与代码实现的对应关系
本算法在程序中由 具体的算法2/DID-双重差分/core/calculator.py 实现。程序会显式构造 _treat、_post 与交互项 _did,并将 DID 均值法与回归法的关键结果同时落入 xlsx,因此论文撰写时应直接对应这些真实输出。
8.1 程序实际导出的工作表
模型摘要:核心统计量与 DID 效应;回归系数:系数、标准误、t 值、p 值、区间与显著性;DID均值:四格均值;DID汇总:DID 效应及相关汇总;拟合与残差:拟合值与残差;处理后数据、原始数据:数据明细;参数设置:模型与标准误配置;图表清单:图表路径索引。
8.2 程序实际生成的图表
- 处理组与对照组趋势图;
- DID 四格均值柱状图;
- 系数与置信区间图;
- 残差直方图、Q-Q 图、ACF 图。
8.3 程序实现中应写明的点
- 程序支持常规、稳健、聚类和 HAC 标准误;
- 若处理组列不是 0/1,会先按用户给定取值映射为处理/对照;
- DID 回归系数表中的交互项就是核心效应,不应与四格均值差重复解释;
- 图表清单中的路径均可直接用于论文插图定位。
9. 论文写作模板
方法描述模板:
本研究采用双重差分(DID)方法评估政策冲击的净效应。设 \(D_i\) 表示处理组指示变量,\(Post_i\) 表示政策实施后的时间指示变量,回归模型设定为式(3)。其中 \(\beta_3\) 为核心 DID 效应估计量,反映处理组在政策前后相对对照组的变化差异。为控制潜在混杂因素,模型加入控制变量 \(X_i\),并对标准误进行稳健/聚类/HAC 处理以提高推断可靠性。
结果描述模板:
结果表明,DID 系数 \(\beta_3\) 为 \(\hat{\beta}_3\),在 \(\alpha=0.05\) 显著性水平下显著(p 值为 \(p\))。处理组在政策实施后相对对照组呈现显著上升(或下降),表明政策对结果变量具有显著影响。
10. UI 参数一一对应表(与界面一致)
| UI 参数 | 符号/变量 | 作用 | 取值/说明 |
|---|---|---|---|
| 模型 | DID | 固定为 DID 模型 | 仅“DID-双重差分” |
| 因变量(y) | \(y_i\) | 被解释变量/结果变量 | 需为数值列 |
| 处理组列(D) | \(D_i\) | 处理组指示列 | 0/1 或分类标签 |
| 处理组取值 | \(v_T\) | 将处理组标签映射为 1 | 当处理组列非 0/1 时必填 |
| 对照组取值 | \(v_C\) | 将对照组标签映射为 0 | 可选;填写后仅保留两类样本 |
| 时间列(Post/Time) | \(time_i\) | 政策/时间指示列 | 可为 0/1、数值或日期 |
| Post 生成方式 | \(Post_i\) 生成规则 | 生成政策期指示 | 0/1 指示 / 阈值(>=) / 按值匹配 |
| 阈值/取值 | \(\tau\) | Post 阈值或匹配值 | 例如 2020-01-01 或 3 |
| 控制变量(X) | \(X_i\) | 控制混杂因素 | 多选,需为数值型 |
| 包含截距项 | \(\beta_0\) | 是否包含常数项 | 一般建议保留 |
| alpha | \(\alpha\) | 显著性水平 | 常用 0.05 或 0.01 |
| 标准误类型 | SE 设定 | 推断稳健性 | 常规 / 稳健(HC1) / 聚类 / HAC |
| 聚类列 | Cluster | 聚类稳健标准误 | 仅在“聚类”时必选 |
| HAC 滞后阶 | Lags | Newey-West 滞后 | 仅在“HAC”时启用 |
| 输出设置 | output_file | 结果保存路径 | 默认 results/ 时间戳目录 |
提示:当处理组列不是 0/1 时,必须填写“处理组取值”;若填写“对照组取值”,系统仅保留两类样本,避免混入其它类别。
11. 英文模板段落与图表题注(可选)
英文方法段:
We employ the Difference-in-Differences (DID) approach to identify the causal effect of the policy. Let \(D_i\) indicate the treated group and \(Post_i\) indicate the post-policy period. The baseline specification follows Equation (3), and the coefficient on the interaction term \(D_i\times Post_i\) captures the DID effect. Control variables \(X_i\) are included, and standard errors are computed using robust/cluster/HAC options as appropriate.
英文结果段:
The estimated DID coefficient \(\hat{\beta}_3\) is statistically significant at the \(\alpha=0.05\) level, suggesting a meaningful policy impact on the outcome variable. The direction and magnitude of \(\hat{\beta}_3\) imply that the treated group experienced a relative increase (or decrease) after the policy implementation.
英文图题模板:
- Figure 1. Average trends of treated and control groups before and after the policy (parallel trends check).
- Figure 2. Four-cell means and DID contrasts for treated/control and pre/post periods.
- Figure 3. Coefficients with 95% confidence intervals (DID regression).
- Figure 4. Residual diagnostics (histogram / Q–Q plot / ACF).
12. 示例表格与图表题注模板
表 1:DID 回归结果(示例)
| 变量 | 系数 | 标准误 | t 值 | p 值 | 95%CI | 显著性 |
|---|---|---|---|---|---|---|
| \(D\) | ||||||
| \(Post\) | ||||||
| \(D\times Post\) | ||||||
| 控制变量 |
图 1:处理组与对照组的趋势图
图 1 展示了处理组与对照组在政策实施前后的平均趋势变化,用于检验平行趋势假设。
图 2:DID 四格均值柱状图
图 2 展示四类均值 \((D=1/0, Post=1/0)\) 的对比,直观体现双重差分效应。
13. UI 参数示例填写截图说明(可用于论文或附录)
说明:以下为“截图应包含的字段与示例填写”,便于用户按界面逐项复现。若需插入论文,请截取“参数设置”区域并标注序号(①②③…),在正文中对应说明。
截图应包含的字段与示例填写(建议顺序)
① 因变量(y):y
② 处理组列(D):treat
③ 处理组取值:1(若处理组列非 0/1,必填)
④ 对照组取值:0(建议填写以仅保留两类样本)
⑤ 时间列(Post/Time):post 或 time
⑥ Post 生成方式:列为0/1指示(若为阈值/匹配,请在⑦填写)
⑦ 阈值/取值:2020-01-01 或 3(仅阈值/匹配时填写)
⑧ 控制变量(X):选择 year, x1, x2, region, firm_size, industry, gdp
⑨ 包含截距项:勾选
⑩ 标准误类型:稳健(HC1) / 聚类(Cluster) / HAC
⑪ 聚类列(若选择聚类):region
⑫ HAC 滞后阶(若选择 HAC):1
⑬ alpha:0.05
⑭ 输出设置:默认(results/时间戳目录)或自定义路径
截图标注示例说明(可写入正文/附录):
“图 A1 展示了 DID 模型参数设置界面。处理组列为 treat,处理组取值与对照组取值分别设置为 1 和 0;时间列为 post,Post 生成方式为 0/1 指示;控制变量选择 year、x1、x2、region、firm_size、industry、gdp;标准误类型采用稳健(HC1),显著性水平 α=0.05。”
14. 注意事项
- DID 的识别依赖“平行趋势”假设,建议在政策前期进行趋势检验;
- 若处理组列非 0/1,必须指定“处理组取值”,建议同时指定对照组取值;
- 若存在时间相关或组内相关性,建议采用 HAC 或聚类稳健标准误;
- 结果解释应结合具体政策背景,避免仅凭系数符号做结论。
15. 单篇终审补充
15.1 图题与表题对齐建议
- 本文档应优先对应真实算法目录
具体的算法2/DID-双重差分。 - 代表性结果表建议绑定
具体的算法2/DID-双重差分/results/DID-双重差分分析结果_20260329_165248/DID-双重差分分析结果_20260329_165248.xlsx。 - 表题应直接对应该 xlsx 的真实工作表:
模型摘要、回归系数、DID均值、DID汇总、拟合与残差、处理后数据、原始数据、参数设置、图表清单。 - 图题应优先绑定
results根目录中与同轮结果最接近的一组实体图:trend_20260329_165320.png、did_bar_20260329_165320.png、coef_ci_20260329_165320.png、resid_hist_20260329_165320.png、resid_qq_20260329_165320.png、resid_acf_20260329_165320.png。
15.2 终审说明
- DID 当前存在“结果总表在时间戳子目录、复现脚本与部分图文件在
results根目录”的历史导出结构,不是所有产物都收拢在单一子目录中。 - 复现脚本可对应
repro_did_template_20260329_165321.py,其SRC_FILE实际写为did_window1_input.csv,属于“脚本同目录 CSV 快照复现”口径。 - 因此论文附录若写复现说明,应如实写成“结果表来自时间戳结果目录,复现脚本和同批图像位于
results根目录,并读取同目录下的did_window1_input.csv”,不要硬写成统一的repro_inputs结构。
15.3 全量强化补充
- 当前需要修正旧文一处图证口径:主结果目录本身已经包含完整图像,不必优先绑定
results根目录那组165320图片。当前首层主结果目录是具体的算法2/DID-双重差分/results/DID-双重差分分析结果_20260329_165248。 - 当前首层主工作簿为
具体的算法2/DID-双重差分/results/DID-双重差分分析结果_20260329_165248/DID-双重差分分析结果_20260329_165248.xlsx,实际工作表为模型摘要、回归系数、DID均值、DID汇总、拟合与残差、处理后数据、原始数据、参数设置、图表清单。 - 当前首层主目录中已经存在同时间戳图证:
trend_20260329_165248.png、did_bar_20260329_165248.png、coef_ci_20260329_165248.png、resid_hist_20260329_165248.png、resid_qq_20260329_165248.png、resid_acf_20260329_165248.png。因此正文若只谈主实验,应优先使用165248子目录中的这组图,而不是根目录平铺的165320组。 - 当前
results根目录下仍保留一组后续图和脚本,包括trend_20260329_165320.png、did_bar_20260329_165320.png、coef_ci_20260329_165320.png、resid_hist_20260329_165320.png、resid_qq_20260329_165320.png、resid_acf_20260329_165320.png、repro_did_template_20260329_165321.py与did_window1_input.csv。这说明 DID 当前真实结构是“首层结果子目录 + results 根目录平铺复现脚本与后续一组图”的混合模式。 - 当前 repro 脚本
具体的算法2/DID-双重差分/results/repro_did_template_20260329_165321.py的真实输入口径是SRC_FILE = 'did_window1_input.csv',即“脚本同目录 CSV 快照复现”。因此这篇文档应明确区分:主工作簿和165248子目录图是主结果证据;根目录平铺脚本与did_window1_input.csv是复现证据。
16. 软件实现核查补充(2026-07)
- 当前实现的主结果目录应写作
具体的算法2/DID-双重差分/results/DID-双重差分分析结果_20260329_165248,正文优先使用165248子目录内的trend_20260329_165248.png、did_bar_20260329_165248.png、coef_ci_20260329_165248.png、resid_hist_20260329_165248.png、resid_qq_20260329_165248.png、resid_acf_20260329_165248.png。 results根目录平铺的165320图组和repro_did_template_20260329_165321.py + did_window1_input.csv仅作复现补充,不要写成主结果。- 文档解释应围绕
模型摘要、回归系数、DID均值、DID汇总、拟合与残差、图表清单展开,把平行趋势、处理效应和残差诊断落回实际导出表中。 - 如果后续要给用户复现实验,应明确写成“主表在时间戳子目录,复现脚本在
results根目录”。