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

Stata动态DiD回归中esttab对齐不同处理变量系数的方法

Stata动态DiD交互项系数名称统一与esttab同行显示解决方案

问题背景

在检验动态双重差分(DiD)模型中处理区域地理范围的稳健性时,分别针对30km和20km处理区域运行回归:

30km处理区域回归代码

quietly reg infl ib2015.year##treat30km i.year i.examcode i.NSEGbin i.schoolid, cluster(schoolid)
eststo modelDiD8

20km处理区域回归代码

quietly reg infl ib2015.year##treat20km i.year i.examcode i.NSEGbin i.schoolid, cluster(schoolid)
eststo modelDiD7

由于自动生成的交互项系数名称包含treat30km/treat20km后缀(如2010.year#1.treat30km与2010.year#1.treat20km),使用esttab输出时无法将对应年份的交互项系数同行显示,且本地宏无法替换变量名解决该问题。

解决方案

以下三种方法均可实现系数名称统一,让对应交互项在esttab中同行显示:

方法1:在esttab输出时直接重命名系数(最简单)

利用esttab的rename()选项,直接在输出环节将两个模型的交互项名称统一为treat:

esttab modelDiD7 modelDiD8, ///
    rename(*treat20km* *treat*) /// 将20km模型的交互项含treat20km的部分替换为treat
    rename(*treat30km* *treat*) /// 将30km模型的交互项含treat30km的部分替换为treat
    se star(* 0.1 ** 0.05 *** 0.01) /// 按需添加其他输出参数
    title("动态DiD稳健性检验(处理区域范围)")

方法2:回归后为模型添加统一系数标签

通过estadd coeflabels为每个模型的交互项设置相同的标签,esttab会自动将相同标签的系数归为同一行:

// 为30km模型设置系数标签
estimates restore modelDiD8
estadd coeflabels ///
    2010.year#1.treat30km="2010×处理组" ///
    2011.year#1.treat30km="2011×处理组" ///
    2012.year#1.treat30km="2012×处理组" ///
    2013.year#1.treat30km="2013×处理组" ///
    2014.year#1.treat30km="2014×处理组", replace

// 为20km模型设置相同标签
estimates restore modelDiD7
estadd coeflabels ///
    2010.year#1.treat20km="2010×处理组" ///
    2011.year#1.treat20km="2011×处理组" ///
    2012.year#1.treat20km="2012×处理组" ///
    2013.year#1.treat20km="2013×处理组" ///
    2014.year#1.treat20km="2014×处理组", replace

// 输出结果
esttab modelDiD7 modelDiD8, se star(* 0.1 ** 0.05 *** 0.01)

方法3:手动生成统一名称的交互项

提前手动生成年份与处理变量的交互项,并统一命名为year_×××_treat,再代入回归:

// 生成基准年份(2015)外的年份虚拟变量
forvalues y = 2010(1)2014 {
    gen year_`y' = (year == `y')
}

// 生成30km处理组的交互项
forvalues y = 2010(1)2014 {
    gen year_`y'_treat = year_`y' * treat30km
}

// 30km回归
quietly reg infl year_2010_treat year_2011_treat year_2012_treat year_2013_treat year_2014_treat ///
    i.year i.examcode i.NSEGbin i.schoolid, cluster(schoolid)
eststo modelDiD8

// 生成20km处理组的交互项(名称与30km一致)
forvalues y = 2010(1)2014 {
    replace year_`y'_treat = year_`y' * treat20km
}

// 20km回归
quietly reg infl year_2010_treat year_2011_treat year_2012_treat year_2013_treat year_2014_treat ///
    i.year i.examcode i.NSEGbin i.schoolid, cluster(schoolid)
eststo modelDiD7

// 直接输出即可同行显示
esttab modelDiD7 modelDiD8, se star(* 0.1 ** 0.05 *** 0.01)

内容的提问来源于stack exchange,提问作者Nuno Can

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:50:04