其他
Stata前沿---基于Lasso的合成控制法
Stata---基于Lasso的合成控制法
推荐阅读:基于Lasso(scul)的合成控制法(一)
1、简介
scul由Hollingsworth和Wing(2021)在Abadie(2003,2010,2021)描述的框架中改编自R代码,用于比较案例研究。它使用LASSO通过捐赠池的结果来了解治疗单元的干预前结果,然后投影反事实。
2、前提条件
运行scul需要满足如下条件
需要一个xtset面板数据集才能使用它。 此外,还需要安装如下包。需要使用tabstatmat (ssc inst tabstatmat, replace)、distinct (ssc inst distinct, replace)、greshape (ssc inst gtools, replace)、fplot} (ssc inst coefplot, replace)和cvlasso命令来使用scul。
3、下载安装
scul命令需要下载scul.ado和 scul.sthlp两个配套文件,可以输入如下命令进行下载和安装
net install scul
另外该命令配套的有如下数据,
scul_Taxes.dta
scul_Stadium.dta
scul_Reunification.dta
scul_p99_region.dta
scul_invasion.dta
scul_bp.dta
scul_basque.dta
../p/placebos_scul.dta
../g/GasHoliday.dta
scultest.do
可以输入如下命令下载配套数据
net get scul
该命令语法格式为:
scul depvar, treated(variable) [ahead(number)] [placebos] [plat] [times(numlist)] [lambda(string)] [covs(varlist)] [cv(string)] [scheme(string)] [rellab(numlist)]
[obscol(string)] [cfcol(string)] [conf(string)] [legpos(integer)] [transform(string)] [q(real)] [donoradj(string)] [before(integer)] [after(integer)]
注意事项:
默认情况下,该命令生成真实的与合成的图,以及差距图。
选项含义为:
depvar指定结果。此变量可能没有遗漏的观察值。 treatment指定处理变量。该变量可能没有缺失值,必须为0或1,并且在处理启动后必须始终为1。如果多于一个单元被处理,那么scul采用交错采用。 ahead指定用户希望在训练数据集中预测的提前周期数。有关此过程的详细信息,请参阅cvlasso的选项。 λ是可选的。根据Hastie等人(2019)第二章的讨论,用户可以指定lopt(最优lambda)或lse(标准错误规则)。 placebos是可选的。迭代地,使用用户指定的原始模型,将处理重新分配到整个供体单元池。这产生了一个这些估计的图表,以及95%的安慰剂置信区间。 x是可选的。用这些协变量来估计反事实。
案例应用
首先导入数据,对相关数据进行查看
. ed
. desc
Contains data from scul_p99_region.dta
Observations: 279
Variables: 4 23 Jul 2022 09:07
-----------------------------------------------------------------------------------------------------------------------------
Variable Storage Display Value
name type format label Variable label
-----------------------------------------------------------------------------------------------------------------------------
region byte %18.0g region
year int %ty Year
cigsale float %9.0g (mean) Data_Value
treat float %9.0g
-----------------------------------------------------------------------------------------------------------------------------
Sorted by: region year
Note: Dataset has changed since last saved.
注意:需要将传统的加州禁烟数据转换为如下格式数据:
region表示地区,其中加州为California,在该数据中表示为3,year 表示年份,cigsale 表示香烟消费量, treat表示是否实行禁烟政策,只有加州在1989年及以后为1,其他全部为0
des2
File: scul_p99_region.dta
Date: 23 Jul 2022 09:07
obs: 279
vars: 4
variable name type format value label variable label
-----------------------------------------------------------------------------------------------------------------------------
region byte %18.0g region
year int %ty Year
cigsale float %9.0g (mean) Data_Value
treat float %9.0g
. tabulate region
region | Freq. Percent Cum.
-------------------+-----------------------------------
East South Central | 31 11.11 11.11
West South Central | 31 11.11 22.22
California | 31 11.11 33.33
Mountain | 31 11.11 44.44
New England | 31 11.11 55.56
South Atlantic | 31 11.11 66.67
East North Central | 31 11.11 77.78
West North Central | 31 11.11 88.89
Middle Atlantic | 31 11.11 100.00
-------------------+-----------------------------------
Total | 279 100.00
label list region
region:
1 East South Central
2 West South Central
3 California
4 Mountain
5 New England
6 South Atlantic
7 East North Central
8 West North Central
9 Middle Atlantic
下面进行Lasso合成控制法
cd C:\Users\Metrics\Desktop\scurldata
loc int_time = 1989
u "scul_p99_region", clear
qui xtset
local lbl: value label `r(panelvar)'
loc unit ="California":`lbl'
qui xtset
g treat = cond(`r(panelvar)'==`unit' & `r(timevar)' >= `int_time',1,0)
cls
scul cigsale, ///
ahead(1) ///
treated(treat) ///
obscol(black) ///
cfcol(blue) ///
legpos(7) cv(adaptive)
结果为:
产生的结果图为: