匹配估計的思想:假如你要研究企業(yè)的R&D投入對performance的影響,匹配思想是這樣的:假如有兩家企業(yè),其R&D投入明顯不同判莉,但是其他各方面都高度相同豆挽,例如公司規(guī)模,杠桿率券盅,所屬行業(yè)帮哈,公司治理結(jié)構(gòu)等,那么在其他各方面都高度相同的情況下锰镀,這時就可以把公司performance的差異歸因到R&D投入的差異娘侍。這種找到一個控制組的個體,使得該個體與處理組的個體在除自變量外其他各因素都相似(也就是匹配)泳炉,在通過自變量的差異解釋因變量差異的行為憾筏,就是匹配的思想。
一般來說胡桃,每個樣本有多個屬性踩叭,例如一家公司,屬性有公司規(guī)模翠胰,公司年齡容贝,杠桿率,增長率之景,市場占有率斤富,治理結(jié)構(gòu)相關(guān)變量,行業(yè)等锻狗,這就意味著匹配時要考慮諸多屬性满力,也就是進行高維度匹配。一個比較好的思路是定義高維空間的距離轻纪,然后計算兩個樣本在高維空間的距離油额。
傾向得分的定義是一個個體進入處理組的概率,為什么要引入這個概念刻帚?因為如果針對多個可觀察特征X進行對比匹配非常困難潦嘶,所以,可將多維協(xié)變量X用一個一維變量——傾向得分P(x)來代替崇众,這樣掂僵,研究者就只需要對單一的傾向得分變量進行匹配,從而大大減少了匹配的困難顷歌。這個方法最早由Rosenbaum and Rubin(1983)提出锰蓬。
PSM在stata的實現(xiàn)過程。
首先眯漩,如果自變量是連續(xù)變量芹扭,需要轉(zhuǎn)換為二元離散變量,比如自變量是企業(yè)R&D投入,你需要找到一個臨界值冯勉,把R&D投入分為高R&D投入組和低R&D投入組澈蚌,臨界值包括:平均數(shù),上下三分位數(shù)灼狰,及其他分位數(shù)等宛瞄,沒有明確規(guī)定。在具體做時交胚,可找一篇類似topic的好點的期刊份汗,看看他們是怎么分的,這樣在分組時也有依據(jù)蝴簇。如果自變量本身就是二元離散變量杯活,更簡單,都不用分組了熬词,直接按0-1分組旁钧。在stata上代碼如下
對于離散變量:
gen dv_dum=2 //dv是指變量,dv_dum是指生成自變量的二元變量互拾。
replace dv_dum=0 if dv=0
replace dv_dum=1 if dv=1
如果你的自變量本身就是標為0和1歪今,這一步可以不用,但是如果標為1和2或者其他符號颜矿,一定要轉(zhuǎn)換為0和1.
對于連續(xù)變量:
quantities dv, gen (dv_dum) nq(3)//根據(jù)分位數(shù)產(chǎn)生三個虛擬變量寄猩,也就是決定選擇一個三分位數(shù)(上三分位或者下三分位數(shù))為臨界值。
replace dv_dum=0 if dv_dum==1
replace dv_dum=0 if dv_dum==2
replace dv_dum=1 if dv_dum==3//意思是把自變量從小到大排列骑疆,最大的1/3作為較高的組田篇,標為1,剩余較小的2/3作為較低的組箍铭,標為0.
在這一部完成后泊柬,就可以開始匹配了。
set seed 10101
gen ranorder=runiform()
sort ranorder
psmatch2 dv_dum 匹配變量1 匹配變量2 匹配變量3......诈火, outcome (因變量) 匹配方法? ate ties logit common
對上一條代碼的解釋:
psmatch2是stata里的匹配命令彬呻,如果沒有安裝需要先安裝:ssc install psmatch2;
匹配變量1 匹配變量2 匹配變量3......是指你認為應(yīng)該讓兩者一致的變量,比如柄瑰,你要研究R&D對performance的影響,你就要想想應(yīng)該讓這兩家公司的哪些特征一致然后再來比較兩家公司R&D對performance的影響剪况。這里的匹配變量可以是控制變量教沾,也可以不僅僅是控制變量,看你能想到什么特征译断,能得到什么數(shù)據(jù)授翻。具體在選擇匹配變量時,還是要看看類似topic的好點的期刊怎么選的。
匹配方法:陳強書上介紹了8種方法堪唐,你可以每一種都試試巡语,一般來說集中方法匹配的最終結(jié)果差異不大。
ate:同時匯報ATE淮菠,ATU與ATT的結(jié)果
ties :包括所有傾向得分相同的個體
logit: 這次匹配用到的回歸方法是logit回歸男公。
common:僅對共同取值范圍內(nèi)的個體匹配,默認對所有個體進行匹配合陵。
對匹配結(jié)果的解讀枢赔,以陳強書為例:
這是陳強書548頁的一個匹配結(jié)果,這張表關(guān)注的點不是上面變量的系數(shù)符號與顯著性拥知,關(guān)注的是ATT的difference值及其T值(實際上這個T值也可不關(guān)注)踏拜。ATT是個體在干預狀態(tài)下的平均干預效應(yīng),也就是在控制其他匹配變量不變的情況下低剔,自變量從0變?yōu)?速梗,因變量的變化。
這里ATT的difference是1.41襟齿,意思是在其他匹配變量一致的情況下姻锁,自變量是1與自變量是0導致的因變量的差異是1.41個單位,這就是我們要求的系數(shù)蕊唐。接下來根據(jù)T值確定p值屋摔,這里的T值就是個T檢驗,T值1.96對應(yīng)的p值是0.05替梨,一半要求大于1.96钓试,具體可查看T檢驗統(tǒng)計表。不過Note提示了副瀑,這個表格的標準誤差有兩個問題弓熏,就是沒有考慮傾向得分為估計所得的事實,即假設(shè)傾向得分為真實值糠睡,然后求標準誤挽鞠,并且該標準誤假設(shè)同方差,也可能不成立狈孔。為此信认,考慮使用自助法求標準誤,盡管自助標準誤差也未必正確均抽。
set seed 10101
bootstrap r(att) r(atu) r(ate), reps(500): psmatch2? dv_dum controls , outcome (Y) ties ate logit common
p值求出來了嫁赏,大于0.1,不顯著油挥。這不能說明PSM得到了一個不顯著的結(jié)果潦蝇。剛才用的匹配法是一對一匹配款熬,一般來說要把幾種常見匹配都試試。陳強書中就把8種匹配法都試了攘乒,其中有幾種得到了顯著的結(jié)果贤牛。例如用核匹配得到的結(jié)果,T值大于1.96则酝,不過這里也應(yīng)該用自助法求出控制異方差的p值殉簸。
用PSM求系數(shù)的步驟已經(jīng)完成了,還有一步是檢驗匹配結(jié)果是否平衡堤魁。
pstest Y 匹配變量1 匹配變量2 匹配變量3......, both
還是以陳強書為例喂链,這張表格,要得到的結(jié)果是每個匹配變量在匹配后妥泉,各匹配變量的均值不存在顯著差異椭微,其標準化誤差小于10%,以age為例盲链,5.6就是匹配后樣本組與控制組的age的標準化差異蝇率,小于10%。只有一個變量u74的標準化誤差大于10% 刽沾,但是也不大很多本慕,并且只有一個變量,因此這個匹配的平衡性可以接受侧漓。平衡性檢驗了可以在匹配前進行锅尘,也可以在匹配后進行,只要檢驗結(jié)果可接受布蔗。
PSM的過程在這里就可以結(jié)束了藤违,不過有的文章還會用匹配后的數(shù)據(jù)做個回歸,你主分析用的什么回歸纵揍,這里就用什么回歸顿乒,只不過樣本變了。
匹配后的多元回歸泽谨,首先要把不參與匹配的樣本刪除璧榄,代碼:
drop if _weight==.? //_weight是指樣本是否參與了匹配,參與了則標為數(shù)字吧雹,沒參與則標為點.,因此這一步是把沒參與匹配的樣本去掉骨杂。
xtset firm year
xtreg Y dv_dum controls, fe r
PSM的使用有一些條件:
1.樣本量盡量大,如果樣本太小雄卷,會導致處理組許多樣本在控制組中找不到能匹配的樣本腊脱,或者能匹配,但是距離很遠龙亲,也就是控制組的這個樣本與處理組的這個樣本相對是最匹配的陕凹,但是絕對匹配度依然不高。
2.處理組與控制組的傾向得分有較大共同取值范圍鳄炉,否則會丟失較多樣本杜耙,導致匹配的樣本不具備代表性。
需要注意的是拂盯,PSM 只能緩解由可觀測變量帶來的內(nèi)生性問題佑女,無法處理最為關(guān)鍵的由不可觀測變量帶來的內(nèi)生性問題。以上面的例子為例谈竿,如果影響企業(yè)是否披露R&D投資的因素是不可觀測的团驱,那么PSM就不適用了。
參考文獻:
Hamilton, B. H., & Nickerson, J. A. (2003). Correcting for endogeneity in strategic management research.Strategic Organization,1(1), 51-78.
Rosenbaum, P. R., & Rubin, D. B. (1983). The central role of the propensity score in observational studies for causal effects.Biometrika,70(1), 41-55.
PSM原理復習
首先來溫習下“傾向值匹配”在說些什么空凸?
使用匹配估計量的條件:假設(shè)個體根據(jù)可觀測變量來選擇是否可參與項目
以一個就業(yè)培訓項目為例嚎花,在對項目進行效應(yīng)評估時,我們除了能觀測到人們是否參與了該項目Di和項目實施前后的收入Yi呀洲,還可以觀測到參與者一些個體特征紊选,比如年齡、受教育程度道逗、膚色兵罢、性別等等協(xié)變量。
如果個體是否參與項目完全是由某些協(xié)變量X決定的滓窍,那么我們就可以使用匹配估計方法來估計處理效應(yīng)卖词。
匹配估計的思想簡單易懂:實踐中,個體i參與了培訓(處理組)吏夯,這人就不可能再穿越回去選擇不參加培訓此蜈。此時,我們就需要在沒有參加培訓的人中(控制組)找到某個或某些人j锦亦,如何找到這些人呢舶替?
前面說,參與項目Di完全取決于可觀測變量Xi杠园,那么自然就是找那些與參與者i有相近X的未參與人j顾瞪。我們選擇到的Xj與Xi越接近,j參與培訓的概率就越接近i抛蚁。那么陈醒,我們就可以把j的收入Yj近似當作i在沒有參與培訓情形下的收入,然后將i的實際收入Yi減去近似收入Yj瞧甩,得到培訓的處理效應(yīng)钉跷,即匹配估計量。
匹配估計
技術(shù)細節(jié)
一般來說肚逸,匹配估計量會存在偏出爷辙,因為Xi不可能和Xj完全相同彬坏。那么在非精確匹配的情形下:
一對一匹配,偏差較大膝晾,方差較小
一對多匹配栓始,偏差較小,方差加大
經(jīng)驗法則:最好進行一堆四匹配血当,這樣能使均方誤差MSE最小幻赚。
實踐
PSM的思想即,將多個X轉(zhuǎn)換成一個指標臊旭,即通過某種函數(shù)f(X)落恼,把多維變量變成一維變量。這個一維變量就是傾向得分离熏。然后佳谦,我們就可以根據(jù)這個傾向得分進行上述匹配。
PSM計算處理效應(yīng)的步驟
選擇協(xié)變量X撤奸。盡量將影響D和Y的相關(guān)變量都包括在協(xié)變量中吠昭。如果協(xié)變量選擇不當或太少,就會引起效應(yīng)估計偏誤胧瓜;
計算傾向得分矢棚,一般用logit回歸;
進行傾向得分匹配府喳。如果傾向得分估計較為精確蒲肋,那么,X在匹配后的處理組和控制組之間均勻分布钝满,這就是數(shù)據(jù)平衡兜粘。那么我們檢驗得分是否準確就需要計算X中每個分量的“標準化偏差”。經(jīng)驗法則:一般來說弯蚜,標準化偏差不能超過10%孔轴,如果超過10%,就需要返回第2步重新計算碎捺,甚至第1步重新選擇匹配協(xié)變量路鹰,或者改變匹配方法。
根據(jù)匹配后的樣本計算處理效應(yīng)
在第三部中收厨,得分匹配效果不好晋柱,可能要改變匹配方法
k鄰近匹配
卡尺匹配或半徑匹配
卡尺內(nèi)最近鄰匹配
核匹配
局部線性回歸匹配
樣條匹配
在實踐中,并沒有明確的規(guī)則來限定使用哪種匹配方法诵叁,但有一些經(jīng)驗法則可以來參考:
如果控制個體不多雁竞,應(yīng)選擇又放回匹配
如果控制組有較多個體,應(yīng)選擇核匹配
最常用的方法:嘗試不同的匹配方法拧额,然后比較它們的結(jié)果碑诉,結(jié)果相似說明很穩(wěn)健彪腔。結(jié)果差異較大,就要深挖其中的原因联贩。
但PSM也有局限性:
大樣本
要求處理組和控制組有較大的共同取值范圍
只控制了可觀測的變量漫仆,如果存在不可觀測的協(xié)變量,就會引起“隱性偏差”
PSM實操stata命令
數(shù)據(jù)準備
*使用美國國家調(diào)查數(shù)據(jù)
webuse nlswork
*設(shè)置面板
xtset idcode year
*面板數(shù)據(jù)描述
xtdes
*生成平方項
gen age2 = age^2
gen ttl_exp2 = ttl_exp^2
gen tenure2 = tenure^2
*定義全局變量
global xlist "grade age age2 ttl_exp ttl_exp2 tenure tenure2 not_smsa south race"
*描述性統(tǒng)計
sum ln_wage $xlist
1
*定義種子
set seed 0001
*生成隨機數(shù)
gen tmp = runiform()
*將數(shù)據(jù)庫隨機整理
sort tmp
傾向值匹配
*設(shè)置idcode大于2000的地方執(zhí)行政策
gen treated = (idcode > 2000) &! missing(idcode)
首次使用需要安裝外部命令*
ssc install psmatch2,replace
*使用二值選擇模型 logit 回歸估計傾向值泪幌,并基于近鄰匹配(默認 K=1)實現(xiàn)一對一匹配;
*其它匹配方法署照,例如半徑匹配祸泪、核匹配、樣條匹配等建芙,選項格式見psmatch2 命令的幫助文檔
psmatch2 treated $xlist,out(ln_wage) logit ate neighbor(1) common caliper(.05) ties
Logit回歸結(jié)果
模型擬合結(jié)果没隘,此處無太多實際意義。
ATT估計值
ATT估計值
觀測值是否在共同取值范圍中
試驗組可匹配的觀測概覽禁荸,按照命令中設(shè)定的匹配規(guī)則右蒲,試驗組有22組未能匹配到合適對照。
*檢驗協(xié)變量在處理組與控制組之間是否平衡
pstest $xlist, both graph
gen common = _support
2
均衡性檢驗結(jié)果
3
4
pstest, both做匹配后均衡性檢驗赶熟,理論上說此處只能對連續(xù)變量做均衡性檢驗瑰妄,對分類變量的均衡性檢驗應(yīng)該重新整理數(shù)據(jù)后運用χ2檢驗或者秩和檢驗。但此處對于分類變量也有一定的參考價值映砖。
*去掉不滿足共同區(qū)域假定的觀測值
drop if common == 0
*繪圖顯示傾向值的共同取值范圍
psgraph
psgraph對匹配的結(jié)果進行圖示间坐。
5
匹配結(jié)果的圖示化
關(guān)于PSM語法命令
以下是幫助菜單的中psmatch2語法格式:
psmatch2 depvar [indepvars] [if exp] [in range] [, outcome(varlist) pscore(varname) neighbor(integer) radius caliper(real) mahalanobis(varlist) ai(integer) population altvariance kernel llr kerneltype(type) bwidth(real) spline nknots(integer) common trim(real) noreplacement descending odds index logit ties quietly w(matrix) ate]
簡單說就是:psmatch2 因變量 協(xié)變量,[選擇項]邑退。
以文中為例:
psmatch2 treated $xlist,out(ln_wage) logit ate neighbor(1) common caliper(.05) ties
重點解讀命令語句中選擇項的含義竹宋。本例中選擇“nearest neighbor matching within caliper”匹配方法。
out(ln_wage)指明結(jié)局變量
logit指定使用logit模型進行擬合地技,默認的是probit模型
neighbor(1)指定按照1:1進行匹配蜈七,如果要按照1:3進行匹配,則設(shè)定為neighbor(3)
common強制排除試驗組中傾向值大于對照組最大傾向值或低于對照組最小傾向值
caliper(.05)試驗組與匹配對照所允許的最大距離為0.05
ties強制當試驗組觀測有不止一個最優(yōu)匹配時同時記錄
ate 求平均處理效應(yīng)即求ATT估計值
作者:凡有言說
鏈接:http://www.reibang.com/p/216c0beb6fb0
來源:簡書
著作權(quán)歸作者所有莫矗。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)飒硅,非商業(yè)轉(zhuǎn)載請注明出處。
PSM-DID在Stata中的實現(xiàn)過程代碼
webuse nlswork //使用系統(tǒng)自帶數(shù)據(jù)庫
xtset idcode year, delta(1)? //設(shè)置面板
xtdescribe? //描述一下這個面板數(shù)據(jù)情況
gen age2= age^2
gen ttl_exp2=ttl_exp^2
gen tenure2=tenure^2
global xlist "grade age age2 ttl_exp ttl_exp2 tenure tenure2 not_smsa south race"
sum ln_w $xlist? //統(tǒng)計描述相關(guān)變量
——————————————————————
**DID方法
gen time = (year >= 77) & !missing(year)? //政策執(zhí)行時間為1977年
gen treated = (idcode >2000)&!missing(idcode) //政策執(zhí)行地方為idcode大于2000的地方
gen did = time*treated? //這就是需要估計的DID趣苏,也就所交叉項
reg ln_w did time treated $xlist //這就是一個OLS回歸狡相,也可以用diff命令
xtreg ln_w did time treated $xlist i.year, fe //也可以這去做,會省略掉一個虛擬變量
——————————————————————
**PSM-DID方法
** PSM的部分
set seed 0001 //定義種子
gen tmp = runiform() //生成隨機數(shù)
sort tmp //把數(shù)據(jù)庫隨機整理
psmatch2 treated $xlist, out(ln_w) logit ate neighbor(1) common caliper(.05) ties //通過近鄰匹配食磕,這里可以要outcome尽棕,也可以不要它
pstest $xlist, both graph? //檢驗協(xié)變量在處理組與控制組之間是否平衡
gen common=_support
drop if common == 0? //去掉不滿足共同區(qū)域假定的觀測值
*drop _weight ==0? //也有情況是把沒有匹配的直接刪除
**DID的部分,根據(jù)上面匹配好的數(shù)據(jù)
reg ln_w did time treated $xlist
xtreg ln_w did time treated $xlist i.year, fe
**PSM-DID部分結(jié)束--------------------------------------
————————————————————
**DID方法需要滿足的五個條件檢驗
**1.共同趨勢假設(shè)檢驗
tab year, gen(yrdum) //產(chǎn)生year dummy彬伦,即每一年一個dummy變量
forval v=1/7
//這個相當于產(chǎn)生了政策實行前的那些年份與處理虛擬變量的交互項
xtreg ln_w did treated*? i.year ,fe? //這個沒有加控制變量
xtreg ln_w did treated* $xlist i.year ,fe //如果did依然顯著滔悉,且treated*這些政策施行前年份交互項并不顯著伊诵,那就好
xtreg ln_w did treated* $xlist i.year if union!=1 ,fe //我們認為工會會影響這個處理組和控制組的共同趨勢,因此我們看看union=0的情形
**2.政策干預時間的隨機性
gen time1 = (year >= 75) & !missing(year)? //政策執(zhí)行時間提前到1975年
gen treated1= (idcode >2000)&!missing(idcode) //政策執(zhí)行地方為idcode大于2000的地方
gen did1 = time1*treated1? //這就是需要估計的DID回官,也就所交叉項
gen time2 = (year >= 76) & !missing(year)? //政策執(zhí)行時間提前到1976年
gen treated2= (idcode >2000)&!missing(idcode) //政策執(zhí)行地方為idcode大于2000的地方
gen did2 = time2*treated2? //這就是需要估計的DID曹宴,也就所交叉項
xtreg ln_w did1 $xlist i.year,fe
xtreg ln_w did2 $xlist i.year,fe //看看這兩式子里did1和did2顯著不
**3.控制組將不受到政策的影響
gen time = (year >= 77) & !missing(year)
gen treated3= (idcode1000)&!missing(idcode) //我們考慮一個并沒有受政策影響地方假設(shè)其受到政策影響
gen did3 = time*treated3
xtreg ln_w did3 $xlist i.year,fe //最好的情況是did3不顯著,證明控制組不受政策影響
**4.政策實施的唯一性歉提,至少證明這個政策才是主要影響因素
gen time = (year >= 77) & !missing(year)
gen treated4= (idcode2300)&!missing(idcode) //我們尋找某些受到其他政策影響的地方
gen did4 = time*treated4
xtreg ln_w did4 $xlist i.year,fe //did4可能依然顯著笛坦,但是系數(shù)變小,證明還受到其他政策影響
**5.控制組和政策影響組的分組是隨機的
xi:xtivreg2 ln_w (did=hours tenure) $xlist i.year,fe first
//用工具變量來替代政策變量苔巨,解決因為分組非隨機導致的內(nèi)生性問題
—————————————————————
**附加的版扩,一般而言,我們需要看看這個政策的動態(tài)影響
forval v=8/15
//注意侄泽,這里yrdum8就相當于year=78
reg? ln_w treated*
xtreg? ln_w treated*, fe
xtreg ln_w treated* i.year,fe
xtreg ln_w treated* $xlist i.year,fe? //一般而言上面這些式子里的treated*應(yīng)該至少部分顯著
來源:微信公眾號計量經(jīng)濟圈礁芦,版權(quán)歸作者所有
發(fā)表于:?2018-11-21
原文鏈接:https://kuaibao.qq.com/s/20181121B0DH8R00?refer=cp_1026
騰訊「云+社區(qū)」是騰訊內(nèi)容開放平臺帳號(企鵝號)傳播渠道之一,根據(jù)《騰訊內(nèi)容開放平臺服務(wù)協(xié)議》轉(zhuǎn)載發(fā)布內(nèi)容悼尾。
如有侵權(quán)柿扣,請聯(lián)系 yunjia_community@tencent.com 刪除。