合成控制法进展:机器学习中随机森林+SCM!分位数控制法-qcm
分位数控制法及Stata应用
qcm
是一个用于在 Stata 中实现分位数控制方法(Quantile Control Method,QCM)的命令。该方法通过随机森林构建置信区间,以评估单个处理单元在面板数据中的处理效应。QCM 对异方差、自相关和模型设定错误具有鲁棒性,并能轻松处理高维数据。
输入ssc new
,可以看到最近分位数控制法命令qcm
已经可以通过ssc
下载,下面介绍一下该命令。
1、简介
qcm通过随机森林实现了分位数控制方法(Quantile Control Method, QCM)(Chen, Xiao和Yao, 2024),它使用分位数随机森林(Quantile Random Forest, QRF;Meinshausen)构建了单个处理单元的面板数据中处理效果的置信区间。作为一种非参数集成机器学习方法,QRF对异方差性、自相关和模型设定错误具有鲁棒性,并且能够轻松处理高维数据。
Chen, Xiao和Yao (2024)的模拟表明,QCM置信区间在有限样本中表现优异。特别是,对于95%的名义置信水平,如果处理前周期数大于或等于20,控制单元数大于或等于10,QCM置信区间的经验覆盖率可以达到90%以上或接近90%。此外,可以使用额外的协变量来帮助预测处理单元的反事实结果。
请注意,qcm完全用Stata和Mata代码编写,没有引用任何外部环境,如Python或Java。此外,qcm需要安装moremata,该程序可从SSC获取。
数据预处理:QCM的一个关键假设是数据(包括结果变量和其他可用的协变量)是平稳的。对于非平稳数据,在应用QCM之前强烈建议将其转换为平稳数据。
语法:
qcm depvar [indepvars], trunit(#) trperiod(#) [options]
depvar
:因变量。indepvars
:自变量,可选。trunit(#)
:指定处理单元的标识符(即接受处理或干预的单元)。trperiod(#)
:指定处理或干预开始的时间点。[options]
:其他可选参数,用于模型设置、优化和报告等。
选项:
模型相关:
counit(numlist)
:指定作为对照组的控制单元列表。preperiod(numlist)
:指定干预前的时间段。postperiod(numlist)
:指定干预后的时间段。优化相关:
ntrees(int)
:设置随机森林中树的数量,默认为 500。mtry(int)
:每个节点随机选择的候选分裂变量数,默认为预测变量数的三分之一。maxdepth(int)
:树的最大深度,默认不限。minlsize(int)
:每个终端节点所需的最小观测数,默认为 5。minssize(int)
:分裂内部节点所需的最小观测数,默认为 10。fill(fil_method)
:填充缺失值的方法,可选mean
(均值)或linear
(线性插值)。报告相关:
cilevel(#_c)
:设置置信水平,默认为 95%。cistyle([1|2|3])
:设置置信区间的显示样式,默认为样式 1。qtype(qdef)
:指定分位数定义,默认为 10。frame(framename)
:创建一个 Stata 框架,存储生成的宽格式变量。show(#_s)
:在条形图中显示的最大条数,按降序排列。noimportance
:不显示变量重要性。nofigure
:不显示图形。savegraph([prefix], [asis replace])
:将生成的图形保存到当前路径。
注意事项:
在使用
qcm
之前,必须使用xtset
命令声明一个(严格平衡的)面板数据集。depvar
和indepvars
必须是数值型变量,不允许使用缩写。QCM 假设数据是平稳的。对于非平稳数据,建议在应用 QCM 之前对其进行平稳化处理,例如对存在单位根的差分平稳数据进行差分处理,或对具有指数趋势的 GDP 数据计算其增长率。
3、Stata案例
示例 1(无协变量)
使用示例数据集growth.dta进行演示
命令qcm的基本句型
display tq(2004q1)
qcm gdp, trunit(9) trperiod(176) importance
其中:
必选项trunit()指定处理单位 (treated unit) trperiod()指定处理期 (treatment period,必须为整数) 选择项 importance计算变量重要性
. use growth, clear
. xtset region time
* 显示香港的单元编号和处理时期
. label list
. di tq(2004q1)
* 实施分位数控制方法
. set seed 1
. qcm gdp, trunit(9) trperiod(176)
* 使用不同的置信区间样式
. set seed 1
. qui qcm gdp, trunit(9) trperiod(176) cistyle(2)
* 使用另一种置信区间样式,保存生成的图形并存储结果
. set seed 1
. qui qcm gdp, trunit(9) trperiod(176) cistyle(3) savegraph(growth, replace) frame(growth)
* 切换到 "growth" 框架,描述数据
. frame change growth
. describe
* 切换回默认框架
. frame change default
复刻结果为:
结果为:
. xtset region time
panel variable: region (strongly balanced)
time variable: time, 1993q1 to 2008q1
delta: 1 quarter
.
end of do-file
. do "C:\Users\Metrics\AppData\Local\Temp\STD20b54_000000.tmp"
. . label list
region:
1 Australia
2 Austria
3 Canada
4 China
5 Denmark
6 Finland
7 France
8 Germany
9 HongKong
10 Indonesia
11 Italy
12 Japan
13 Korea
14 Malaysia
15 Mexico
16 Netherlands
17 NewZealand
18 Norway
19 Philippines
20 Singapore
21 Switzerland
22 Taiwan
23 Thailand
24 UnitedKingdom
25 UnitedStates
. . di tq(2004q1)
176
.
end of do-file
. do "C:\Users\Metrics\AppData\Local\Temp\STD20b54_000000.tmp"
. . set seed 1
. . qcm gdp, trunit(9) trperiod(176)
Parameters of random forest:
------------------------------------------------------------------------------
> -
Number of trees to grow = 500
Maximum depth of the trees = .
Minimum number of obs required at each terminal node = 5
Minimum number of obs required to split an internal node = 10
Number of candidate splitting variables randomly selected at each node = 8
------------------------------------------------------------------------------
> -
Fitting results in the pretreatment periods:
-----------------------------------------------------------------------------
Treated Unit : HongKong Treatment Time = 2004q1
-----------------------------------------------------------------------------
Number of Observations = 44 Root Mean Squared Error = 0.00998
Number of Predictors = 24 R-squared = 0.94022
-----------------------------------------------------------------------------
Variable Importance:
----------------------------
Unit | Importance
---------------+------------
Malaysia | 0.2106
Singapore | 0.1438
Korea | 0.1247
Norway | 0.0925
Thailand | 0.0704
Mexico | 0.0434
Indonesia | 0.0412
UnitedStates | 0.0356
Canada | 0.0311
China | 0.0275
Japan | 0.0248
Finland | 0.0248
Austria | 0.0220
Philippines | 0.0209
Taiwan | 0.0203
France | 0.0191
Switzerland | 0.0166
Netherlands | 0.0100
Italy | 0.0090
Germany | 0.0055
NewZealand | 0.0026
Australia | 0.0015
UnitedKingdom | 0.0012
Denmark | 0.0007
---------------+------------
Total | 1.0000
----------------------------
Prediction results in the posttreatment periods:
-------------------------------------------------------------------------
Time | Actual Outcome Predicted Outcome [95% Confidence Interval]
>
--------+----------------------------------------------------------------
2004q1 | 0.0770 0.0545 -0.0193 0.1033
2004q2 | 0.1200 0.0621 -0.0161 0.1041
2004q3 | 0.0660 0.0509 -0.0192 0.1023
2004q4 | 0.0790 0.0567 -0.0208 0.1040
2005q1 | 0.0620 0.0328 -0.0728 0.0988
2005q2 | 0.0710 0.0260 -0.0734 0.0991
2005q3 | 0.0810 0.0346 -0.0731 0.1030
2005q4 | 0.0690 0.0637 -0.0195 0.1049
2006q1 | 0.0900 0.0709 -0.0169 0.1053
2006q2 | 0.0620 0.0651 -0.0205 0.1051
2006q3 | 0.0640 0.0491 -0.0227 0.1031
2006q4 | 0.0660 0.0338 -0.0731 0.1025
2007q1 | 0.0550 0.0229 -0.0690 0.0995
2007q2 | 0.0620 0.0561 -0.0213 0.1038
2007q3 | 0.0680 0.0531 -0.0222 0.1035
2007q4 | 0.0690 0.0503 -0.0223 0.1028
2008q1 | 0.0730 0.0507 -0.0223 0.1030
-------------------------------------------------------------------------
Estimation results in the posttreatment periods:
--------------------------------------------------------
Time | Treatment Effect [95% Confidence Interval]
--------+-----------------------------------------------
2004q1 | 0.0225 -0.0263 0.0963
2004q2 | 0.0579 0.0159 0.1361
2004q3 | 0.0151 -0.0363 0.0852
2004q4 | 0.0223 -0.0250 0.0998
2005q1 | 0.0292 -0.0368 0.1348
2005q2 | 0.0450 -0.0281 0.1444
2005q3 | 0.0464 -0.0220 0.1541
2005q4 | 0.0053 -0.0359 0.0885
2006q1 | 0.0191 -0.0153 0.1069
2006q2 | -0.0031 -0.0431 0.0825
2006q3 | 0.0149 -0.0391 0.0867
2006q4 | 0.0322 -0.0365 0.1391
2007q1 | 0.0321 -0.0445 0.1240
2007q2 | 0.0059 -0.0418 0.0833
2007q3 | 0.0149 -0.0355 0.0902
2007q4 | 0.0187 -0.0338 0.0913
2008q1 | 0.0223 -0.0300 0.0953
--------+-----------------------------------------------
Mean | 0.0236 -0.0302 0.1081
--------------------------------------------------------
Note: The average treatment effect over the posttreatment periods is 0.0236.
Finished.
.
案例2:Examples 2 (with covariates): effect of carbon taxes in Sweden on CO2 emissions (Andersson, 2019)
. use carbontaxgr, clear
. xtset country year
* 显示瑞典的单元编号
. label list
* 实施分位数控制方法,仅在条形图中显示最多 20 个条
. set seed 1
. qcm CO2 GDP gas vehicles urban pop, trunit(13) trperiod(1990) show(20)
复刻结果为: