查看原文
其他

2种DID置换检验_安慰剂检验_随机抽样500/1000次(附完整代码免费下载)

数量经济学 数量经济学 2023-10-24

2种双重差分法(DID)安慰剂检验方法:随机抽取500/1000次


方法1:2023年《中国工业经济》最新应用:permute一行代码实现DID模型安慰剂检验


2023年第2期《中国工业经济》上有一篇论文应用到了permute命令,可以实现DID模型安慰剂检验

2023年第2期《中国工业经济》论文《东道国数据保护是否会抑制中国电商跨境并购》

原文图为:

代码如下



方法2:随机抽样500/1000次方法


结果为:



*-------------------------------------------------------------- ----------------  
* 第一步 DID估计
*-------------------------------------------------------------- 
   cd C:\Users\Metrics\Desktop 
   use placebo2.dta,clear 
   reghdfe y did,absorb(id t) vce(cluster id)
   
   *did系数为
*--------------------------------------------------------------
*- 第二步 生成空矩阵以用于存储和作图调用 
*--------------------------------------------------------------


   mat b  = J(500,1,0)    
   mat se = J(500,1,0)    
   mat p  = J(500,1,0)    

*-------------------------------------------------------------- 
*- 第三步 具体的抽样过程,抽样次数可以根据需要调整 中 
*--------------------------------------------------------------

forvalues i=1/500{
 *循环500次 
  use placebo2.dta, clear
  xtset id t                
  keep if t==2014                
  sample 500, count              
  keep id                        
  save match_id.dta, replace        
  merge 1:m id using placebo2.dta   
  
  gene treat = (_merge == 3)        
  gene time =  (t >= 2016)        
  gen did2 = treat*time
  quietly reghdfe y did2 ,absorb(id t) vce(cluster id) 
  

 mat  b[`i',1] = _b[did2]
 mat se[`i'
,1] = _se[did2]

 mat p[`i',1] = 2*ttail(e(df_r), abs(_b[did2]/_se[did2]))
}
*-------------------------------------------------------------- 
*- 第四步 数据准备
*--------------------------------------------------------------
 
 * 矩阵转化为向量
  svmat b, names(coef)
  svmat se, names(se)
  svmat p, names(pvalue)

* 删除空值并添加标签
  drop if pvalue1 == .
  label var pvalue1 p值
  label var coef1 估计系数
  keep coef1 se1 pvalue1 
*-------------------------------------------------------------- 
*- 第五步 作图
*--------------------------------------------------------------
  *set scheme qlean
  twoway  (kdensity coef1) (scatter pvalue1 coef1, msymbol(smcircle_hollow) mcolor(blue) ),  ///
  title("Placebo Test")  ///
  xlabel(-1(0.1)1) ylabel(,angle(0))  ///
  xline(0.79, lwidth(vthin) lp(shortdash))  /// *真实的估计为0.79,即真实数据回归得到的估计系数
  xtitle("Coefficients")      ///
  yline(0.1,lwidth(vthin) lp(dash))  ///
  ytitle(p value) ///
  legend(label(1 "kdensity of estimates") label( 2 "p value")) /// *图例说明
  plotregion(style(none))  ///无边框不需要边框
  graphregion(color(white))    //白色底图


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存