連享會直播課堂:滑一下就找到我們了
效率分析專題(TFP.DEA.SFA)
生存分析專題
DID進行政策分析的重要假設是滿足平行趨勢。在實證分析中,除了要檢驗平行趨勢,一般情況還需要進行安慰劑檢驗。本文主要介紹如何隨機抽取樣本作為處理組來進行安慰劑檢驗。以下是全部代碼,在進行分析前手頭需要有placebo.dta這一數據集,id這一數據集是僅包括個體識別碼和時間的數據,從placebo.dta中截取。本文未能提供原始數據(樣本量太大)。下面對代碼進行逐一解讀。
use id,clear
///調用id數據
sample 1
///隨機選1%個樣本後續用於作為處理組
keep id
///僅保留id這一代碼
save temp,replace
///保存為temp文件,用於後續合併使用
use placebo,clear
///調用本文主要的使用數據
merge m:1 id using temp
///與前文隨機生成的1%的樣本數據集合併
cap drop treat
///如果數據集有treat這一變量,則刪除
gen treat =(_merge==3)
///將前面隨機生成的1%樣本設置為處理組
drop _merge
///刪除多餘變量
save placebo_did,replace
///這一步好像有點多餘
reghdfe aqiind c.treat#c.post htmpt ltmpt , $absorb $cluster
///進行回歸,注意這裡定義了兩個global,前文沒有呈現
parmest,format (estimate min95 max95 %8.2f p %8.3f) saving("temp1.dta", replace)
///將回歸結果係數保存到temp1數據集中
use "temp1.dta", clear
keep if parm=="c.treat#c.post"
///僅保留關心的係數
save "simulations.dta", replace
///將結果保存到simulation數據集中下面部分是對上一個模塊的循環,設置循環200次。循環主要體現在下面的sample這一命令。其餘就是不斷生成估計的係數,然後使用append命令將結果合併在一起。
forvalues i=1(1)200{
use id,clear
sample 1 //隨機選1%個樣本
keep id
save temp,replace
use placebo,clear
merge m:1 id using temp
cap drop trea
gen treat =(_merge==3)
drop _merge
save placebo_did,replace
reghdfe aqiind c.treat#c.post htmpt ltmpt , $absorb $cluster
parmest,format (estimate min95 max95 %8.2f p %8.3f) saving("temp1.dta", replace)
use "temp1.dta", clear
keep if parm=="c.treat#c.post"
append using "simulations.dta"
save "simulations.dta", replace
}這一部分是對處理得到的數據進行繪圖。使用的命令為dpplot,其餘均為繪圖的常規操作,此處不再贅述。
use "simulations.dta",clear
dpplot estimate ,xline(0,lc(black*0.5) ) xline(-14.414,lc(red*0.5) lp(dash) ) ///
xlabel(-15(5)15) xtitle("Treatment Effect",size(*0.8)) ytitle("Density",size(*0.8)) note("") caption("")
graph export "安慰劑檢驗.png", replace最後放上一張圖:
致謝:感謝王奇師兄提供原始代碼並提供講解
連享會直播課堂:滑一下就找到我們了
🍎 掃碼加入連享會微信群,提問交流更方便
點擊此處留言