温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh
作者: 曹昊煜 (兰州大学)
E-Mail: caohy19@lzu.edu.cn
目录
编者按: 本文部分内容翻译自 Fuzzy Differences-in-Differences with Stata,特此致谢!
双重差分 (
但在有些情况下,可能不存在非常明确的分组方式,即没有“干净”的处理组和控制组,所有个体都或多或少受到了政策的影响。此时
表示受到和不受到处理 (
为简单起见先考虑
在开始介绍方法之前,首先设定
模糊双重差分的识别首先依赖三个主要的假设:
假设 1:模糊设定假设
该假设表明处理组在 0 和 1 期的期望变动为正且高于控制组。
假设 2:控制组中的个体稳定性
该假定说明控制组前后被处理的概率相同,并且严格落在 0~1 之间。这实际是对对照组设定的一种要求,如果对照组不能满足这一点就不应该作为对照组。
假设 3:处理参与方程
假设 3 意味着给定组别时,每个组的任意一期的处理效应与时间无关。
基于以上三个假定,可以定义子群 $S={D(0)
局部平均效应的估计量有三种,分别是:
三种统计量都可以看成是
本小节介绍如何使用 fuzzydid
命令估计 Eq.(1) 的结果,在使用该命令之前,请首先运行如下命令,以便安装程序包,并下载作者提供的范例数据和 dofiles:
. ssc install fuzzydid, replace // 安装命令包
. net get fuzzydid.pkg // 下载作者提供的 dofile 和数据到当前工作路径下
亦可执行如下命令,并在弹出窗口中点击「****」来手动安装和下载:
. net describe fuzzydid, from(http://fmwww.bc.edu/RePEc/bocode/f)
作者提供的附件资料如下,其中,turnout_dailies_1868-1928.dta 会在后续分析中使用。
ANCILLARY FILES
fuzzydid_Gentzkowappli.do
../s/simus.do
../t/turnout_dailies_1868-1928.dta
fuzzydid
的基本语法如下:
fuzzydid Y G T D [if] [in] ///
[, did tc cic lqte newcateg(numlist) ///
numerator partial nose cluster(varname) ///
breps(#) eqtest continuous(varlist) ///
qualitative(varlist) ///
sieves sieveorder(#) tagobs]
下面我们具体解释命令各项符号的含义:
必要的选项:
Y
是结果变量G
是分组变量,当数据为两期两组时,G
仅仅需要设定为虚拟变量形式,但在其他情形下,G
至少应包含虚拟变量及其前推一期T
是时间变量D
是处理变量可选择的主要选项:
did
计算 tc
计算 cic
计算 lqte
选项分别计算 {5%, 10%,..., 95%} 分位数的处理效应 numerator
附加该选项则只计算 partial
计算估计量的边界nose
只计算统计量,而不计算标准误cluster(varname)
使用 Bootstrap 方法在设定的层级上获得聚类稳健标准误breps(#)
设定 Bootstrap 的自抽样次数,默认为 50eqtest
当同时设定了两个或以上的 did
、tc
或 cic
选项时,附加 eqtest
用于比较估计量之间的差异tagobs
生成一个新变量标记使用的样本附加协变量的选项:
continuous(varlist)
和 qualitative(varlist)
分别用于指定加入方程的连续型协变量和离散型协变量sieves
表示在包含有协变量的情况下使用非参数方法估计 sieveorder(#)
设定误差的阶数,其中的 #
必须大于或等于 2本文的示例部分的数据来自 Gentzkow et al. (2011) ,该文章使用美国 1868~1928 年间的县级面板数据讨论了报纸对参与选举的影响。数据文件中的变量 pres_turnout
和 numdailies
分别表示历次大选的参与情况和报纸数量。
* net get fuzzydid.pkg // 下载作者提供的 dofile 和数据到当前工作路径下
use "turnout_dailies_1868-1928.dta", clear // 调入范例数据
sum pres_turnout numdailies
首先从系统中调入范例数据,并对关键变量进行表述性分析,可见样本区间内各县参与选举的平均比例为 65.01% ,报纸数量的均值为 1.46 。
Variable | Obs Mean Std. Dev. Min Max
-------------+------------------------------------------------
pres_turnout | 16,872 .65014 .2210102 .0017981 2.518
numdailies | 16,872 1.463134 2.210448 0 45
接下来使用前两期数据(1868 和 1872)演示该情形下,
. keep if year == 1868 | year == 1872
// 确定分组变量
. gen G1872=(fd_numdailies>0) ///
if (year==1872) & (fd_numdailies!=.) ///
& (fd_numdailies>=0&sample==1)
. sort cnty90 year
. replace G1872=G1872[_n+1] if cnty90==cnty90[_n+1]&year==1868
. fuzzydid pres_turnout G1872 year numdailies, ///
did tc cic newcateg(0 1 2 45) breps(200) ///
cluster(cnty90) // 此时的处理变量是一个连续变量
Bootstrap replications (200)
----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5
.................................................. 50
.................................................. 100
.................................................. 150
.................................................. 200
Estimator(s) of the local average treatment effect with
bootstrapped standard errors.
Cluster variable: cnty90.
Number of observations: 1424 .
| LATE Std_Err t p_value lower_ic upper_ic
-------+-----------------------------------------------------------------
W_DID | .0047699 .0160903 .2964428 .766892 -.0230387 .0377381
W_TC | .0266618 .0164816 1.617671 .1057335 -.0021458 .0586236
W_CIC | .0133223 .0132744 1.003613 .3155653 -.0116416 .0348834
结果的每一列分别表示局部平均处理效应的估计结果、稳健标准误、t 值及其对应 p 值和置信区间。三类点估计结果都为正,但并并不显著,其原因可能在于两期数据样本量较小。
接下来估计局部分位数处理效应,仍然使用 1868 和 1872 年的数据。此时的 fuzzydid 仅支持离散的处理变量,因此使用 numdailies_bin
变量代替 numdailies
。
. gen numdailies_bin = (numdailies>0)
. fuzzydid pres_turnout G1872 year numdailies_bin, ///
lqte breps(200) cluster(cnty90)
. fuzzydid pres_turnout G1872 year numdailies_bin, ///
lqte breps(200) cluster(cnty90)
Bootstrap replications (200)
----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5
.................................................. 50
.................................................. 100
.................................................. 150
.................................................. 200
Estimators of local quantile treatment effects with bootstrapped standard errors.
Cluster variable: cnty90. Number of observations: 1424 .
| LQTE Std_Err t p_value lower_ic upper_ic
------+------------------------------------------------------------------
q_5 | .154 .1500589 1.026264 .3047672 -.038 .4982885
q_10 | .072 .0901928 .7982899 .4247023 -.079 .245
q_15 | -.007 .0771367 -.0907476 .9276931 -.0835 .1925
q_20 | .005 .0633607 .0789131 .9371017 -.0825 .1655
q_25 | -.0040001 .0566226 -.0706444 .9436808 -.1055 .126
q_30 | -.034 .0591615 -.5746983 .5654953 -.1225 .121
q_35 | -.0270001 .0551444 -.4896252 .6243992 -.12 .0865
q_40 | -.052 .049529 -1.049891 .2937684 -.1244999 .0675
q_45 | -.0529999 .0438851 -1.207697 .227164 -.114 .057
q_50 | -.0330001 .0431931 -.7640123 .4448599 -.113 .0575
q_55 | -.0270001 .0442831 -.6097145 .542051 -.1034999 .074
q_60 | .011 .0481622 .2283946 .8193395 -.0995 .08
q_65 | .02 .0474835 .4212 .6736091 -.0994999 .0855
q_70 | .0249999 .0465543 .5370058 .5912636 -.0900001 .0885
q_75 | .024 .0421916 .5688336 .5694691 -.0885 .0895
q_80 | .02 .0354423 .5642961 .5725526 -.087 .077
q_85 | .0210001 .0340442 .6168486 .5373346 -.067 .072
q_90 | .037 .0297976 1.241709 .214344 -.051 .068
q_95 | .025 .0275591 .9071403 .3643326 -.041 .067
该结果计算了各分位数
进一步,使用全样本计算 G_T
为 1,报纸数量不变或下降时定义为 G_T
为 G_Tplus1
表示 G_T
的前推一期。此外,命令中附加了 eqtest
选项,以比较结果间是否存在显著差异。
. use "turnout_dailies_1868-1928.dta", clear
. sort cnty90 year
. by cnty90 year: egen mean_D = mean(numdailies)
. by cnty90: gen lag_mean_D = mean_D[_n-1] ///
if (cnty90==cnty90[_n-1]) & (year-4==year[_n-1])
. gen G_T = sign(mean_D - lag_mean_D) if sample==1
. gen G_Tplus1 = G_T[_n+1] if cnty90==cnty90[_n+1]&year+4==year[_n+1]
. fuzzydid pres_turnout G_T G_Tplus1 year numdailies, did tc cic ///
newcateg(0 1 2 45) breps(200) cluster(cnty90) eqtest
Bootstrap replications (50)
----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5
.................................................. 50
Estimator(s) of the local average treatment effect with bootstrapped standard errors. Cluster variable: cnty90. Number of
observations: 16872 .
| LATE Std_Err t p_value lower_ic upper_ic
-------------+------------------------------------------------------------------
W_DID | .0037507 .0011952 3.138276 .0016995 .0012794 .0056295
W_TC | .0053305 .001263 4.220367 .0000244 .0026724 .0070759
W_CIC | .004215 .0015391 2.738691 .0061684 .0010033 .0071204
Estimators equality test
| Delta Std_Err t p_value lower_ic upper_ic
-------------+------------------------------------------------------------------
DID_TC | -.0015798 .0003489 -4.527442 5.97e-06 -.0023057 -.000944
DID_CIC | -.0004643 .0007062 -.6574857 .5108687 -.0018933 .0003862
TC_CIC | .0011155 .0006045 1.845166 .0650133 -.0002279 .0019818
最后,可以在模型中加入州层面的个体效应作为协变量,做法仍然是使用各州的虚拟变量,结果如下:
. fuzzydid pres_turnout G_T G_Tplus1 year numdailies, ///
did tc newcateg(0 1 2 45) ///
qualitative(st1-st48) breps(50) cluster(cnty90) eqtest
*-Note: 该命令不能计算Wald-CIC估计量,为节省运行时间,自抽样次数仅仅设定为50次
Bootstrap replications (50)
----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5
.................................................. 50
No method was specified to estimate E(Y|X), E(D|X) and P(D=d|X). Method set to default: ols.
Estimator(s) of the local average treatment effect with bootstrapped standard errors. Cluster variable: cnty90. Number of
observations: 16872 . Controls included in the estimation: st1 st2 st3 st4 st5 st6 st7 st8 st9 st10 st11 st12 st13 st14 st15 st16
st17 st18 st19 st20 st21 st22 st23 st24 st25 st26 st27 st28 st29 st30 st31 st32 st33 st34 st35 st36 st37 st38 st39 st40 st41 st42
st43 st44 st45 st46 st47 st48 .
| LATE Std_Err t p_value lower_ic upper_ic
-------------+------------------------------------------------------------------
W_DID | .0026383 .0009817 2.687479 .0071994 .0006856 .0043835
W_TC | .0043428 .0011789 3.683668 .0002299 .0015496 .0060633
Estimators equality test
| Delta Std_Err t p_value lower_ic upper_ic
-------------+------------------------------------------------------------------
DID_TC | -.0017046 .0007947 -2.144923 .031959 -.0030505 -.0002611
控制州层面的虚拟变量后,
最后,让我们来总结一下 $Fuzzy DID** 方法:
Note:产生如下推文列表的命令为:
lianxh DID 倍分法 差分
安装最新版lianxh
命令:
ssc install lianxh, replace
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟,课程主页 Stata 33 讲 - 连玉君, 每讲 15 分钟. Stata 小白的取经之路 - 龙志能,时长:2 小时,课程主页 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 因果推断, 空间计量,寒暑假班等 | |
⭕ 数据清洗系列 | 游万海 | 直播, 88 元,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh