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
相关产品推荐
相关产品推荐

