Angela鎮(zhèn)樓,盡管是奔著CAROLE & TUESDAY去的,誰能想到被Angela圈了粉~ Angela的ED《not afraid》很好聽。 Angela和Tao,意難平。 ![]() 由于最近過于沉迷楠神的《政策信息學》, so 鴿了好久欸(理直氣壯.JPG) 我們來完整操作一遍吧。 PSM-DID,本質(zhì)就是先利用PSM的手段進行分組,再利用DID計算政策效應。 outline一、變量介紹及基礎準備 二、計算p-score
三、匹配前后的平衡情況
四、雙重差分 ![]() 一、變量介紹及基礎準備因變量:政策實施可能帶來的影響Y。 實驗處理效應:是否實施某項政策(要求treatment effect嚴格外生,不存在內(nèi)生性問題)。 匹配變量(協(xié)變量):使用盡可能多的協(xié)變量可以最大程度的滿足“可忽略假設” 這里面可以認為實驗處理效應D是一個格外關注的自變量,協(xié)變量Xi是控制變量。因此,對于Y和D的選擇要直接相關,譬如說處理效應是“職業(yè)培訓”,那么Y應該是工資;處理效應是“河長制”的建立,那么Y應該是河流治理水平;處理效應是“新藥”,那么Y應該是壽命或者其他健康指標。 同樣重要的是協(xié)變量的選取,有兩大準則,首先當然和treatment effects垂直獨立,其次是要在已有文獻中研究能夠對Y有影響的變量,譬如說
此外,協(xié)變量的選取也應該符合一般線性回歸,不存在多重共線性,不存在內(nèi)生性等問題。 第一步 安裝程序 安裝psmatch2,pscore diff 等程序 * Download and install Stata ado files for psmatch2、diff 【ssc install psmatch2, replace 第二步 變量定義 對自變量、因變量、treatment variable進行定義,如 * Define treatment, outcome, and independent variables global treatment treatment 這里面【breps】表示bootstrap抽樣次數(shù),一般200應該差不多。 ![]() *Define panel data variable encode city , gen(city2) ![]() 二、計算p-score之前的時候,小白上傳的Ani Katchova老師的視頻 里面的【pscore】程序,可以直接計算pscore
第一種 pscore程序* Propensity score matching with common support 這個程序會比陳強老師書里面提到的psmatch2可以輸出更為詳細的匹配得分計算細節(jié) 第一張表告知實驗組和控制組的頻次等基本情況 ![]() 第二張表顯示傾向得分計算情況,不過看樣子默認是用probit reg,我們待會用logit計算看看 ![]() 緊接著的note告訴我們common support的范圍。 ![]() common support中的p-score的描述情況,包括百分位數(shù),樣本數(shù),均值,峰度等等 ![]() 這個還有一個顯著的優(yōu)勢就是“分區(qū)塊”,保證區(qū)塊內(nèi)的實驗組和對照組的pscore不存在統(tǒng)計學差異 ![]() 緊接著的就是平衡性檢驗,如果平衡性檢驗通過了,就是黑色的字體告訴你“satisfied”,如果不滿足就會是紅色的warning字體,告訴你“unsatisfied” ![]() 如果遇到unsatisfied的情況,會告訴你是因為你選擇的那個協(xié)變量導致common support過低,平衡性檢驗不通過,這時候我的建議是刪除這個協(xié)變量。 回到data視圖,可以看見新增了三個變量 ![]() 第二步 進行匹配 ①匹配方法選擇 在實際進行匹配中,究竟應使用哪種具體方法或參數(shù)(比如k臨近匹配的k取值,是否放回,如何處理并列),目前文獻中尚未明確指明。一般認為,根據(jù)具體數(shù)據(jù)來選擇具體方法。比如控制組個體不多,則應該進行有放回的匹配,如果存在較多具有可比性的控制組個體,則考慮一對多或核匹配,以提高匹配效率。在實踐中,一般建議嘗試不同的匹配方法,然后比較其結果(類似于敏感性分析);如果不同方法的結果相似,說明結果是穩(wěn)健的,不依賴于具體方法,如果差異較大,則需要考察具體出現(xiàn)的原因。 我們看其他學者的做法,也是直接匯報采用了哪一種匹配方法
所以說,大家都沒有說明為什么選這個方法。。。。 所以比較tricky的做法就是,把所有匹配方法都做一下,哪個效果最好匯報哪一個咯~ ![]() 程序見下 * Nearest neighbor matching ![]() * Radius matching ![]() * Kernel Matching kernel matching運行起來好慢好慢好慢好慢好慢啊 * Stratification Matching ![]() 第二種 psmatch2程序psmatch2可以直接選擇匹配的方法。程序的介紹詳見陳強老師P545頁。 需要注意的是,
采用不同的匹配方法 * Matching methods * K neighbor matching K臨近匹配 psmatch2 treatment $xlist, neighbor(1) logit out(score) ![]() 會輸出很多新的變量 ![]() 如果我們選擇【psmatch2 treatment $xlist, neighbor(1) logit ate common out(score)】 會多輸出ATU ATE以及_score -n1等值 ![]() ![]() * Radius matching psmatch2 treatment $xlist, radius logit * Kernel Matching psmatch2 treatment $xlist, kernel logit 欸,用psmatch2的kernel匹配比pscore程序快很多欸 ![]() 第三種 nnmatch程序一些學者還喜歡借鑒Abadie et al.(2004)的研究,采用“k 近鄰匹配”(k=4)方法;匹配時不允許并列,當存在傾向得分相同的并列個體, 按照數(shù)據(jù)排序選擇;并選擇作為匹配的特征變量。 記得安裝一下nnmatch ![]() *Abadie et al.(2004)的程序 nnmatch score treatment $xlist, tc(att) m(4) bias(bias) 這個程序運行起來會比較慢。bias可以不用。 ![]() 小白自己的結果見下。 ![]() 三、匹配前后的平衡情況在進行PSM-DID 估計前,還需進行模型有效性檢驗。其中首先需要檢驗匹配后各變量實驗組和控制組是否變得平衡, 也就是說實驗組和控制組協(xié)變量的均值在匹配后是否具有顯著差異。如果不存在顯著差異,則支持使用PSM-DID 方法。 H0:實驗組與控制組協(xié)變量之間無顯著差異。 第一種 psmatch2后估計剛才的psmatch2還有一個優(yōu)點就是,自帶兩個“估計后命令”(post-estimation commands),分別用來檢驗匹配后數(shù)據(jù)是否平衡,以及畫圖顯示傾向得分的共同取值范圍。 輸入 【pstest $xlist, both graph】 會輸出兩張表,第一張介紹匹配前后不同維度的協(xié)變量的t檢驗。結果非常理想。 Ideally, after the matching procedure, the absolute standardized difference of covariate means should be less than 5%, and the t-statistic should no longer be significant (D’Agostino 1998; Haviland, Nagin, and Rosenbaum 2007). 可以看見,match以后,所有的協(xié)變量T檢驗都不顯著了。 ![]() ![]() 其次就是輸出匹配前后的對比圖 ![]() 重點看匹配以后的值是否接近0,一般只要小于10%就可以接受。 ![]() 另外一個post-estimation command 是直方圖 輸入【psgraph, bin(20)】 這個圖有點奇怪,沒有區(qū)分on support和off support。沒有查到原因, ![]() 要不然正常情況下輸出應該是這樣的 ![]() 第二種 繪制匹配前的密度函數(shù)圖第一步,繪制匹配前的密度函數(shù)圖 *-(a)before matching: 匹配前的密度函數(shù)圖 twoway (kdensity _ps if treatment==1,lp(solid) lw(*2.5)) /// (kdensity _ps if treatment==0,lp(dash) lw(*2.5)), /// ytitle("核密度") /// ylabel(,angle(0)) /// xtitle("傾向得分值") /// xscale(titlegap(2)) /// xlabel(0(0.2)0.8, format(%2.1f)) /// legend(label(1 "實驗組") label(2 "控制組") row(2) /// position(12) ring(0)) /// scheme(s1mono) graph export "01.wmf", replace fontface("Times New Roman") 效果圖見下: ![]() 第二步,繪制匹配后的傾向得分圖 采用psmatch2計算匹配后的p-score psmatch2 t $xlist, neighbor(1) logit out(score) *-(b)after matching: 匹配后的密度函數(shù)圖 twoway (kdensity _ps if treatment==1,lp(solid) lw(*2.5)) /// (kdensity _ps if treatment==0&_wei!=.,lp(dash) lw(*2.5)), /// ytitle("核密度") ylabel(,angle(0)) /// xtitle("傾向得分值") xscale(titlegap(2)) /// xlabel(0(0.2)0.8, format(%2.1f)) /// legend(label(1 "實驗組") label(2 "控制組") row(2) /// position(12) ring(0)) /// scheme(s1mono) graph export "02.wmf", replace fontface("Times New Roman") 效果圖見下: ![]() 在匹配后實驗組和控制組傾向得分值的概率密度已經(jīng)比較接近,說明匹配效果較好。因此,在共同支撐假設基礎上進一步證明了PSM-DID方法的可行性和合理性。 第三種 diff里面的test support*檢驗匹配后各變量實驗組和控制組是否變得平衡 diff score,t($treatment) p(t_2012) kernel id(city2) logit cov($xlist) test support 判斷匹配過程的有效性主要可以從匹配前后的t 統(tǒng)計量的變化、匹配前后標準偏差的變化兩個方面來看:①從t 統(tǒng)計量的變化中可以發(fā)現(xiàn),特征變量在匹配之后均不再具有顯著差異【紅色方框顯示】。從各協(xié)變量的檢驗結果看,匹配后所有變量均不存在顯著性差異,而結果變量score存在十分顯著的差異,從而證明使用PSM-DID 方法是合理的。 ![]() ②匹配后標準偏差的絕對值越小,說明匹配的效果越好;Rosenbaum and Rubin(1985)認為若匹配后標準偏差的絕對值能夠小于20%,則匹配處理是有效的。根據(jù)匹配過程中處理組與對照組的平衡性檢驗結果,差不多20%,還差一點點理想。 【diff score,t($treatment) p(t_2012) kernel id(city2) logit cov($xlist) report support】 ![]() 上面這個表格還可以進一步整理成為類似下面的表格 ![]() 四、雙重差分一、沒有匹配的普通差分
倍差法(Difference-in-Differences)不要求假設實驗組和控制組樣本在實驗前同質(zhì),它是在假設實驗組和控制組前后變化趨勢相同的情況下,通過兩次差分來計算實驗處理效應對實驗組的平均處理效應ATT(Blundell R. and Dias M. C.,2002)。但是采用倍差法的假設是遵循“共同趨勢”假設,否則參數(shù)估計結果會有偏差(Heckman et al.,1998)。 盡管剛才我們提到了【diff】,但我們還是follow Jiahuan Lu(2015)等學者的做法,手工計算。
寫出DID的回歸方程 Y= β0+β1Treatment + β2Policy+ β3Treatment *Policy+εit 其中policy表示政策效果,為政策效果虛擬變量,實施某政策前為0,實施后為1。 匯報表格也和Jiahuan Lu(2015)一樣,首先匯報DID結果 程序【xtreg $ylist t_2012 treatment jh $xlist,re r】 其中,t_2012是上面的政策效果虛擬變量,2012年及以前為0,2012年以后為1 jh為政策效果虛擬變量和實驗效果的交互項。 交互項顯著表示政策效果有效。 ![]() 二、匹配以后的差分 我們采用一對一無放回鄰匹配 程序 【psmatch2 treatment $xlist, neighbor(1) logit ate common out(score) noreplacement】 ![]() 結果會多出來幾個變量,其中比較重要的是生產(chǎn)了新的對照組 ![]() PSM-DID是指基于PSM結果進行的DID。 所以DID的程序是一樣的,只不過變量改變了。 生成新的交互項 gen newjh=_treated*t_2012 再跑一遍DID xtreg $ylist t_2012 _treated newjh $xlist,re r, if _support==1 ![]() 一般而言不會再去匯報普通DID的結果了,直接匯報PSM-DID結果。和剛才的普通DID相比,樣本量顯著的降低了。但是交互項的顯著性還是不變的。 完結撒花??ヽ(°▽°)ノ? 關于PSM-DID我還是一知半解,如果有比較了解的大佬,還望幫忙挑出毛病和指導一下~~參考文獻田利輝,王可第.社會責任信息披露的“掩飾效應”和上市公司崩盤風險——來自中國股票市場的DID-PSM分析[J].管理世界,2017(11):146-157. 李賁,吳利華.開發(fā)區(qū)設立與企業(yè)成長:異質(zhì)性與機制研究[J].中國工業(yè)經(jīng)濟,2018(04):79-97. Lu J. The performance of performance-based contracting in human services: a quasi-experiment[J]. Journal of Public Administration Research and Theory, 2015, 26(2): 277-293. 石大千,丁海,衛(wèi)平,劉建江.智慧城市建設能否降低環(huán)境污染[J].中國工業(yè)經(jīng)濟,2018(06):117-135. Urban C, Niebler S. Dollars on the Sidewalk: Should US Presidential Candidates Advertise in Uncontested States?[J]. American Journal of Political Science, 2014, 58(2): 322-336. 何文盛,姜雅婷,唐序康.行政審批制度改革可以提升地方政府績效嗎?——基于中國15個副省級城市2001—2015年面板數(shù)據(jù)的分析[J].公共行政評論,2019,12(03):118-138+192-193. 徐志剛,寧可,鐘甫寧,紀月清.新農(nóng)保與農(nóng)地轉出:制度性養(yǎng)老能替代土地養(yǎng)老嗎?——基于家庭人口結構和流動性約束的視角[J].管理世界,2018,34(05):86-97+180. ![]() 彩蛋先獲得每年的處理組和對照組樣本,如果使用的是“漸進式”DID 方法,需要將樣本按照進入年份逐年進行匹配。 我前幾天無所事事查文獻的時候,看見了Gary King 18年的這篇《Why Propensity Scores Should Not Be Used for Matching》,還是比較新。雖然看見Gary king我就想起他提出的半監(jiān)督學習的Readme程序bug過多,害我花了很久時間都沒有搞出來(記小本本),但是我還是仔細拜讀了一下??傮w和我們這篇操作是唱反調(diào)的,p-score不適用匹配。 感悟其實剛開始接觸PSM-DID的時候走了很多很多很多很多彎路啊。這篇專欄一度流產(chǎn)。知道論文的ddl來了。。我果然還是ddl驅(qū)動的。 最大的感悟就是,JPART不愧是我最愛的期刊。 真的,管理世界和JPART這兩個期刊對學方法的人來說簡直太友好了,每一個步驟都講得很詳細,AJPS經(jīng)管“數(shù)據(jù)公開”,可是經(jīng)常復制不出來文章中的結果,很多書里面的都是理論,沒有操作細節(jié)。JPART就好圈粉。detailedly&systemly。 尤其是Jiahuan Lu(2015)的這篇文章太令我感動了,比較少人在跑回歸前還檢驗異方差并校正,都是直接用個robust或者普通ols。說好的跑ols要滿足高斯馬爾科夫定理,但是很少人遵守。感動。T^T 我一定要強迫我們南霸天老師也看!?。。?/p> 吃我安利?。。。。。?! ![]() ![]() Angela結尾。 ![]() |
|
來自: 晶晶晶晶323 > 《雙重差分(DID)》